WMI 查询本地管理员,包括组成员



我知道如何通过WMI获取远程计算机上的本地管理员列表:

wmic /Node:"ComputerName" path win32_groupuser where (groupcomponent="win32_group.name="administrators",domain="Computername"")

这将返回用户和组:

GroupComponent PartComponent win32_group.domain="Computername",name="administrators" \Computernamerootcimv2:Win32_UserAccount.Domain="Computername",Name="Administrator" win32_group.domain="Computername",name="administrators" \Computernamerootcimv2:Win32_Group.Domain="MYDOMAIN",Name="Domain Admins" win32_group.domain="Computername",name="administrators" \Computernamerootcimv2:Win32_Group.Domain="MYDOMAIN",Name="SomeOtherGroup" win32_group.domain="Computername",name="administrators" \Computernamerootcimv2:Win32_UserAccount.Domain="MYDOMAIN",Name="MyUser"

但是,如果用户是上述SomeOtherGroup的成员,我需要知道他是成员 - 因此是本地管理员。因此,我需要扩展(可能递归地(所有组成员。

是否有可以在win32_group上自加入的WMI查询,扩展作为本地管理员的所有组的所有用户名?

WMI 查询语言 (WQL( 中有ASSOCIATORS OF语句:

ASSOCIATORS OF语句检索所有实例 与特定源实例关联。实例是 检索到的终结点称为终结点。返回每个终结点 与源之间存在关联的次数一样多 对象。

以下 VBScript 应该可以完成这项工作:

option explicit
Function wmiGroupMembers( sGroupName, intLevel)
Dim colSubGroups, colSubGroup, sQuery
sQuery = "Associators of {win32_group.domain=""" & sDomainName & _
""",name=""" & sGroupName & """} " _
& "Where ResultRole = PartComponent"
Set colSubGroups = objWMIService.ExecQuery( sQuery )
For Each colSubGroup in colSubGroups
If LCase( colSubGroup.Path_.Class) = "win32_group" Then
wmiGroupMembers colSubGroup.Name, intLevel + 1
End If 
sResult = sResult & vbNewLine & intLevel _
& vbTab & sGroupName _
& vbTab & colSubGroup.Domain _
& vbTab & colSubGroup.Name
Next
End Function
Dim sResult, wshNetwork, sComputerName, sDomainName, objWMIService
sResult = ""
Set wshNetwork    = WScript.CreateObject( "WScript.Network" )
sComputerName = wshNetwork.ComputerName
sDomainName   = UCase( wshNetwork.UserDomain)
Set objWMIService = GetObject("winmgmts:\" & sComputerName & "rootcimv2")
wmiGroupMembers "administrators", 0
Wscript.Echo sResult

请注意,尽管有一个wmic等价物(请参阅动词ASSOC(,但它的使用可能是一个棘手的问题,因为任何cmd实用程序的所有输出都是文本(即不是对象(,并且必须使用循环命令解析for

最新更新