【问题标题】:How to list all members of the local administrators group using VBScript and WMI如何使用 VBScript 和 WMI 列出本地管理员组的所有成员
【发布时间】:2011-10-14 16:42:15
【问题描述】:

我需要编写一个脚本来获取 Windows 服务器管理员组中的成员列表以用于审计目的。如果不是本地的,我还需要显示用户/组的域名。

【问题讨论】:

  • 抱歉这个未解决的问题,我想我可以关闭它,所以它只是代码共享,但我不能再等 8 小时。
  • 你可以做的是问“我如何列出所有成员...”这个问题,然后给出这个答案。
  • 我将问题的答案部分编辑为答案。在 SO 上自我回答时请使用此方法。然后你就不需要关闭它了。

标签: vbscript wmi


【解决方案1】:

以下脚本甚至可以在域控制器上运行:

Sub GetAdministrators(strComputerName)
    Dim objWMIService, strQuery, colItems, Path, strMembers
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    strQuery = "select * from Win32_GroupUser where GroupComponent = " & chr(34) & "Win32_Group.Domain='" & strComputerName & "',Name='Administrators'" & Chr(34)
    Set ColItems = objWMIService.ExecQuery(strQuery)
    strMembers = ""
    For Each Path In ColItems
        Dim strMemberName, NamesArray, strDomainName, DomainNameArray
        NamesArray = Split(Path.PartComponent,",")
        strMemberName = Replace(Replace(NamesArray(1),Chr(34),""),"Name=","")
        DomainNameArray = Split(NamesArray(0),"=")
        strDomainName = Replace(DomainNameArray(1),Chr(34),"")
        If strDomainName <> strComputerName Then
            strMemberName = strDomainName & "\" & strMemberName
        End If
        WScript.Echo strMemberName
    Next
End Sub

Function GetComputerName()
    Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
    Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
    For Each objItem in colItems
        strComputerName = objItem.Name
        GetComputerName = strComputerName
    Next
End Function

GetAdministrators GetComputerName

要执行它,只需在命令提示符窗口中运行:

cscript //nologo script.vbs.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多