如何查找是否安装了给定的软件,如果没有安装如何使用PowerShell安装它?

时间:2017-03-14 15:04:44

标签: powershell powershell-v4.0

我需要检查是否安装了软件列表。我不想要计算机上安装的所有软件的列表,而是我想要一个只有特定软件的列表,如果它已安装或不安装。如果没有安装该软件,则需要安装它。

这就是我所做的,谁能告诉我如何继续?

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
    Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
    Export-Csv C:"path"

此代码显示计算机上安装的整个软件列表。我如何自定义它以仅显示我想要的软件,如果我发现它没有安装,我该如何安装软件?

1 个答案:

答案 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位卸载密钥(也可能是用户密钥)。