使用ADSI,我可以通过执行以下操作来查询给定计算机上的本地Administrator组的成员(例如,在PowerShell中):
([ADSI]"WinNT://computer-name/Administrators,Group").Invoke("members")
据我所知,要执行此操作,运行PowerShell脚本的用户需要在目标计算机上具有管理员权限-也就是说,该用户需要直接间接位于computer-name
的本地管理员组中(例如,通过成为成员) “域管理员”)。这让我感到惊讶,因为可以登录
computer-name
的非管理员帐户(例如,属于“域用户”的用户,而没有其他权限)可以打开本地用户和组应用程序,并查看本地管理员组的成员。手动执行此操作不需要特定权限,但ADSI似乎需要它。所以我的问题是:
请注意,我要在其他工作站上远程运行-不仅仅是在本地工作站上运行。
最佳答案
ADSI建立在WMI之上。默认情况下,仅允许本地Administrators组进行远程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
关于c# - 使用ADSI检索本地组成员所需的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62393322/