首页 > 解决方案 > 使用 ADSI 检索本地组成员所需的权限

问题描述

使用 ADSI,我可以通过执行以下操作(例如在 PowerShell 中)查询给定计算机上本地管理员组的成员:

([ADSI]"WinNT://computer-name/Administrators,Group").Invoke("members")

为此,据我所知,运行 PowerShell 脚本的用户需要在目标计算机上具有管理员权限 - 也就是说,用户需要直接在本地管理员组中computer-name(例如,通过成为“域管理员”)。

这让我感到惊讶,因为可以登录的非管理员帐户computer-name(例如,属于“域用户”的用户)可以打开本地用户和组应用程序,并查看本地管理员组的成员。手动执行时不需要特定权限,但 ADSI 似乎需要它。

所以我的问题是:

请注意,我想在其他工作站上远程运行它——而不仅仅是在本地工作站上。

标签: c#windows.net-coreadsi

解决方案


ADSI 建立在 WMI 之上。默认情况下,只允许本地管理员组进行远程 WMI 调用和读取计算机本地目录数据。

您可以通过进入来更改操作系统的权限Computer Management (local) -> Services and Applications -> WMI Control。右键单击WMI Control并选择Properties

我只尝试过允许所有读取,您可以在root文件夹上设置。我做了一些研究,您也许可以将其限制为仅 LDAP。在Security选项卡上向下钻取到Root -> directory -> LDAP. 您需要调整LDAP条目的权限(或者更多?)。关键权限是Remote Enable.

更新

直接从 PowerShell 查询 WMI。

通过 PowerShell 进行远程 WMI:https ://docs.microsoft.com/en-us/windows/win32/wmisdk/connecting-to-wmi-on-a-remote-computer 。

通过 WMI 列出远程组成员身份的自定义 PowerShell 方法:https ://gallery.technet.microsoft.com/scriptcenter/List-local-group-members-c25dbcc4


推荐阅读