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

続きです。

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>

エラーがなくなりましたね。

コメント

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