* レジストリの値を取得する [#raf86846]

** 前提 レジストリの構造 [#i9c14ad0]

 [HKEY_LOCAL_MACHINE\SOFTWARE\Foo]
 "Value A"="AAA"
 "Value B"="BBB"
 "Value C"="CCC"
 
 [HKEY_LOCAL_MACHINE\SOFTWARE\Foo\Bar]
 (省略)
 
 [HKEY_LOCAL_MACHINE\SOFTWARE\Foo\Vaz]
 (省略)

- 上のレジストリの構造は以下のように説明できる。
-- キー Foo
-- サブキー BarとVaz
-- 値(の名前) Value AとValue BとValue C
-- 値のデータ AAAとBBBとCCC
- 「あるキーが持つサブキーをすべて取得する」のと「あるキーが持つ値をすべて取得する」のは別なので注意する。
- つまり、レジストリを参照して設定値(値のデータ)を取得しようと思えば、キーやサブキーではなく、値を指定する必要がある。

** キーを指定してある値のデータを取得する [#cb4b14a7]

 (1) PS> Get-ItemProperty "HKLM:\SOFTWARE\FOO" | select -ExpandProperty "Value A"
 (2) PS> (Get-ItemProperty "HKLM:\SOFTWARE\FOO")."Value A"
 (3) PS> Get-ItemProperty -Path "HKLM:\SOFTWARE\FOO" -Name "Value A"

- HKLM:\SOFTWARE\FOOキーのValue Aの値のデータを取得する。
- (1)と(2)どちらの方法でも結果は同じ。
- (3)のようにValue Aの値だけ取得してもよい。

** キー情報を取得する(キーの持つ値の一覧を参照する) [#tad06388]

 PS> Get-Item "HKLM:\SOFTWARE\FOO"
 
 Name  Property
 ----  --------
 Foo   Value A : AAA
       Value B : BBB
       Value C : CCC

- Get-Itemを使うと型は Microsoft.Win32.RegistryKey なオブジェクトが取得され、コンソール上では上のように表示される。
- キーの持つ値の一覧を見るのが目的なら、このようにGet-Itemコマンドレットを使ってもいい。

** サブキー情報を取得する [#yc0e0bf0]

 PS> Get-ChildItem "HKLM:\SOFTWARE\FOO"
 または
 PS> dir "HKLM:\SOFTWARE\FOO"

- Get-ItemやGet-ItemPropertyではなく、dirを使う。
- これで取得されるサブキー情報のオブジェクトの型は Microsoft.Win32.RegistryKey。

** サブキーの持つデータを取得する [#u2798356]

 PS> Get-ChildItem "HKLM:\SOFTWARE\FOO" | % { $_.GetValue("Value XXX") }
 PS> dir "HKLM:\SOFTWARE\FOO" | % { $_.GetValue("Value XXX") }

- dirは Microsoft.Win32.RegistryKey なオブジェクトの配列をを返すので、%でループして、GetValues()メソッドを使う。

** 参考 [#kfae3c59]

https://stackoverflow.com/questions/15511809/how-do-i-get-the-value-of-a-registry-key-and-only-the-value-using-powershell

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS