III*_*III 2 powershell conditional
任何人都可以告诉我为什么我总是得到相同的输出结果?
$syslocal = Get-WmiObject -Class Win32_UserAccount -Filter "localaccount=true" |
where {$_.Disabled -eq $False}
if ($syslocal -eq "") {
Write-Host "Syslocal Enabled"
exit 0
} else {
Write-Host "No Syslocal"
exit 0
}
Run Code Online (Sandbox Code Playgroud)
它只需要查看帐户syslocal是否存在以及是否启用了3个结果:
但所有结果都是一样的.
如果您的Get-WmiObject | Where-Object语句找到匹配项,则该变量$syslocal将包含WMI对象列表.如果语句未找到匹配项(即不存在本地帐户或禁用所有帐户),则该变量将为空.空值和对象数组都不等于空字符串,因此您的检查将始终评估为$false.
此外,对于3方式检查,您需要实际检查3种方式.
将您的代码更改为类似的内容,它应该按照您的期望进行.
$syslocal = Get-WmiObject -Class Win32_UserAccount -Filter 'localaccount=true'
if ($syslocal) {
if ($syslocal | Where-Object {-not $_.Disabled}) {
Write-Host 'Enabled local accounts exist.'
exit 1010
} else {
Write-Host 'Local accounts exist, but are disabled.'
}
} else {
Write-Host 'No local accounts.'
}
exit 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |