评估WMI输出

时间:2014-01-27 21:26:17

标签: powershell

我正在尝试使用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 –

2 个答案:

答案 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
    }