VBScript - prüfen ob Benutzer - Computer Mitglied einer Gruppe ist
Hallo,
ich habe mir vor kurzem ein Script gebastelt mit dem ich über das AD bestimmen kann welcher Benutzer/Computer welchen Drucker automatisch bekommt. Funktioniert auch alles perfekt.
Ich habe jetzt im AD Gruppen die den selben Namen haben wie die Drucker und die Mitglieder der Gruppen bekommen die Drucker automatisch verbunden.
Nun habe ich eben das Problem das ich Abteilungsdrucker habe, die allen Computern einer Abteilung zugeordnet werden müssen. Jetzt würde ich gerne in die Druckergruppe als Mitglied weitere Gruppen hinzufügen (z.B. Abteilung-Buchhaltung).
Jetzt ist meine Frage, wie finde ich mit VBScript herraus ob ein Benutzer/Computer Mitglied einer Gruppe ist, auch wenn er nicht direkt in der Gruppe steht, sondern sich in weiteren Untergruppen versteckt?
Beispiel
->Drucker1
--->User1
--->User2
--->Gruppe1
>User3
>User4
Wie finde ich in diesem Beispiel heraus ob User 3 & 4 Mitglieder sind von Drucker1?
Gruß Andi
ich habe mir vor kurzem ein Script gebastelt mit dem ich über das AD bestimmen kann welcher Benutzer/Computer welchen Drucker automatisch bekommt. Funktioniert auch alles perfekt.
Ich habe jetzt im AD Gruppen die den selben Namen haben wie die Drucker und die Mitglieder der Gruppen bekommen die Drucker automatisch verbunden.
Nun habe ich eben das Problem das ich Abteilungsdrucker habe, die allen Computern einer Abteilung zugeordnet werden müssen. Jetzt würde ich gerne in die Druckergruppe als Mitglied weitere Gruppen hinzufügen (z.B. Abteilung-Buchhaltung).
Jetzt ist meine Frage, wie finde ich mit VBScript herraus ob ein Benutzer/Computer Mitglied einer Gruppe ist, auch wenn er nicht direkt in der Gruppe steht, sondern sich in weiteren Untergruppen versteckt?
Beispiel
->Drucker1
--->User1
--->User2
--->Gruppe1
>User3
>User4
Wie finde ich in diesem Beispiel heraus ob User 3 & 4 Mitglieder sind von Drucker1?
Gruß Andi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188462
Url: https://administrator.de/forum/vbscript-pruefen-ob-benutzer-computer-mitglied-einer-gruppe-ist-188462.html
Ausgedruckt am: 24.12.2024 um 02:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo AndiStroebi!
Schau Dir mal den "Scripting Guy"-Artikel "Determining a User’s Group Memberships" an ...
Grüße
bastla
Schau Dir mal den "Scripting Guy"-Artikel "Determining a User’s Group Memberships" an ...
Grüße
bastla
Servus,
also ich nutze: http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/ und übergebe das ganze dann an Excel bzw. starte es schon aus Excel heraus.
Gruß
eazy_isi
also ich nutze: http://www.faq-o-matic.net/2011/07/06/jos-version-3-1/ und übergebe das ganze dann an Excel bzw. starte es schon aus Excel heraus.
Gruß
eazy_isi
Hallo AndiStroebi!
und dann per "
Grüße
bastla
Ich sollte aber wissen ob ein User ein Mitglied einer bestimmten Gruppe ist. Hört sich zwar fast gleich an, ist aber ein anderer Ansatz.
Die (für mich) einfachste Lösung wäre, alle Gruppen mit einem passenden Trennzeichen (zB "#") in einen String (im Beispiel unten Variable "Groups
") zu packen - sähe dann etwa so aus:#Drucker1#Drucker4#Drucker5#
InStr()
" abzufragen:If InStr(Groups, "#" & TheGroup & "#") > 0 Then WScript.Echo "ist in Gruppe " & TheGroup
bastla
Hallo AndiStroebi!
Ich muss allerdings zugeben, dass die Scripting Guys ein Leerzeichen vergessen haben , daher (aber zumindest das Testen überlasse ich Dir):
Grüße
bastla
Jetzt würde ich ...
Hast Du denn noch nicht?ob er direkt in einer der Hauptgruppen ist
Hast Du Dir den verlinkten Artikel / das Script überhaupt angesehen? Wenn ja, solltest Du eigentlich gemerkt haben, dass es darin genau darum geht, auch verschachtelte ("nested") Gruppen zu berücksichtigen - eine "direkte" Mitgliedschaft bei der Hauptgruppe ist daher nicht nötig ...Ich muss allerdings zugeben, dass die Scripting Guys ein Leerzeichen vergessen haben , daher (aber zumindest das Testen überlasse ich Dir):
On Error Resume Next
Set objUser=GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName)
Set colGroups = objUser.Groups
Groups = "#"
For Each objGroup in colGroups
Groups = Groups & objGroup.CN & "#"
GetNested(objGroup)
Next
If InStr(Groups, "#Drucker1#") > 0 Then WScript.Echo "ist in Gruppe ""Drucker1"""
If InStr(Groups, "#Drucker2#") > 0 Then WScript.Echo "ist in Gruppe ""Drucker2"""
Function GetNested(objGroup)
On Error Resume Next
colMembers = objGroup.GetEx("memberOf")
For Each strMember in colMembers
strPath = "LDAP://" & strMember
Set objNestedGroup = _
GetObject(strPath)
Groups = Groups & objGroup.CN & "#"
GetNested(objNestedGroup)
Next
End Function
bastla