仕事ではドメインを使用しているため、 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 にセットしたところ、リモートからのコマンドを受け付けるようになりました。