7

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

现在服务器有 PowerShell 2,所以它使用 DCOM,但我将升级 PowerShell 并配置为允许 WSMAN 连接。

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

4

2 回答 2

3

默认情况下,Administrators(local) 和Authenticated Users(domain) 至少对命名空间具有读取权限。您需要确保您可以登录/验证服务器。值得一提的是,该Authenticated Users组默认没有Remote Enable权限。

Windows 操作系统将 WinRM 用于 CIM cmdlet,并且用户帐户需要是administrator. WinRM 创建了一个名为的本地组WinRMRemoteWMIUsers_,并仅授予对该Administrators组的访问权限和WinRMRemoteWMIUsers_. 要将用户添加到该组,请使用以下命令:

net localgroup WinRMRemoteWMIUsers__ /add "domain\user"

抽象的答案很简单,您需要被授予远程WMI读取权限的Enable Account权限。Remote EnableNamespace

验证 WMI 权限的过程

登录到服务器并启动 mmc.exe。添加 WMI 管理单元,一旦加载,右键单击 WMI 控件。当 Properties 窗口打开时,单击 security,展开 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
于 2013-10-09T18:38:26.597 回答
-5

转到控制面板 > 用户帐户 > Managae 用户 > 新用户,登录新用户。将自动安装所有 Windows 设置,然后将飞行模式更改为 on 。设置将反映以前的用户。享受!!

于 2016-02-16T07:01:47.840 回答