WMI查询本地管理员,包括组成员
我知道如何通过WMI获取远程计算机上的本地管理员列表:WMI查询本地管理员,包括组成员,wmi,wmi-query,wmic,wql,Wmi,Wmi Query,Wmic,Wql,我知道如何通过WMI获取远程计算机上的本地管理员列表: wmic/Node:“ComputerName”路径win32\u组用户,其中(groupcomponent=“win32\u group.name=\“administrators\”,domain=“ComputerName\”) 这将返回用户和组: 组组件部分组件 win32\u group.domain=“Computername”,name=“administrators”\\Computername\root\cimv2:wi
wmic/Node:“ComputerName”路径win32\u组用户,其中(groupcomponent=“win32\u group.name=\“administrators\”,domain=“ComputerName\”)
这将返回用户和组:
组组件部分组件
win32\u group.domain=“Computername”,name=“administrators”\\Computername\root\cimv2:win32\u UserAccount.domain=“Computername”,name=“Administrator”
win32\u group.domain=“Computername”,name=“administrators”\\Computername\root\cimv2:win32\u group.domain=“MYDOMAIN”,name=“domain Admins”
win32\u group.domain=“Computername”,name=“administrators”\\Computername\root\cimv2:win32\u group.domain=“MYDOMAIN”,name=“SomeOtherGroup”
win32\u group.domain=“Computername”,name=“administrators”\\Computername\root\cimv2:win32\u UserAccount.domain=“MYDOMAIN”,name=“MyUser”
但是,如果用户是上述SomeOtherGroup
的成员,我需要知道他是成员,因此是本地管理员。因此,我需要(可能是递归地)扩展所有组成员
是否有一个WMI查询可以在win32\u组
上自动加入,扩展所有本地管理员组的所有用户名?中有:
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 & "\root\cimv2")
wmiGroupMembers "administrators", 0
Wscript.Echo sResult
请注意,尽管有一个wmic
等价物(请参阅),但它的使用可能是一个棘手的问题,因为任何cmd
实用程序的所有输出都是文本(即,不是对象),必须使用