「Hey Scripting Guy」linkを確認してください。このリンクは、レジストリを介してインストールされたアプリケーションを照会する方法について説明しています。 linkから
:
Win32_Productの:続・夕陽のガンマン [良い] Win32_ProductのWMIクラスは、Windowsインストーラによってそれらがインストールされているなどの製品を>表します。
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
希望に役立ちます。
あなたが投稿したコードは、どのようにあなたが期待していることをしていませんか? – arco444
インストールされているすべてのmsiを確認/修復する 'Win32_Product'呼び出しには注意してください。だから、それは遅く、プロセス集中的です。 – BenH
他の代替案を提案してください。 – NJones