続きです。
PS C:\Users\takk> $arr | %{reg query $_}
前回、この処理をしたら、
「エラー: アクセスが拒否されました。」やら、空行が出力されていました。
この出力を含んでいると再帰的に処理ができません。
なので、レジストリキーのみ抽出するようにします。HKEYが含まれている行のみ-matchで抽出してみます。
PS C:\Users\takk> $arr | %{reg query $_} | %{ if( $_ -match "HKEY"){$_} } エラー: アクセスが拒否されました。 HKEY_LOCAL_MACHINE\HARDWARE\ACPI HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP HKEY_LOCAL_MACHINE\SAM\SAM エラー: アクセスが拒否されました。 HKEY_LOCAL_MACHINE\SOFTWARE\Classes HKEY_LOCAL_MACHINE\SOFTWARE\Clients HKEY_LOCAL_MACHINE\SOFTWARE\DefaultUserEnvironment HKEY_LOCAL_MACHINE\SOFTWARE\Dolby HKEY_LOCAL_MACHINE\SOFTWARE\DTS HKEY_LOCAL_MACHINE\SOFTWARE\GitForWindows HKEY_LOCAL_MACHINE\SOFTWARE\Google HKEY_LOCAL_MACHINE\SOFTWARE\Intel HKEY_LOCAL_MACHINE\SOFTWARE\Khronos HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft HKEY_LOCAL_MACHINE\SOFTWARE\Nuance HKEY_LOCAL_MACHINE\SOFTWARE\ODBC HKEY_LOCAL_MACHINE\SOFTWARE\OEM HKEY_LOCAL_MACHINE\SOFTWARE\Oracle HKEY_LOCAL_MACHINE\SOFTWARE\Partner HKEY_LOCAL_MACHINE\SOFTWARE\Policies HKEY_LOCAL_MACHINE\SOFTWARE\Realtek HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications HKEY_LOCAL_MACHINE\SOFTWARE\SRS Labs HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node HKEY_LOCAL_MACHINE\SYSTEM\ActivationBroker HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 HKEY_LOCAL_MACHINE\SYSTEM\DriverDatabase HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig HKEY_LOCAL_MACHINE\SYSTEM\Input HKEY_LOCAL_MACHINE\SYSTEM\Keyboard Layout HKEY_LOCAL_MACHINE\SYSTEM\Maps HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices HKEY_LOCAL_MACHINE\SYSTEM\ResourceManager HKEY_LOCAL_MACHINE\SYSTEM\ResourcePolicyStore HKEY_LOCAL_MACHINE\SYSTEM\RNG HKEY_LOCAL_MACHINE\SYSTEM\Select HKEY_LOCAL_MACHINE\SYSTEM\Setup HKEY_LOCAL_MACHINE\SYSTEM\Software HKEY_LOCAL_MACHINE\SYSTEM\WaaS HKEY_LOCAL_MACHINE\SYSTEM\WPA HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet PS C:\Users\takk>
あれ?
「エラー: アクセスが拒否されました。」がまだ表示されていますね。
出力結果を変数に格納してしまえば、標準エラー出力がフィルタリングされるので気にしないでおくことにします。
PS C:\Users\takk> $ret=$arr | %{reg query $_} | %{ if($_ -match "HKEY"){$_} } エラー: アクセスが拒否されました。 エラー: アクセスが拒否されました。 PS C:\Users\takk>
変数に格納した後に、結果を確認すると、
PS C:\Users\takk> $ret HKEY_LOCAL_MACHINE\HARDWARE\ACPI HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP HKEY_LOCAL_MACHINE\SAM\SAM HKEY_LOCAL_MACHINE\SOFTWARE\Classes HKEY_LOCAL_MACHINE\SOFTWARE\Clients HKEY_LOCAL_MACHINE\SOFTWARE\DefaultUserEnvironment HKEY_LOCAL_MACHINE\SOFTWARE\Dolby HKEY_LOCAL_MACHINE\SOFTWARE\DTS HKEY_LOCAL_MACHINE\SOFTWARE\GitForWindows HKEY_LOCAL_MACHINE\SOFTWARE\Google HKEY_LOCAL_MACHINE\SOFTWARE\Intel HKEY_LOCAL_MACHINE\SOFTWARE\Khronos HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft HKEY_LOCAL_MACHINE\SOFTWARE\Nuance HKEY_LOCAL_MACHINE\SOFTWARE\ODBC HKEY_LOCAL_MACHINE\SOFTWARE\OEM HKEY_LOCAL_MACHINE\SOFTWARE\Oracle HKEY_LOCAL_MACHINE\SOFTWARE\Partner HKEY_LOCAL_MACHINE\SOFTWARE\Policies HKEY_LOCAL_MACHINE\SOFTWARE\Realtek HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications HKEY_LOCAL_MACHINE\SOFTWARE\SRS Labs HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node HKEY_LOCAL_MACHINE\SYSTEM\ActivationBroker HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001 HKEY_LOCAL_MACHINE\SYSTEM\DriverDatabase HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig HKEY_LOCAL_MACHINE\SYSTEM\Input HKEY_LOCAL_MACHINE\SYSTEM\Keyboard Layout HKEY_LOCAL_MACHINE\SYSTEM\Maps HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices HKEY_LOCAL_MACHINE\SYSTEM\ResourceManager HKEY_LOCAL_MACHINE\SYSTEM\ResourcePolicyStore HKEY_LOCAL_MACHINE\SYSTEM\RNG HKEY_LOCAL_MACHINE\SYSTEM\Select HKEY_LOCAL_MACHINE\SYSTEM\Setup HKEY_LOCAL_MACHINE\SYSTEM\Software HKEY_LOCAL_MACHINE\SYSTEM\WaaS HKEY_LOCAL_MACHINE\SYSTEM\WPA HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet PS C:\Users\takk>
エラーがなくなりましたね。
コメント