Powershell: HRESULT からの例外:0x80070005 (E_ACCESSDENIED)

仕事ではドメインを使用しているため、 Powershell でリモートPCの情報を取ろうとする時、-ComputerName でリモートPCを指定すれば、自分のアカウントがリモートPCにも適用されるので便利です。

こんな感じ。

Get-WmiObject -ComputerName win10_01 Win32_PerfFormattedData_PerfOS_Processor

ところが、自宅はドメインではなく、ワークグループで運用しているので、隣のPCの情報を取ろうとすると、-Credential オプションが必要になります。次のようにコマンドを発行すると、

Get-WmiObject -ComputerName win10_01 -Credential my_account Win32_PerfFormattedData_PerfOS_Processor
Get-WmiObject : アクセスが拒否されました。 (HRESULT からの例外:0x80070005 (E_ACCESSDENIED))

アクセスが拒否されてしまいました。

エラー番号が出てこず、

Get-WmiObject : アクセスが拒否されました。

だけの場合もあります。以下の情報は共通。

+ CategoryInfo : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException 
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Web検索すると、以下のURLに私の環境で起きているエラーと同じ情報がありました。

http://tooljp.com/qa/Restart-Computer-0x80070005-0F2C.html

コマンドラインにアカウント情報を入力する前に、レジストリでリモートからのアクセスを許可しないといけないそうです。

キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
値:LocalAccountTokenFilterPolicy (dword)
データ:00000001

実際にレジストリの値をチェックしてみると、そもそも LocalAccountTokenFilterPolicy がありません。

このレジストリ値を追加して、データを1 にセットしたところ、リモートからのコマンドを受け付けるようになりました。

コメントを残す