查询代码如下:
Function mQUser(mGroup As String) '参数为组名
Dim objNetwork, objConn, objItems, sResult, Item, objOU
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objConn = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objItems = objConn.ExecQuery("Select * from Win32_GroupUser WHERE GroupComponent=""Win32_Group.Domain='" & strComputer & "',Name='" & mGroup & "'""", , 48)
sResult = ""
For Each Item In objItems
Set objOU = objConn.Get(Item.PartComponent)
sResult = sResult & objOU.Name & vbCrLf
Next
If sResult = "" Then
mQUser = "无"
Else: mQUser = sResult
End If
End Function
'函数返回值为该组里有的用户名,用VBCRLF分隔。
'如要获取有哪些管理员:
MsgBox mQUser("Administrators")
'获取计算机上有哪些组,你可以使用WMI的Win32_Group类使用如下查询
objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass)
'objSWbemObjectSet对象的成员就是组对象了,每一个对象的NAME属性就是你要的各组名称了。
For Each objSWbemObject In objSWbemObjectSet
Debug.Print objSWbemObject.Name, mQUser(objSWbemObject.Name)
Next
'即可历遍所有成员,并在调试窗口里面输入所包含的用户