我需要检查是否安装了软件列表。我不想要计算机上安装的所有软件的列表,而是我想要一个只有特定软件的列表,如果它已安装或不安装。如果没有安装该软件,则需要安装它。
这就是我所做的,谁能告诉我如何继续?
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Export-Csv C:"path"
此代码显示计算机上安装的整个软件列表。我如何自定义它以仅显示我想要的软件,如果我发现它没有安装,我该如何安装软件?
答案 0 :(得分:0)
您可以编写一个参数化脚本,允许您过滤特定条目的注册表值。当然,您的脚本还需要知道要为哪个过滤器字符串调用哪个安装程序。
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$Filter
)
$key = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
$installers = @{
'foo' = '\\server\share\some_installer.exe'
'bar' = '\\server\share\other_installer.msi'
}
$software = Get-ItemProperty "$key\*" |
Where-Object { $_.DisplayName -like "*$Filter*" }
if (-not $software) {
$installers.Keys | Where-Object {
$_ -like "*$Filter*"
} | ForEach-Object {
& $installers[$_]
}
}
请注意,除非您只想检查32位程序,否则还需要处理64位卸载密钥(也可能是用户密钥)。