PCを移行する際、インストール済みソフトウェアをメモしようと思ったのですが、やっぱり一つずつコピーするのは大変なので、PowerShellを使って一覧を取得してみる。
環境はWindows7 64bit
こちらのブログを参考に、レジストリから一覧を取得する。
$path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $wow = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" $patharray = ("HKLM:" + $path),("HKCU:" + $path) if(Test-Path $wow){$patharray += $wow}
上記では、レジストリのパスを設定している。
Get-ChildItem -Path $patharray | %{Get-ItemProperty $_.PsPath} | ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} | sort displayname | select DisplayName,Publisher,DisplayVersion
上記は、レジストリから一覧を取得している。
三行目では一覧からシステムコンポーネントを除外している。
五行目のselectでは、「プログラムと機能」の「名前」「発行元」「バージョン」がそれぞれ表示される。
Export-Csv -path .\List.csv -Encoding Default -NoTypeInformation
最後にExport-Csvを使い、リストをList.csvとして出力。
エンコードをSJISにしたい場合はDefault、他にもUTF8等指定できます。
ということで、以下のコマンドをPowerShellに貼り付けるとCSVファイルが出力される。
$path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $wow = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" $patharray = ("HKLM:" + $path),("HKCU:" + $path) if(Test-Path $wow){$patharray += $wow} Get-ChildItem -Path $patharray | %{Get-ItemProperty $_.PsPath} | ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} | sort displayname | select DisplayName,Publisher,DisplayVersion | Export-Csv -path .\List.csv -Encoding Default -NoTypeInformation
ちなみに、いくつか重複している項目があったので注意。
参考
PowerShell: ◆インストールされているソフトウエアの一覧を取得(64ビットOS対応版)
PowerShell: ◆インストールされているソフトウエアの一覧を取得
PowerShellのExport-CsvコマンドレットでCSVファイルを出力する | MSeeeeN
PowerShell/インストール済アプリケーション一覧を取得する - Windowsと暮らす