Get-ItemProperty コマンドレットの使用

レジストリ キー値の表示

フォルダ内のすべてのファイル一覧を返すには、Get-ChildItem コマンドレットを呼び出すだけです。たとえば、次のコマンドで C:\Scripts のすべてのファイルが返されます。

Get-ChildItem c:\scripts

そのため、Get-ChildItem を使用して、任意の場所にある子オブジェクトを取得できると考えるかもしれません。たとえば、レジストリ キー値をすべて列挙したいとします。次のコマンドは、機能するように見えます。

Get-ChildItem "hklm:\software\microsoft\windows\currentversion\uninstall\windows media player"

技術的にはこのコマンドは機能します。ただ、期待するデータは返されません。このレジストリ キーのすべてのレジストリ値に関する情報は返されず、その場所にあるサブキーに関する情報のみが返されます。これは同じ結果ではありません。言わば、C:\Scripts に対して Get-ChildItem を実行し、ディレクトリ内のサブフォルダに関する情報だけが返されるような動作です。Get-ChildItem は、ファイル システムでは、フォルダ内のファイルに関する情報も返します。これは特にファイルシステム内ではそう動作するように設計されているためです。他の名前空間 (レジストリなど) では、目的の情報を取得するために、多くの場合 Get-ItemProperty コマンドレットを使用する必要があります。

メモ   このコマンドレットは誤解を招きやすい名前かもしれません。ただし、少なくともレジストリ キーの場合、Windows PowerShell では個々のレジストリ値はレジストリ キーのプロパティとして扱われます。

このコマンドは考えていた以上の機能があったと思います。

Get-ItemProperty "hklm:\software\microsoft\windows\currentversion\uninstall\windows media player"

おわかりのように、返されたデータには、Windows Media Player レジストリ キーにレジストリ値が含まれます。

DisplayName       : Windows Media Player 10
UninstallString   : "C:\Program Files\Windows Media Player\Setup_wm.exe" /Uninstall
DisplayIcon       : C:\Program Files\Windows Media Player\wmplayer.exe
ParentKeyName     : OperatingSystem
ParentDisplayName : Windows Updates

次に、Get-ChildItem を使用して、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall レジストリ キーにあるすべてのサブキー コレクションを返す簡単なコマンドを示します。このサブキーのコレクションは ForEach-Object コマンドレットに渡されます。次に ForEach-Object から各サブキーについて Get-ItemProperty コマンドレットを呼び出します。結果として、Uninstall レジストリ キーのすべてのサブキーについてすべてのレジストリ値が返されます。

この処理を行うコマンドは次のようになります。

Get-ChildItem hklm:\software\microsoft\windows\currentversion\uninstall
 | ForEach-Object {Get-ItemProperty $_.pspath}
Get-ItemProperty のエイリアス
  • gp

関連リンク