我正在尝试使用powershell来评估某些WMI命令的输出。我见过的所有例子都像$ objWMI.Version那样得到实际的设置,但我似乎无法让它工作。
实施例: $ test =“get-wmiobject -namespace root \ webadministration -class directorybrowsesection | select Enabled | format-list”
我想做点什么,取决于它是返回true还是false
我尝试过这样的事情: if($ test -eq“False”) if($ test.Enabled -eq“False”) if($ test -match“False”)
对于运行参考,WMI命令本身返回: 启用:False
运行Get-Member
会输出以下内容:
get-wmiobject -namespace root\webadministration -class directorybrowsesection | select Enabled
TypeName: Selected.System.Management.ManagementObj
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object ob
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Enabled NoteProperty System.Boolean Enabled=False –
答案 0 :(得分:0)
假设你有一个bool可以使用,请尝试这样做:
if ($myBool -eq $false)
{
# Do Stuff
}
字符串“False”实际上并不是假的。实际上,当将它直接转换为bool时,它返回true,因为.NET中的“true”字符串值被定义为非零长度字符串:
PS C:\> [bool]"False"
True
PS C:\> [bool]""
False
这是一个previous answer to a related problem,以及对powershell中bool的一些详细阐述。
答案 1 :(得分:0)
您可以尝试将对象转换为数组并在那里进行评估:
$test = (get-wmiobject -namespace root\webadministration -class directorybrowsesection | select enabled, property1, property2, etc) foreach ($item in $test) if ($item.enabled -eq $false) { # do stuff } else { # do something different }