インストールされているソフトウェアのバージョンをすばやく確認する方法
特定のソフトウェアがインストールされているかどうか、およびそのバー ソフトウェアが最新かどうか、またはGPO展開されたソフトウェアが特定のユーザー用にインストールされているかどうかを確認することができます。 PowerShellでそれを確認するために使用できるいくつかの方法を紹介します。
クイックナビゲーション:
- インストールされているソフトウェアリストをローカルでチェック
- Get-WmiObject
- レジストリクエリ
- イベントログ
- インストールされているソフトウェアリストをリモートで確認する
- Get-WmiObject
- レジストリクエリ
- イベントログ
- GPO展開されたソフトウェアが正常に適用されたかどうかを確認する
コンピュータにインストールされているものを確認する
インストールされているソフト あなたも試してみて、それを起動し、手動でそのバージョン番号を検索するために、スタートメニューでアプリを見つけることができます。 しかし、これらの方法の問題は、可能な限り「迅速かつ自動」から遠く離れていることです。 PowerShellを使用してインストールされているソフトウェアのバージョンを確認すると、必要なデータをより迅速に収集できます。
Get-WmiObjectを使用してインストールされているソフトウェアリストを取得
firstmethodは、単純なクエリを貼り付けるのと同じくらい簡単です:
Get-WmiObject -Class Win32_Product
また、データを簡単にフィルタリングして、単一のベンダーの特定のアプリケーションとそのバージョンを検索することもできます。:
Get-WmiObject -Class Win32_Product | where vendor -eq CodeTwo | select Name, Version
非常に簡単にDespitebeing、この方法は、主要な欠点を持っています–それはかなりの時間がかかります結果を返します。
インストールされたソフトウェアのクエリレジストリ
インストールされたソフトウェアのリストを取得する別の方法は、レジストリを照会しています。 以下の短いスクリプトは、アプリケーションのリストとそのバージョンを返します:
$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}
さて、上で太字にしたHKLM要素を見てみましょう。 これは、スクリプトによって返されるソフトウェアのリストが、LM–localmachineにインストールされているすべてのソフトウェアであることを意味します。 ただし、アプリケーションはユーザーごとにインストールすることもできます。 現在ログインしているユーザーのアプリケーションの一覧を返すには、HKLMをHKCUに変更します(CUは”現在のユーザー”の略です”):
$InstalledSoftware = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}
イベントログから最近インストールされたソフトウェアの一覧を取得する
最近インストールされたソフトウェアのみを確認する場合は、次のcmdletを使用してイベントログを検索することができます。
Get-WinEvent -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
デフォルトでは、イベントログが最も古いレコードを上書きするように設定されているため、インストールされたソフトウェアを見つけるこの方法は、最近追
PowerShellを使用してWindowsイベントログとフィルタリング結果を確認する方法の詳細
installedsoftwareのリストをリモートで取得
上記の各方法を使用して、同じネットワー ネットワーク内のすべてのコンピュータ名のリストを作成する場合は、Foreachループ内で以下の方法を使用して、複数のリモートPCから結果を返すことができま各スクリプトの
pc pcnameは、インストールされているソフトウェアとそのバージョンのリストを取得するリモートコンピュータの名前を表します。
リモートGet-WmiObjectコマンドを使用してsoftwarelistをインストールします
以下のコマンドレットは、再び、束の中で最も簡単ですが、完了に時間がかかることがあります:
Get-WmiObject Win32_Product -ComputerName $pcname | select Name,Version
ここで、pc pcnameは、クエリするコンピューターの名前です。
インストールされているソフトウェアを確認するリモートレジストリクエリ
リモートレジストリクエリはやや複雑であり、リモートレジストリサービスを実行する必要があります。 クエリの例は次のとおりです:
$list=@()$InstalledSoftwareKey="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"$InstalledSoftware=::OpenRemoteBaseKey('LocalMachine',$pcname)$RegistryKey=$InstalledSoftware.OpenSubKey($InstalledSoftwareKey) $SubKeys=$RegistryKey.GetSubKeyNames()Foreach ($key in $SubKeys){$thisKey=$InstalledSoftwareKey+"\"+$key$thisSubKey=$InstalledSoftware.OpenSubKey($thisKey)$obj = New-Object PSObject$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $pcname$obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName"))$obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion"))$list += $obj}$list | where { $_.DisplayName } | select ComputerName, DisplayName, DisplayVersion | FT
リモートでイベントログからrecently installedsoftwareリストを確認する
ユーザーのイベントログをリモートで確認するには、以前に使用したコマンドレットに単一の属性(-ComputerName)を追:
Get-WinEvent -ComputerName $pcname -ProviderName msiinstaller | where id -eq 1033 | select timecreated,message | FL *
GPOで展開されたソフトウェアが正常に適用されたかどうかを確認する
GPOを介して特定のソフトウェアバージョンを適用した場合、このGPOがユーザーに適 必要なのは、GPResultツールとターゲットコンピュータとユーザーの名前だけです:
gpresult /s "PCNAME" /USER "Username" /h "Target location of theHTML report"
次に、GPOnameを探して、適用されたGpoまたは拒否されたGpoの下にリストされているかどうかを確認します。以下のサンプルGPOは、Applied GPOsグループに含まれています。