Active Directory - Auslesen der Gruppen in den der aktive benutzer mitglied ist.

  • Da es unter Windows 2008 R2 Probleme gibt, mit dsget -expand die Gruppen eines Benutzers auszulesen, und man für Powershell ein AD plugin benötigt wenn man dies mit powershell auslesen will,


    Mein Hintergedanke war, ein Loginscript zu machen, indem geprüft wird, in welchen gruppen der Benutzer ist, und anhand dessen entsprechend der Gruppe eine CMD ausgeführt wird,
    beispiel:

    Benutzer:
    Heinz

    Gruppen:
    PR111 <- Drucker
    Verwaltung
    Office
    SAP


    --------------
    jetzt kommt Autoit ins spiel:

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=N
    #NoTrayIcon
    ; *****************************************************************************
    ; »
    ; *****************************************************************************
    #include <AD.au3>
    _AD_Open()
    Global $aUser = _AD_GetUserGroups(@UserName)

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

    For $i = 1 to UBound($aUser) -1
    Local $sOutput = StringRegExpReplace($aUser[$i], '^CN=([^,]+),OU=.+$','$1')
    local $sOutput2 = StringRegExpReplace($sOutput, '^CN=([^,]+),DN=.+$','$1')
    local $sOutput3 = StringRegExpReplace($sOutput2, '^CN=([^,]+),CN=.+$','$1')
    $sOutput3 = StringReplace($sOutput3, 'á', "ß")
    $sOutput3 = StringReplace($sOutput3, 'š', "Ü")
    $sOutput3 = StringReplace($sOutput3, '™', 'Ä')
    $sOutput3 = StringReplace($sOutput3, 'š', 'Ö')
    $sOutput3 = StringReplace($sOutput3, 'Ž', "ü")
    $sOutput3 = StringReplace($sOutput3, '„', "ä")
    $sOutput3 = StringReplace($sOutput3, '”', "ö")
    ;ConsoleWrite($aUser[$i] &@LF)
    ConsoleWrite (_ANSI2OEM($sOutput3 &@LF))
    Next

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

    Func _ANSI2OEM($text) ;=Umlaute richtig in cmd Darstellen.
    $text = DllCall('user32.dll', 'Int', 'CharToOem', 'str', $text, 'str', '')
    Return $text[2]
    EndFunc ;==>_ANSI2OEM

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

    _AD_Close()

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


    Das script spuckt nun die Gruppen aus,

    diese werden dann im weiteren Script verarbeitet, und die Drucker werden gemappt, und falls eine Batch Datei exestiert, wird diese ausgeführt:
    (in dem fall habe ich das autoit script _gruppenprüfung genannt)

    hier ein kleiner Ausschnitt aus findegruppen.cmd

    Spoiler anzeigen

    Für das script wird <AD.au3> benötigt, was im AD 1.3.0.0 zu finden ist.
    und auch ist es wichtig die autoit exe als consolen Anwendung zu compilen (einfach den Hacken bei Console? setzen)

    Gruss zm0 :)

    Einmal editiert, zuletzt von zm0 (26. März 2013 um 11:56)