如何检查应用程序是否安装在多个服务器上 - powershell

时间:2017-02-16 15:27:51

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

{{1}}

有一个应用程序abc,我想知道它是否安装在多个服务器上。

1 个答案:

答案 0 :(得分:0)

检查此“嗨脚本专家”link。此链接描述了如何通过注册表查询已安装的应用程序。

来自link

  

Win32_Product:好,坏,丑   [Good] Win32_Product WMI类代表Windows Installer安装的产品。

     

如果您选择使用Get-WmiObject查询Win32_Product类,您会发现>您自己[错]等待您的查询(或应用程序)返回[丑陋]对已安装为的软件包的一致性检查它会尝试验证并修复安装。 (有关详细信息,请参阅事件日志消息,指示> Windows Installer重新配置了所有已安装的应用程序)。   ...

根据以上链接,您可以通过以下方式查询已安装的产品:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

此外,您可以使用Test-Path检查是否存在请求的注册表项。例如:

if (test-path HKLM:\Software\abc) { write-host "Found" } else { Write-Host "Not found" }

检查多台服务器上安装的软件:

$servers = Get-Content C:\xyz\servers.txt
$results = @()
foreach ($server in $servers) {
   $session = New-PSSession -ComputerName $server -Credential (Get-Credential)
   $results += Invoke-Command -Session $session -ScriptBlock {
      test-path HKLM:\Software\abc
   }
} 

$results.GetType() # Dump type
$results | gm # Dump properties

$results | Format-Table

希望有所帮助。