Jump to content

Alte Userverzeichnisse protokollieren


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 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!!

Link zu diesem Kommentar

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

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...