【发布时间】:2014-01-28 06:00:21
【问题描述】:
我正在尝试使用 powershell 来评估某些 WMI 命令的输出。我见过的所有示例都执行类似 $objWMI.Version 的操作来获取实际设置,但我似乎无法让它发挥作用。
示例: $test = "get-wmiobject -namespace root\webadministration -class directorybrowsesection | 选择启用 | 格式列表"
我想根据返回的是真还是假来做一些事情
我尝试过以下方法: if ($test -eq "False") if ($test.Enabled -eq "False") if ($test -match "False")
作为参考,运行 WMI 命令本身会返回: 启用:假
运行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 –
【问题讨论】:
-
你为什么期望它返回一个布尔值?
-
运行 WMI 命令本身返回:已启用:假我想采用“已启用:假”,并根据它是假还是真做其他事情。
-
尝试将您的 cmdlet 传送到
| Get-Member以获取有关您正在处理的对象类型和属性的更多信息。此外,您可以使用 $true 和 $false 代替“True”和“False”。您可能会惊讶地发现[bool]"False"输出 True,因为您没有识别 false,而是一个非零长度的字符串值。 -
感谢 Get-Member,不知道这一点,它帮助我理解了一些事情。使用 $test -eq $false 时我仍然遇到同样的问题。该命令正在查看 IIS 中的设置,所以我认为这是一个字符串输出,这就是我之前执行“false”的原因。
-
没问题。我们也许可以提供更多帮助,尝试使用 Get-Member 粘贴该行并输出到您的帖子中。如果有帮助,您可能也不需要
format-list,这可能会使事情复杂化。
标签: powershell