続きです。
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>
この関数を再帰的に実行すればよいですね。
コメント