レジストリへのアクセスは専用のプロバイダーが用意されていて、通常のファイルシステムのようにアクセスできる。
特に難しいわけではないのでこれまでも適当に使ってきたが、それほど頻繁に使うわけでもないので、結局毎回試行錯誤しながら使うことになる。
そこで、いまさらの感はあるが使い方を自分用にメモしておく。
基本的には「Get-Item」と「Get-ItemProperty」を使ってアクセスする。(と思う)
以下のレジストリにアクセスしてみる。

「Get-Item」で「TortoiseSVN」キーにアクセスするとこんな感じになる。
PS>Get-Item hkcu:software\TortoiseSVN Hive: HKEY_CURRENT_USER\software SKC VC Name Property --- -- ---- -------- 7 12 TortoiseSVN {SoundUtils KeyPath, TortoiseSVN,
|
「SKC」というのは「SubKeyCount」の略で、以下の部分の個数を表す。

「VC」は「ValueCount」の略で、以下の部分の個数を表す。

「プロパティ」は以下を指すようだ。

「Get-Item」を「Get-ChildItem」に変えると以下のようにサブキー毎に同様の情報が表示される。
PS>Get-ChildItem hkcu:software\TortoiseSVN Hive: HKEY_CURRENT_USER\software\TortoiseSVN SKC VC Name Property --- -- ---- -------- 0 17 DiffTools {.dll, .exe, .doc, .docm...} 1 1 History {lastCheckoutPath} 0 4 LastUsedUUIDsForGrouping {0, 1, 2, 3} 0 1 LogCache {Version} 0 6 MergeTools {.doc, .docm, .docx, .ods...} 0 6 StatusColumns {CommitDlgVersion, CommitDlg, 1 0 TortoiseProc {}
|
プロパティの一覧は以下のように取得
PS>(Get-item hkcu:software\TortoiseSVN).property SoundUtils KeyPath TortoiseSVN TortoiseMerge TortoiseIDiff DiffProps CurrentVersion CheckNewerWeek RepoBrowserColumnWidth ErrorOccurred NewVersionLink NewVersionText NewVersion |
これでも同じっぽい
PS>(Get-item hkcu:software\TortoiseSVN).getvaluenames() |
ただし、どちらも取得できるのは文字列の情報。
以下の一行の情報をオブジェクトで取得できるのかと思ったのだが、どうにも見当たらない。

とりあえずダイレクトにバリューを取得するには、
PS>(Get-item hkcu:software\TortoiseSVN).GetValue("CheckNewerWeek") 16 |
ここで、「Get-ItemProperty」を試してみると、こちらは以下のオブジェクトを返してくる。(1つのオブジェクト)
「Get-Item」と違ってサブキーの情報は取得できない。
名前の通り、自身のプロパティに特化した情報といった感じ。

左側の「名前」(プロパティ)をその名の通りプロパティとして持っているオブジェクトなので、ダイレクトにバリューを取得するには、
PS>(Get-ItemProperty hkcu:software\TortoiseSVN).CheckNewerWeek 16 |
となる。
これを踏まえて「Get-Item」を使って一覧表示するには、プロパティ(ValueName)を纏めて取得し、その一つずつに対して「GetValue()」でバリュー、「GetValueKind()」で種類を取得する。


種類が不要であれば「Get-ItemProperty」だけで事足りる。(が、こちらは余計なプロパティも含まれる)
PS>Get-ItemProperty hkcu:software\TortoiseSVN PSPath : Microsoft.PowerShell.Core\Reg PSParentPath : Microsoft.PowerShell.Core\Reg PSChildName : TortoiseSVN PSDrive : HKCU PSProvider : Microsoft.PowerShell.Core\Reg SoundUtils KeyPath : keypath TortoiseSVN : TortoiseSVN TortoiseMerge : TortoiseMerge TortoiseIDiff : TortoiseIDiff DiffProps : CurrentVersion : 1.8.4.24972 CheckNewerWeek : 16 RepoBrowserColumnWidth : 00000000000000000000000000000 ErrorOccurred : 0 NewVersionLink : http://tortoisesvn.net NewVersionText : A new version of TortoiseSVN NewVersion : 1.8.6.25419
|