我正在尝试检查本地用户帐户是否已禁用或已启用,并执行以下操作:如果已启用,请告诉我“帐户已启用,无需执行任何操作”
如果帐户已禁用,请告诉我,帐户已禁用,正在启用...已启用帐户
无论帐户是禁用还是启用,我得到的总是第一个输出:
#Checks local user if its disabled to enable it
$isEnabled = $True
$Account = 'local_account'
try {
$isEnabled = (Get-LocalUser $Account -ErrorAction Stop).Disabled
Write-output "local_account account is already enabled"
}
catch {
$isEnabled = $False
write-output "local_account account is disabled, enabling..."
Enable-LocalUser $Account
2条答案
按热度按时间7d7tgy0s1#
这些对象上没有
.Disabled
属性,您需要检查.Enabled
。您还缺少if
statement。vsaztqbk2#
请参阅下面重写的脚本
*主要原因
.Disabled
不是Get-LocalUser
的属性,请改用.Enabled
}
$isEnabled
变量已被删除,因为脚本中未使用它。$Account
变量调用Get-LocalUser
cmdlet。这是一种最佳做法,因为它更加清晰和简洁。$isEnabled
变量设置为True或False。这是检查帐户状态的一种更简洁的方法。Write-Output
cmdlet代替write-output
。这是最佳做法,因为它与PowerShell的命名约定更一致。Write-Error
cmdlet用于显示错误。这是一种最佳做法,因为它以一种易于识别错误源的方式格式化错误消息。