VBS LDAP - Auslesen ob Benutzerkonto deaktiviert ist, wenn nicht...
soll der Benutzer zur Anzahl der Mitglieder einer Gruppe addiert werden.
Hallo zusammen,
ich habe da noch ein Problem mit einem Skript von mir. Ziel ist es, alle Benutzer in den Gruppen einer bestimmten OU auszulesen und in eine Textdatei zu schreiben.
Hier mein bisheriger Code:
So weit so gut, mit der Funktion GetEx() klappt das auch. Allerdings muss ich nun die deaktivierten Benutzer aus den Gruppen von der Anzahl subtrahieren, bzw. gar nicht erst berücksichtigen.
Wie man einen Benutzer deaktivieren kann, habe ich mir schon angesehen, nur leider habe ich keine Antwort auf meine Frage gefunden.
Hat jemand eine Idee? Gerne mit Beispiel anhand des obigen Quellcodes.
Gruß
Simon
Hallo zusammen,
ich habe da noch ein Problem mit einem Skript von mir. Ziel ist es, alle Benutzer in den Gruppen einer bestimmten OU auszulesen und in eine Textdatei zu schreiben.
Hier mein bisheriger Code:
Option Explicit
Dim GROUP, OUNIT, DOMAENE, FSO, RESULTFILE, SOURCEFILE, LIST, RESULT, ANZ, ARRMEMBEROF, MEMBER
Set FSO = CreateObject("Scripting.FileSystemObject")
RESULTFILE = "dat\result.txt"
Set RESULT = FSO.OpenTextFile(RESULTFILE, 2)
RESULT.WriteLine("+++BEGINN RESSOURCENGRUPPEN+++")
'+++++++++++++++++++++++++++++++++++
'Ressourcen-Gruppen Quelle festlegen
SOURCEFILE = "dat\ou_res.txt"
OUNIT = "res"
'+++++++++++++++++++++++++++++++++++
If FSO.FileExists(SOURCEFILE) Then
Set LIST = FSO.OpenTextFile(SOURCEFILE, 1)
Do While Not (LIST.AtEndOfStream)
On Error Resume Next
GROUP = LIST.ReadLine
Set DOMAENE = GetObject("LDAP://blablablubb")
ANZ = 0
ARRMEMBEROF = DOMAENE.GetEx("member")
If (Err.Number = 0) Then
ANZ = UBound(ARRMEMBEROF) + 1
End If
On Error GoTo 0
If (ANZ >= 1) then
RESULT.WriteLine(GROUP)
For Each MEMBER In ARRMEMBEROF
RESULT.WriteLine(MEMBER)
Next
Else
RESULT.WriteLine(GROUP)
End If
Loop
Set LIST = Nothing
End If
RESULT.WriteLine("+++ENDE RESSOURCENGRUPPEN+++")
RESULT.WriteLine("+++BEGINN USERGRUPPEN+++")
'+++++++++++++++++++++++++++++++++++
'User-Gruppen Quelle festlegen
SOURCEFILE = "dat\ou_usr.txt"
OUNIT = "usr"
'+++++++++++++++++++++++++++++++++++
If FSO.FileExists(SOURCEFILE) Then
Set LIST = FSO.OpenTextFile(SOURCEFILE, 1)
Do While Not (LIST.AtEndOfStream)
On Error Resume Next
GROUP = LIST.ReadLine
Set DOMAENE = GetObject("LDAP://blablablubb")
ANZ = 0
ARRMEMBEROF = DOMAENE.GetEx("member")
If (Err.Number = 0) Then
ANZ = UBound(ARRMEMBEROF) + 1
End If
On Error GoTo 0
If (ANZ >= 1) then
RESULT.WriteLine(GROUP & ";" & ANZ)
Else
RESULT.WriteLine(GROUP & ";0")
End If
Loop
Set LIST = Nothing
End If
RESULT.WriteLine("+++ENDE USERGRUPPEN+++")
Set LIST = Nothing
Set RESULT = Nothing
Set FSO = Nothing
Set DOMAENE = Nothing
So weit so gut, mit der Funktion GetEx() klappt das auch. Allerdings muss ich nun die deaktivierten Benutzer aus den Gruppen von der Anzahl subtrahieren, bzw. gar nicht erst berücksichtigen.
Wie man einen Benutzer deaktivieren kann, habe ich mir schon angesehen, nur leider habe ich keine Antwort auf meine Frage gefunden.
Hat jemand eine Idee? Gerne mit Beispiel anhand des obigen Quellcodes.
Gruß
Simon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129990
Url: https://administrator.de/contentid/129990
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo DemseinAdmin und TsukiSan!
Nachdem Ihr die Frage, was die Frage ist, geklärt habt, könntet Ihr das folgende Stück Code testen:
Grüße
bastla
Nachdem Ihr die Frage, was die Frage ist, geklärt habt, könntet Ihr das folgende Stück Code testen:
Set DOMAENE = GetObject("LDAP://blablablubb")
ARRMEMBEROF = DOMAENE.GetEx("member")
ANZ = 0
For i = 0 To UBound(ARRMEMBEROF)
Set User = GetObject("LDAP://" & ARRMEMBEROF(i))
If Not User.AccountDisabled Then
ANZ = ANZ + 1
'WScript.Echo User.sAMAccountName
End If
Next
WScript.Echo ANZ
bastla
Hallo DemseinAdmin,
das ist erklärbar.
in Zeile 3 startest du eine While Do - Schleife und in Zeile 7 setzt du permanent die Variable "Anz" auf NULL.
Setze besser Anz vor die Zeile 3, so ähnlich, wie bastla es schon in seinem Codeschnippsel getan hat.
Dann müsstest du über die EINS hinauskommen.
Gruss
Tsuki
das ist erklärbar.
in Zeile 3 startest du eine While Do - Schleife und in Zeile 7 setzt du permanent die Variable "Anz" auf NULL.
Setze besser Anz vor die Zeile 3, so ähnlich, wie bastla es schon in seinem Codeschnippsel getan hat.
Dann müsstest du über die EINS hinauskommen.
Gruss
Tsuki