Powershell中远程机器上的WMI查询

时间:2012-03-31 16:07:02

标签: powershell wmi wmi-query

我想在远程计算机上运行查询(例如CIM_Memory),在这种情况下,它是一个虚拟机。我在Powershell中使用此代码:

Get-WmiObject CIM_Memory -ComputerName IPADDRESS -Credential USERNAME

当然使用实际的IP和用户名。 两个操作系统(均为Win7)都启用了RemoteAdmin。

我遇到了这个例外:

Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)

由于它是带有UAC功能的Win7,因此用户可以获得访问令牌。所以有这个注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ LocalAccountTokenFilterPolicy

将此设置为1后,仍然会得到相同的异常。可能是什么问题?

3 个答案:

答案 0 :(得分:0)

您是否阅读了MSDN上的WMI Troubleshooting部分?以下是关于您的错误的说法:

  

0x80070005 - E_ACCESS_DENIED - DCOM安全拒绝访问。

     

用户   没有通过DCOM远程访问计算机。通常情况下,   使用a连接到远程计算机时会发生DCOM错误   不同的操作系统版本。

     

为用户提供远程启动和   dcomcnfg中的远程激活权限。右键单击我的电脑 - >   属性在COM安全性下,单击两个部分的“编辑限制”。   为您想要远程访问,远程启动和远程的用户提供服务   激活。然后转到DCOM配置,找到“Windows管理   仪表“,并为用户提供远程启动和远程   激活。有关更多信息,请参阅在不同之间连接   操作系统

答案 1 :(得分:0)

强烈建议您启用ps远程处理(如果可以)。这样您就可以告诉目标计算机运行本地wmi调用并向您报告。

WMI在防火墙,随机端口方面存在大量问题。

答案 2 :(得分:0)

我第二次启用psremoting,然后可以使用wsman协议而不是dcom协议,而可以使用get-ciminstance或invoke-command。