CIMSessions 需要哪些权限

Adi*_*tan 5 powershell

我需要在我没有权限的服务器上查询一些 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 连接。

但是需要授予帐户的权限是什么?

Col*_*337 7

默认情况下,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)