lokale Gruppenmitgliedschaft eruieren

  • Hi!

    Ich versuche seit Tagen herauszufinden, wie es zu bewerkstelliegen ist, die Gruppenmitgliedschaften des momentan angemeldeten User zu eruieren.
    Es handelt sich nicht um eine AD, also wirklich nur die lokalen Gruppen!

    Im Moment mach ich es mit net localgroup Administrator>file.txt, welches ich wiederrum einlese und heruasfiltere!
    Die Lösung gefällt mir aber nicht besonders!

    Hat jemand vielleicht eine bessere Idee?


    Danke und lg
    nigthlord

    • Offizieller Beitrag

    Hi,

    sowas?

    Spoiler anzeigen
    [autoit]

    ; Generated by AutoIt Scriptomatic

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

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

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

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_SystemUsers", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "GroupComponent: " & $objItem.GroupComponent & @CRLF
    $Output = $Output & "PartComponent: " & $objItem.PartComponent & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_SystemUsers" )
    Endif

    [/autoit]

    So long,

    Mega

  • Hallo!

    Danke für die Antwort!
    Das Script habe ich auch bei meiner Suche schon gefunden, leider aber nicht verstanden! =(
    Ich meine das Skript an sich "check" ich einigermaßen, aber die Ausgabe läßt mich grübeln!

    Was ist das für "stranges" Zeug was da raus kommt?-> lol! Sorry aber ich check das nicht ;(

    Kann mir das vielleicht jemand erklären?

    Danke und lg

  • Hi!
    auch wenn ein bischen verspätet, aber letztendlich habe ich doch geschafft!
    Falls es vielleicht mal jemand braucht hier bitteschön.
    Es werden englisch wie deutche Gruppennamen berücksichtigt.
    Hab das ganze als Function geschrieben, darum kann man sollte man exotische Gruppennamen diese auch einfach einsetzen kann bzw. die man nicht braucht einfach löschen.

    Spoiler anzeigen


    $wbemFlagReturnImmediately = 0x10

    $wbemFlagForwardOnly = 0x20

    $strComputer = @ComputerName

    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")


    msgbox(1,"Gäste",groupusers("Guests","Gäste"))

    msgbox(1,"Benutzer",groupusers("Users","Benutzer"))


    MsgBox(1,"","Administratoren:" & @crlf & groupusers("Administratoren","Administrators") &@crlf&@crlf&"Hauptbenutzer:" & @crlf & groupusers("Hauptbenutzer","Power Users"))


    Func groupusers($group,$group_en)

    $users = ""

    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_groupuser where GroupComponent = ""Win32_Group.Domain='" & $strComputer & "',name='"& $group_en & "'""" & _

    " OR Groupcomponent = ""Win32_Group.Domain='" & $strComputer & "',name='" & $group & "'""" _

    , "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    If IsObj($colItems) then
    For $objItem In $colItems
    $dom=StringInStr($objItem.PartComponent,"domain=")
    $name = StringTrimRight(StringReplace(StringMid($objItem.partcomponent,$dom+8),""",Name=""","/"),1)
    if stringinstr($users,$name) = 0 Then
    if $users<>"" Then
    $users = $users & " "
    endif
    $users = $users & $name
    endif
    Next
    EndIf
    return $users
    endfunc


    Ps.Sorry für nicht kommentieren ;