我需要从中获取特定软件包的UninstallString
Windows注册表。不幸的是,有许多不同的版本
安装的包,所以我需要按包名查询它。我找到了
有关如何执行此操作的示例here和here。我写了一个测试脚本
验证我正在抓取正确的应用程序。这个测试脚本
应将应用程序的显示名称写入控制台。然而,
而是写一个空白行。当我尝试时,我得到了相同的结果
将UninstallString
写入控制台。
$PATHS = @("HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
$SOFTWARE = "SOFTWARE_NAME"
ForEach ($path in $PATHS) {
$installed = Get-ChildItem -Path $path |
ForEach { Get-ItemProperty $_.PSPath } |
Where-Object { $_.DisplayName -match $SOFTWARE } |
Select-Object -Property DisplayName,DisplayVersion,UninstallString
ForEach ($app in $installed) {
Write-Output "${app.DisplayName}"
}
}
答案 0 :(得分:1)
替换此
Write-Output "${app.DisplayName}"
用这个
Write-Output "$($app.DisplayName)"