我正在编写一个使用 WMI 从远程计算机获取信息的监控服务。由于政治原因,无法在所有这些计算机上拥有本地管理员权限。
这可能吗?我的用户需要什么权限/权利?
答案1
以下内容适用于 Windows 2003 R2 SP 2、Windows Server 2012 R2
- 将相关用户添加到性能监视器用户团体
- 在“服务和应用程序”下,打开 WMI 控制的属性对话框(或运行
wmimgmt.msc
)。在“安全”选项卡中,突出显示Root/CIMV2
,单击“安全”;添加 性能监视器用户并启用选项:Enable Account
和Remote Enable
- 运行
dcomcnfg
。在组件服务 > 计算机 > 我的电脑中,在属性对话框的 COM 安全选项卡中单击Access Permissions
和的“编辑限制”Launch and Activation Permissions
。添加性能监视器用户并允许远程访问、远程启动和远程激活。 - 在组件服务 > 计算机 > 我的电脑 > DCOM 配置下选择 Windows 管理规范,
Remote Launch
并Remote Activation
授予性能监视器用户团体。
笔记:
- 作为步骤 3 和 4 的替代方法,可以将用户分配到组分布式 COM 用户(在 Windows Server 2012 R2 上测试)
- 如果用户需要访问所有命名空间,则可以在级别上设置2中的设置,并通过中的窗口
Root
将权限递归到子命名空间Advanced
Security
答案2
我在 Windows 8 上所做的就是将用户添加到“远程管理用户”组,然后远程 WQL 请求就可以起作用了。
答案3
默认情况下,只有本地管理员组才具有 WMI 的远程权限。您必须自定义 WMI“远程启用”权限。
答案4
这里没有适合我的东西。我找到了一个YouTube 视频结合任意评论这为我解决了这个问题(希望也为你解决了),但仅限于使用时invoke-command
(例如invoke-command -ComputerName MyRemoteComputer -ScriptBlock {Get-Process -Name explorer}
)。
在您想要远程访问的 PC 上(在同一域中):
- [右键点击开始] >
Run
>lusrmgr.msc
(在域控制器上dsa.msc
:) - [选择
Groups
文件夹](在域控制器上:Builtin
文件夹) - [右键单击
Distributed COM Users
] >Add to [a] group...
>Add...
- [搜索您要授予 WMI 访问权限的用户/组] >
Check Names
(以确认它是正确的组/用户) >OK
为什么将用户/组添加到Distributed COM Users
组会有所帮助?嗯,该组有权在COM Security
设置下远程启动应用程序和对象。您可以使用以下方式查看这些权限:[右键单击开始] > Run
> DCOMcnfg
> Component Services
> Computers
> [右键单击My Computer
] > Properties
> COM Security
>Edit Limits...
- 在提升的 PowerShell 中:
Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell
Add...
> [搜索您要授予 WMI 访问权限的用户/组] >Check Names
(以确认它是正确的组/用户) >OK
Allow
在下的列下Permissions for MyUser
,我只选择了Read(Get,Enumerate,Subscribe)
和Execute(Invoke)
选项(因为我将这些权限授予所有人Domain Users
)。Apply
>OK
- [右键点击开始] >
Run
>services.msc
- [右键单击] >
Restart
和Windows Management Instrumentation
。Windows Remote Management (WS-Management)
- (如果尚未设置,请在 [右键单击] > 中将这些服务中的每一个设置
Startup type
为- 如果尚未设置。)Automatic
Properties
- (如果仍然不起作用)打开
Windows Defender Firewall with Advanced Security
并[右键单击]>Enable
每个Windows Management Instrumentation
Inbound Rule
。