Jump to content

Von einem User die "Member of" auslesen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe es geschafft, mittels VBS in einer Gruppe die Member in eine TXT auszulesen.

 

Jetzt würde ich gerne ein kleines Script schreiben, wo bei Usern die Gruppenzugehörigkeit in ein TXT File schreibt, scheitere aber.

 

Die Suche hat mir nicht geholfen. Script Center von MS auch nicht.

 

Also ich will die vbs starten, dann soll eine input Box kommen in der ich den

"displayname" eingebe. Anschließend soll der User in meiner definierten Domäne gesucht werden (ldap über ein Query?), bei Erfolg dann die Member of Liste in eine TXT Datei ausgegeben werden.

 

Ich bitte um Hilfe, evtl. gibt es schon etwas das ich nur auf meine Wünsche anpassen muss. Was ich auf keinen Fall will, ist dass ich Dinge wie OU und Username angeben muss, da ich nicht auf Anhieb weiss in welcher OU sich der User befindet, dessen member of ich auslesen möchte.

 

Danke im voraus!

Link zu diesem Kommentar

Super, danke NilsK, werde nacher mal versuchen was testweise zu bauen um zu sehen ob ich ANR verstanden/einsetzen kann.

 

Nur wie lese ich dann von dem User die Einträge unter "Member of" aus?

Z.b. wenn ich eine AD Gruppe als Objekt habe, lese ich die Members einfach mit einer Schleife aus:

 

For Each user In obJGroup.Members
...

 

Hier gibt es aber kein "Member of", oder? Zumindest hat es mal nicht funktioniert.

Link zu diesem Kommentar

Moin,

 

naja, indem du halt das Feld "memberOf" ausliest ...

 

Die Gruppe hat ein Feld "member", in dem ihre Mitglieder stehen. Jedes Objekt, das Mitglied sein kann (also User, Gruppen, Computer, ...), hat ein Feld "memberOf", in dem steht, welchen Gruppen es angehört. Dieses Feld wird im Moment der Abfrage berechnet.

 

Gruß, Nils

Link zu diesem Kommentar

Okay, habe es hinbekommen, aber auf eine unschöne Variante. Ich kann jetzt von einem User die Gruppen, denen der User angehört, auslesen und in eine TXT Datei schreiben. Danke @NilsK, dein Script hat mir viel weitergeholfen. Hier mein Code (ich bitte um Verbesserungsvorschläge):

 

strUsername = InputBox("Geben Sie den Usernamen (z.B. mustermann-dieter) ein.", "+++ User auslesen +++")

Set objRoot = GetObject("LDAP://rootDSE")
strDomainName = objRoot.Get("DefaultNamingContext")

strSQL = "SELECT adspath FROM 'LDAP://" & strDomainName & "' WHERE SAMAccountName='" & strUsername & "'"

Set objConnect = CreateObject("ADODB.Connection")
objConnect.Provider = "ADsDSOObject"
objConnect.Open "Active Directory Provider"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnect

objCommand.CommandText = strSQL

'Query ausführen, User finden
Set objRS = objCommand.Execute

On Error Resume Next
'Unschön, aber es funktioniert. Evtl kann man das anderst schreiben?
For Each objekt In objRS.Fields

strUser = objekt.value

Next
On Error Goto 0

'Falls kein Wert vrohanden ist
If strUser = "" Then

MsgBox "User nicht gefunden! Das Script bricht nun ab."
WScript.quit

End If

'Die Suche war erfolgreich, ADSPath wird jetzt verwendet um User zu holen
Set strfinalUser = GetObject("" & strUser & "")

For Each strMember In strfinalUser.memberof

strMember2 = InStr(strMember, ",")
strMember3 = Left(strMember, strMember2 - 1)
strMember4 = InStr(strMember3, "=")
strMember5 = Mid(strMember3, strMember4 + 1, strMember2)

strOutput =  output & strMember5 & vbNewLine

strLog = "C:\MemberOf-LOG.txt"
Set objX = CreateObject("Scripting.FileSystemObject")
Set objLog = objX.OpenTextFile(strLog,8,True,TristateUseDefault)
objLog.Write strOutput
objLog.Close

Next

MsgBox "Fertig!"
WScript.quit

 

Wie gesagt ich glaube das geht kürzer udn schöner, aber es funktioniert! =)

Link zu diesem Kommentar

Ist doch ganz easy, wenn man das Script ausführt was ich gepostet habe, dann wird man aufgefordert einen Usernamen einzugeben. Dieser sollte natürlich im AD vorhanden sein.

Dann wird der User ermittelt und die Einträge unter "Member Of" in eine TXT Datei geschrieben.

 

Das Script funktioniert, aber ich habe das Gefühl das das nicht die ideale Lösung (siehe Code) sein kann. Daher meine Frage, was man verbessern/optimieren könnte.

 

Denn mit meinem Script bin ich schon an die Grenze gestoßen: Was ist, wenn ich von den Gruppen, die ich unter "Member Of" auslese noch zustäzlich die dazugehörige eMail Adresse oder sontige AD Attribute ermitteln möchte? Dann müsste ich erneut einen großen Teil coden, was evtl. mit einem Zweizeiler erledigt wäre.

Link zu diesem Kommentar

Warum ich die Gruppen von "Member of" eines bestimmten Users auslesen möchte? Ist das nicht egal? Aber bitte: Ich habe das Skript auf dem Desktop liegen und wenn ein User mit seinen Problemchen anruft, gebe ich so schnell seinen Benutzernamen ein und erhalte auf dem Desktop eine CSV Datei mit den Gruppen, die bei ihm unter "Member of" zu finden sind. Da viele Berechtigungen über Gruppen gesteuert werden, kann ich dort für mein Aufgabengebiet den Fehler schnell erkennen. Ansonsten muss ich mich erst auf den Server verbinden, AD U&C aufrufen, den User suchen, anklicken etc...

also eine Arbeitserleichterung. Und wie gesagt es funktioniert jetzt, meine Frage ist nur an die Profis ob es an meinem Script Code etwas zu optimieren gäbe.

 

Danke für den Link, stöber ich dann mal durch.

Link zu diesem Kommentar

Moin,

 

zwanzig Jahre IT-Erfahrung sagen mir, dass es sinnvoll ist zu wissen, was denn das eigentliche Ziel ist. Sonst diskutiert man die Probleme einer Lösung und nicht die Lösung eines Problems.

 

Deine Aufgabe könntest du z.B. ohne jedes Scripting mit der Eingabe von "net user USERNAME /domain" in einem CMD-Fenster lösen.

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...