如何检查程序是否已安装并安装(如果不是)?

时间:2015-07-29 23:10:25

标签: powershell if-statement installation powershell-v4.0

由于完整性检查,我宁愿不使用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以外的其他内容。

1 个答案:

答案 0 :(得分:22)

PropertyChangeListener