1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

レジストリからローカルに関連するファイルの拡張子を取得するPowershell

2022-02-06 11:21:57

すべてのバージョンに適用されます。
前回のヒントで、1つのコマンドで複数行のレジストリレコードを取得する方法を知りましたので、ここでもう一度コードを確認しましょう。

コピーコード コードは以下の通りです。

$lookup = Get-ItemProperty Registry::HKCR\. [a-f]? |lookup
  Select-Object -Property PSChildName, '(default)', ContentType, PerceivedType |
  Group-Object -Property PSChildName -AsHashTable -AsString

今度はHKCRの中でドットスタートで3文字幅、A~Fの文字で始まるキーを全て読み取ります。
また、その結果をGroup-Objectに渡し、"PSChildName"を主キーとして、ルックアップテーブルを形成します。
値 "PSChildName"はファイルの拡張子です。
これで、次のように何度でも当該ファイルを調べることができます。
コピーコード コードは以下の通りです。

PS> $lookup.'.avi'

PSChildName (default) ContentType PerceivedType     
----------- --------- ----------- -------------     
.avi WMP11.AssocFile.AVI video             

PS> $lookup.'.fon'

PSChildName (default) ContentType PerceivedType     
----------- --------- ----------- -------------     
.fon fonfile                                          

ただし、これはa-fで始まる3つのファイルに限定されることを忘れないでください。

コピーコード コードは以下の通りです。

Registry::HKCR\. *