【问题标题】:Evaluating WMI output评估 WMI 输出
【发布时间】: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


【解决方案1】:

假设你确实有一个 bool 可以使用,试试这个:

if ($myBool -eq $false)
{
  # Do Stuff
}

字符串“False”实际上不是假的。实际上,当直接将其转换为布尔值时,它会返回 true,因为 .NET 中的“true”字符串值被定义为长度非零的字符串:

PS C:\> [bool]"False"
True
PS C:\> [bool]""
False

这是一个 previous answer to a related problem,以及一些关于 powershell 中布尔值的扩展说明。

【讨论】:

  • 试过了,还是不行 $test -eq $false.该命令正在查看 IIS 中的设置,所以我认为这是一个字符串输出,这就是我之前执行“false”的原因。
【解决方案2】:

您可以尝试将对象转换为数组并在那里评估它们:

$test = (get-wmiobject -namespace root\webadministration -class directorybrowsesection | 选择启用、property1、property2 等) foreach ($test 中的 $item) if ($item.enabled -eq $false) { # 做东西 } 别的 { # 做一些不同的事情 }

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2015-01-18
    • 2018-04-07
    • 2017-05-19
    • 2016-11-04
    相关资源
    最近更新 更多