You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

工作组机器执行Get-WMIObject命令报0x80070005错误求助

解决WMI远程查询0x80070005权限错误的方案

嘿,这个0x80070005错误本质就是权限不足,我来帮你一步步排查解决:

  • 确认账号权限与格式
    工作组环境下,远程账号的格式要写对,应该是.\<username>(比如.\AdminUser),不然PowerShell会默认找本地机器的账号,肯定验证失败。另外,这个账号必须在远程机器的Remote Management Users组里(或者本地管理员组,不过尽量用最小权限)。你可以远程登录到目标机器,在「计算机管理」→「本地用户和组」→「组」里把账号加进去。

  • 检查凭证正确性
    仔细核对<password>的拼写,包括大小写、特殊字符,别因为手输错误导致权限验证失败。可以先尝试用这个账号直接远程登录目标机器,确认账号密码能正常使用。

  • 确保远程机器的WMI服务正常运行
    远程机器的Windows Management Instrumentation服务必须处于启动状态。你可以在目标机器的「服务」里查看,或者如果能基础连通的话,用这条命令验证:

    Get-Service Winmgmt -ComputerName "<IP address>" -Credential $remote_credential
    
  • 配置防火墙允许WMI通信
    远程机器的Windows防火墙必须开启Windows Management Instrumentation (WMI)的入站规则。打开「Windows Defender防火墙」→「高级设置」→「入站规则」,找到这个规则并启用它,确保允许来自你本地机器的WMI请求。

  • 检查WMI命名空间权限
    有时候账号有组权限,但WMI特定命名空间的权限不足。在远程机器上打开wmimgmt.msc,右键「WMI控制」→「属性」→「安全」标签,找到root\cimv2命名空间,点击「安全」→「编辑」,给你的账号添加允许的读取权限(查询服务只需要读取权限)。

  • 修正代码的小细节
    你的原始代码第一行末尾少了分号,PowerShell里多行命令如果写在一行需要用分号分隔,另外加上正确的账号格式,修正后的代码如下:

    $wmi_pass = "<password>"; 
    $wmi_user = ".\<username>"; 
    $remote_pass = ConvertTo-SecureString -String $wmi_pass -AsPlainText -Force; 
    $remote_credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $wmi_user, $remote_pass; 
    Get-WMIObject -Query "Select DisplayName from Win32_Service where StartMode='Auto'" -ComputerName "<IP address>" -Credential $remote_credential
    
  • 先做基础连通性测试
    先用Test-Connection "<IP address>"确认网络是通的,再用简单的WMI查询测试,比如:

    Get-WMIObject Win32_OperatingSystem -ComputerName "<IP address>" -Credential $remote_credential
    

    如果这个简单查询也报错,那问题大概率在权限或网络配置上;如果能成功,再回到服务查询的命令排查。

内容的提问来源于stack exchange,提问作者StackExchangeGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:41:30