Как составить список всех членов группы локальных администраторов, используя VBScript и WMI - PullRequest
3 голосов
/ 14 октября 2011

Мне нужно написать сценарий, который выбирает список членов в группе «Администраторы» сервера Windows для целей аудита. Мне также нужно показать доменное имя пользователя / группы, если оно не локальное.

1 Ответ

4 голосов
/ 19 октября 2011

Следующий скрипт будет работать даже на контроллере домена:

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.
...