我正在收集有关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"
}
你绝对应该研究和使用最适合你的方案的评估运算符。 -包含可能不是它。