提取有关 WMI 查询的一些信息并返回此信息



我正在收集有关WMI查询的信息。我将此信息保存在变量中。当我在控制台中编写此变量时,它向我显示以下内容:

@{PasswordState=7}

但是,当我做一个"If"并检查变量是否包含数字 7 时,它会告诉我不包含:

If($PasswordState -contains "7")
{
    Write-Host Contain 7
}
Else
{
    Write-Host Not contain 7
}

谁能帮我获取WMI查询的值作为INT?我的意思是,我只需要PasswordState在类Lenovo_BiosPasswordSettings中的数字状态。似乎 WMI 正在返回一个对象,而我的变量没有很好地处理此返回。谢谢

$PasswordState = Get-WmiObject -Class Lenovo_BiosPasswordSettings -namespace rootwmi | Select PasswordState
Write-Host $PasswordState

If($PasswordState -contains "7")
{
Write-Host Contain 7
}
Else
{
Write-Host Not contain 7
}

我预计输出@{PasswordState=7}只有 7。

您的输出被格式化为散列键=值对,并且您只需要值。可以使用 -ExpandProperty 参数将值分配给$PasswordState...

$PasswordState = Get-WmiObject -Class Lenovo_BiosPasswordSettings -namespace rootwmi | Select-Object -ExpandProperty PasswordState
If ($PasswordState -contains "7") {
    Write-Host "Contain 7"
}
Else {
    Write-Host "Not contain 7"
}

你绝对应该研究和使用最适合你的方案的评估运算符。 -包含可能不是它。

最新更新