我正在使用的 Windows 机器:
- 我在无服务包的 Windows Server 2012 R2 上运行了此程序。
- IP 是 10.10.123.123(为保护我的隐私而更改!)
- winrm 监听器设置在 HTTPS 5986 上
我正在使用的用户:
- 是 10.10.123.123 上的本地用户
- 我也尝试了域用户,步骤如下
- 故意不是管理员用户以限制访问
- 是远程管理用户 (用于 powershell) 的成员
- 是 WinRMRemoteWMIUsers__ 的成员(用于 winrm 查询)
- WMI 控制下的“远程启用”
- 打开计算机管理
- WMI 控制 -> 右键单击 -> 属性 -> 安全选项卡
- 根目录 -> 选择它 -> 单击底部的“安全”
- 在“此命名空间和子命名空间”中为用户添加远程启用
本地运行
这是我在ip为10.10.123.123的机器上直接运行的命令,以和远程命令相同的用户登录。
Get-WSManInstance -Enumerate -ResourceURI wmicimv2/* -Dialect WQL -Filter "SELECT PercentProcessorTime, Timestamp_Sys100NS FROM Win32_PerfRawData_Counters_ProcessorInformation WHERE NOT Name LIKE '%_Total'"
xsi : http://www.w3.org/2001/XMLSchema-instance
w : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
m : http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd
lang : en-US
PercentProcessorTime : 1616986718750
Timestamp_Sys100NS : 131753759127044458
xsi : http://www.w3.org/2001/XMLSchema-instance
w : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
m : http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd
lang : en-US
PercentProcessorTime : 1613812500000
Timestamp_Sys100NS : 131753759127044458
xsi : http://www.w3.org/2001/XMLSchema-instance
w : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
m : http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd
lang : en-US
PercentProcessorTime : 1606279375000
Timestamp_Sys100NS : 131753759127044458
xsi : http://www.w3.org/2001/XMLSchema-instance
w : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
m : http://schemas.microsoft.com/wbem/wsman/1/wsman.xsd
lang : en-US
PercentProcessorTime : 1604592187500
Timestamp_Sys100NS : 131753759127044458
“远程”运行
这是我用来运行的命令。我可以从 10.10.123.123 或从单独的 Windows 机器上运行它。无论在哪里,结果都是空的。没有错误消息。
$cred = Get-Credential
Get-WSManInstance -Enumerate -ResourceURI wmicimv2/* -Dialect WQL -Filter "SELECT PercentProcessorTime, Timestamp_Sys100NS FROM Win32_PerfRawData_Counters_ProcessorInformation WHERE NOT Name LIKE '%_Total'" -ComputerName 10.10.123.123 -useSSL -SessionOption (New-WSManSessionOption -SkipCACheck -SkipCNCheck) -Credential $cred
# The result is empty unlikely the local command.
额外信息
- 当我删除 WHERE 子句时,我仍然得到空结果
- 本地和远程与管理员用户一起工作
- 如果我改用 Win32_Service 对象,它可以在本地工作,但远程会引发错误“WS-Management 服务无法处理该请求。WMI 服务返回‘拒绝访问’错误。”
- 我尝试使用域用户而不是本地用户
问题
远程查询 Win32_PerfRawData_Counters_ProcessorInformation 和类似对象需要哪些权限?确定类似对象(如 Win32_Service)的权限的方法是什么?
参考
我主要用它作为设置 WMI 远程访问的参考,无需管理员帐户(作者:Ondrej Sevecek)https://www.sevecek.com/Lists/Posts/Post.aspx?ID=280
答案1
经过大量搜索,我偶然发现了这篇文章http://vniklas.djungeln.se/2012/08/22/set-up-non-admin-account-to-access-wmi-and-performance-data-remotely-with-powershell/建议将用户添加到“性能监视器用户”组。之后,Win32_PerfRawData_Counters_ProcessorInformation 将返回远程查询的结果!:)
不幸的是,我仍然无法访问 Win32_Service。因此,确定每个 wmi 对象需要哪些权限的一般方法是什么的问题仍然存在。