【发布时间】:2015-10-21 03:45:06
【问题描述】:
由于完整性检查,我宁愿不使用 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.
【问题讨论】:
-
你看过 Chocolatey chocolatey.org 吗?包装很容易制作,所有繁重的工作都为您完成。
标签: powershell if-statement installation powershell-4.0