由于完整性检查,我宁愿不使用WMI。
这就是我所做的不起作用:
$tempdir = Get-Location
$tempdir = $tempdir.tostring()
$reg32 = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"
$reg64 = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
if((Get-ItemProperty $reg32 | Select-Object DisplayName | Where-Object { $_.DisplayName -Like '*Microsoft Interop Forms*' } -eq $null) -Or (Get-ItemProperty $reg64 | Select-Object DisplayName | Where-Object { $_.DisplayName -Like '*Microsoft Interop Forms*' } -eq $null))
{
(Start-Process -FilePath $tempdir"\microsoft.interopformsredist.msi" -ArgumentList "-qb" -Wait -Passthru).ExitCode
}
它总是返回false。如果我将它切换到-ne $null
它总是返回true,所以我知道它正在检测$null
输出,即使我相信(但可能是错误的),Get-ItemProperty
返回的结果应该是计算为$null
以外的其他内容。
答案 0 :(得分:22)
PropertyChangeListener