我需要在我没有权限的服务器上查询一些 WMI 类。这是我运行时遇到的错误。
PS> get-ciminstance -ComputerName test.mydomain.com -ClassName Win32_OperatingSystem
get-ciminstance : Access is denied.
At line:1 char:1
+ get-ciminstance -ComputerName test.mydomain.com -ClassName Win32_Operating ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (root\cimv2:Win32_OperatingSystem:String) [Get-CimInstance], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070005,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand
+ PSComputerName : test.mydomain.com
Run Code Online (Sandbox Code Playgroud)
现在服务器有 PowerShell 2,所以它使用 DCOM,但我将升级和配置 PowerShell 以允许 WSMAN 连接。
但是需要授予帐户的权限是什么?
默认情况下,Administrators
(本地)和Authenticated Users
(域)至少具有命名空间的读取权限。您需要确保可以登录/验证服务器。值得一提的是,该组默认Authenticated Users
没有权限。Remote Enable
Windows 操作系统使用 WinRM 来执行 CIM cmdlet,并且用户帐户必须是administrator
. WinRM 创建一个名为 的本地组WinRMRemoteWMIUsers_
,并只允许访问该Administrators
组 和WinRMRemoteWMIUsers_
。要将用户添加到该组,请使用以下命令:
net localgroup WinRMRemoteWMIUsers__ /add "domain\user"
Run Code Online (Sandbox Code Playgroud)
抽象的答案很简单,您需要被授予Enable Account
远程WMI读取Remote Enable
权限。Namespace
验证 WMI 权限的过程
登录服务器并启动 mmc.exe。添加 WMI 管理单元,加载后,右键单击 WMI 控件。当“属性”窗口打开时,单击安全性,展开 root 并选择 cimv2。单击安全按钮并查看谁被授予访问权限以及授予哪些访问权限。
使用 DCOM 进行测试的脚本
如果您想使用 DCOM 进行测试,或者由于服务器操作系统太旧而需要测试,请使用以下脚本:
$Computer = thisbox.domain.com
$CimOption = New-CimSessionOption -Protocol Dcom
$CimSession = New-CimSession -ComputerName $Computer -SessionOption $CimOption
Get-CimInstance -ClassName win32_operatingsystem -CimSession $CimSession
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22020 次 |
最近记录: |