Windowsコマンド(reg query)(その9)

続きです。

reg queryの処理を関数化します。

PS C:\Users\takk> function get_regkeys($arr){
>> $arr | % {reg query $_}
>> }
PS C:\Users\takk>

使ってみます。

PS C:\Users\takk> get_regkeys hklm

HKEY_LOCAL_MACHINE\BCD00000000
HKEY_LOCAL_MACHINE\HARDWARE
HKEY_LOCAL_MACHINE\SAM
HKEY_LOCAL_MACHINE\SECURITY
HKEY_LOCAL_MACHINE\SOFTWARE
HKEY_LOCAL_MACHINE\SYSTEM
PS C:\Users\takk>

この関数に前回追加したフィルタする処理も追加します。

PS C:\Users\takk> function get_regkey($arr){
>> $arr | % {if($_ -match "HKEY"){reg query $_}}
>> }
PS C:\Users\takk>

実行してみます。

PS C:\Users\takk> get_regkeys hklm

HKEY_LOCAL_MACHINE\BCD00000000
HKEY_LOCAL_MACHINE\HARDWARE
HKEY_LOCAL_MACHINE\SAM
HKEY_LOCAL_MACHINE\SECURITY
HKEY_LOCAL_MACHINE\SOFTWARE
HKEY_LOCAL_MACHINE\SYSTEM
PS C:\Users\takk>

あれ、空行がカットされていません。
それはそうですね。フィルタリングする場所がおかしいです。

PS C:\Users\takk> function get_regkey($arr){
>> $ret_arr=@()
>> $arr | % { reg query $_ | %{if($_ -match "HKEY"){$ret_arr += $_}} }
>> return $ret_arr
>> }
>>
PS C:\Users\takk>

実行してみます。

PS C:\Users\takk> get_regkey hklm
HKEY_LOCAL_MACHINE\BCD00000000
HKEY_LOCAL_MACHINE\HARDWARE
HKEY_LOCAL_MACHINE\SAM
HKEY_LOCAL_MACHINE\SECURITY
HKEY_LOCAL_MACHINE\SOFTWARE
HKEY_LOCAL_MACHINE\SYSTEM
PS C:\Users\takk>

この関数を再帰的に実行すればよいですね。

コメント

タイトルとURLをコピーしました