Dynadrate 10 Geschrieben 24. Juni 2008 Melden Teilen Geschrieben 24. Juni 2008 Hallo! Ich hab unterhalb von \\domain\users einen Haufen Userverzeichnisse. Nun war es bislang so, dass Userverzeichnisse von Benutzern, die gar nicht mehr existierten händisch gelöscht worden sind. Das scheint in der Vergangenheit nicht wirklich beherzigt worden zu sein, und so gibt es nun Verzeichnisleichen. Ich würde gerne ein Script laufen lassen, das überprüft ob es zu jedem Verzeichnis noch einen entsprechenden User gibt. Das ganze sollte in einer Textdatei protokolliert werden, damit man tätig werden kann. Ich weiß leider nicht wie man das vom AD abfragen kann. ...der Hammer wäre natürlich, wenn das Script auch noch zwischen "nicht existenten" und deaktivierten Konten unterscheiden würde! Kann mir da jemand auf die Sprünge helfen? Besten dank!! Zitieren Link zu diesem Kommentar
Dr Kiffer 10 Geschrieben 25. Juni 2008 Melden Teilen Geschrieben 25. Juni 2008 Hallo Dynadrate, wenn die Ordnernamen gleich loginnamen sind versuch das doch mal. basestr="dc=domain,dc=local" ListFolderContents("P:\Test") Sub ListFolderContents(path) set fs = CreateObject("Scripting.FileSystemObject") set folder = fs.GetFolder(path) For each item in folder.SubFolders items = item MyArray = Split(items,"\") check_user MyArray(Ubound(MyArray)),basestr Next set folder = Nothing set fs = Nothing End Sub wscript.echo "fertig" Function check_user(user,basestr) On Error Resume Next Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = _ "SELECT distinguishedName,Name FROM 'LDAP://" & basestr & "' WHERE objectCategory='user' " & _ "AND sAMAccountName='" & user & "'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst If err.number <> 3021 then dn = objRecordSet.Fields("distinguishedName") Set objUser = GetObject ("LDAP://" & dn & "") If objUser.AccountDisabled = FALSE Then Else write_log "Den User " & user & " gibt es, er ist aber deaktiviert." End If Else write_log "Den User " & user & " gibt es nicht. Das Verzeichnis kann gelöscht werden" End If End Function Sub write_log(text) set fs = CreateObject("Scripting.FileSystemObject") Set LogFile = FS.OpenTextFile("homedir.log", 8, True) LogFile.WriteLine text LogFile.Close fs = nothing End Sub ..natürlich noch basestr und den Pfad zu den Ordnern anpassen. Hier wird eine log erstellt die dir sagt, welches Konto nicht mehr existiert oder welches gelöscht ist. Wie immer. Alles ohne Gewähr. Einfach mal probieren. Gruß Danny Zitieren Link zu diesem Kommentar
Dynadrate 10 Geschrieben 29. Juni 2008 Autor Melden Teilen Geschrieben 29. Juni 2008 Danke! funktioniert! Für mich der Grund, mich mal eingängig mit vbs zu beschäftigen! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.