如何查找给定软件是否已安装,如果未安装如何使用 PowerShell 安装它?
How to find if a given software is installed or not, and if not installed how to install it using PowerShell?
我需要检查是否安装了软件列表。我不想要计算机上安装的所有软件的列表,相反,我只想要一个特定软件的列表,以及是否安装了它。如果没有安装该软件,则需要安装它。
这就是我所做的,谁能告诉我如何进行?
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Export-Csv C:"path"
此代码显示计算机上安装的软件的完整列表。如何自定义它以仅显示我想要的软件,如果我发现没有安装软件,该如何安装?
您可以编写一个参数化脚本,允许您过滤特定条目的注册表值。当然,您的脚本还需要知道为哪个过滤器字符串调用哪个安装程序。
[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 位卸载密钥(也许还有用户密钥)。
我需要检查是否安装了软件列表。我不想要计算机上安装的所有软件的列表,相反,我只想要一个特定软件的列表,以及是否安装了它。如果没有安装该软件,则需要安装它。
这就是我所做的,谁能告诉我如何进行?
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Export-Csv C:"path"
此代码显示计算机上安装的软件的完整列表。如何自定义它以仅显示我想要的软件,如果我发现没有安装软件,该如何安装?
您可以编写一个参数化脚本,允许您过滤特定条目的注册表值。当然,您的脚本还需要知道为哪个过滤器字符串调用哪个安装程序。
[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 位卸载密钥(也许还有用户密钥)。