本地运行

本地运行

我正在使用的 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 对象需要哪些权限的一般方法是什么的问题仍然存在。

相关内容