如何查找给定软件是否已安装,如果未安装如何使用 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 位卸载密钥(也许还有用户密钥)。