Remote Lokale Gruppe members auslesen

  • Hey,

    kurze frage möchte gerne auf vom remote rechner die administrator gruppe auslesen also die mitglieder der gruppe jemand ein Tipp wie ich das elegant lösen könnte?

    Danke
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (4. Dezember 2009 um 11:18)

  • Hier ein Auszug aus SIC2 :

    Spoiler anzeigen
    [autoit]


    ;Coded by UEZ 2009
    #AutoIt3Wrapper_Change2CUI=y
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_UseX64=n
    #include <array.au3>
    Global $server = "localhost"
    If $CmdLine[0] > 0 Then $server = $CmdLine[1]

    [/autoit] [autoit][/autoit] [autoit]

    $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $server & "\root\cimv2")

    [/autoit] [autoit][/autoit] [autoit]

    Membership_Administrators_Local($server)

    [/autoit] [autoit][/autoit] [autoit]

    Func Membership_Administrators_Local($srv)
    If StringUpper($srv) = StringUpper("Localhost") Then $srv = @ComputerName
    Local $function_name = "Members"
    Local $LM_members, $x, $LM_LocalGroup_Name, $type, $colItems2, $LM_local_user, $y, $line, $TimeStamp
    Local $filename_ms = $function_name & "_" & $srv
    Local $filename_error_current = $function_name & "_" & $srv & "_error.log"
    $LM_LocalGroup_Name = "Administrators"
    $colItems = $objWMIService.ExecQuery("Select SID from Win32_Group WHERE Domain='" & $srv & "'", "WQL", 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If StringUpper($objItem.SID) = StringUpper("S-1-5-32-544") Then $LM_LocalGroup_Name = $objItem.Name
    Next
    EndIf
    $type = ""
    $LM_local_user = ""
    $colItems = $objWMIService.ExecQuery("Select * from Win32_GroupUser Where GroupComponent=""Win32_Group.Domain='" & $srv & "',Name='" & $LM_LocalGroup_Name & "'""", "WQL", 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $objItem.PartComponent <> "" Then
    $x = StringSplit($objItem.PartComponent, """")
    $type = StringMid($x[1], StringInStr($x[1], ":Win32_") + 7, (StringInStr($x[1], ".") - (StringInStr($x[1], ":Win32_") + 7)))
    $LM_members &= $srv & ";" & $LM_LocalGroup_Name & ";" & $type & ";" & $x[2] & "\" & $x[4] & ";" & @CRLF
    EndIf
    Next
    EndIf
    ConsoleWrite($LM_members)
    EndFunc ;==>Membership_Administrators_Local

    [/autoit]

    Vielleicht musst du noch die Sprache anpassen (Administrators -> Administratoren)!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Ich hätte das so gelöst:

    Spoiler anzeigen
    [autoit]

    #Include <Array.au3>
    $Members = _LocalGroupMembers("Administratoren")
    _ArrayDisplay($Members)

    [/autoit] [autoit][/autoit] [autoit]

    Func _LocalGroupMembers($sGroup)
    ;funkey 03.12.2009
    Local $line, $aMembers
    Local $cmd = "net localgroup "& $sGroup
    Local $Pid = Run(@ComSpec & " /c " & $cmd, "", @SW_HIDE, 2)
    While 1
    $line &= StdoutRead($Pid)
    If @error Then ExitLoop
    Wend
    $aMembers = StringSplit(StringTrimLeft($line, StringInStr($line, "-----", 0, -1) + 6), @CRLF, 3)
    ReDim $aMembers[UBound($aMembers) - 3]
    Return $aMembers
    EndFunc

    [/autoit]