flex10 Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 Hallo zusammen, ich bin auf der Suche nach einem Script (am besten PowerShell), welches inaktive Benutzer (z.B. in einem Zeitraum von 60 Tagen) mittels AD-Attribut "LastLogonTimeStamp" ermittelt und dann deaktiviert. Wäre für jede Hilfe dankbar! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentDemise Geschrieben 27. September 2011 Teilen Geschrieben 27. September 2011 schau dir mal das ps modul activedirectory an Search\Modify Objects Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flex10 Geschrieben 29. September 2011 Autor Teilen Geschrieben 29. September 2011 Falls jemand noch auf der Suche ist... cls # Domänenname, Anzahl Tage und auszuschließende Benutzer $Subtree = "DC=meine,DC=domäne,DC=de" $NbDays = "60" $MemberExceptions = "(!(|(CN=sys*)(CN=SAPS*)(CN=c10*)))" # Aktuelles Datum auslesen $CurrentDate = [System.DateTime]::Now # Konvertierung der lokalen Uhrzeit ins GMT-Format $currentDateUtc = $currentDate.ToUniversalTime() # Definieren der gesamten LDAP-URL $LdapURL = "LDAP://" + $Subtree # Erstellung eines Suchobjekts $searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$LdapURL) # Auszulesende AD-Werte $searcher.PropertiesToLoad.Add("displayName") >$null $searcher.PropertiesToLoad.Add("sAMAccountName") >$null $searcher.PropertiesToLoad.Add("lastLogonTimeStamp") >$null # Umwandlung LastLogonTimeStamp in Uhrzeit-Format $lastLogonTimeStampLimit = $currentDateUtc.AddDays(- $NbDays) $lastLogonIntervalLimit = $lastLogonTimeStampLimit.ToFileTime() Write-Host "Suche Benutzer die sich seit dem"$lastLogonTimeStampLimit" nicht angemeldet haben.." Write-Host "" $searcher.Filter = "(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(lastLogonTimeStamp<=" + $lastLogonIntervalLimit + ")( "+ $MemberExceptions +"))" # Ausführen der LDAP Suchanfrage im AD $users = $searcher.FindAll() if ($users.Count -eq 0) { Write-Host "Es müssen keine Benutzer deaktiviert werden." } else { foreach ($user in $users) { # Benutzerwerte auslesen [string]$adsPath = $user.Properties.adspath [string]$displayName = $user.Properties.displayname [string]$samAccountName = $user.Properties.samaccountname [string]$lastLogonInterval = $user.Properties.lastlogontimestamp # Benutzerkonto deaktivieren $account=[ADSI]$adsPath $account.psbase.invokeset("AccountDisabled", "True") $account.setinfo() # Datum und Zeit ins lokale Format umwandeln $lastLogon = [System.DateTime]::FromFileTime($lastLogonInterval) Write-Host " Deaktiviere Benutzerkonto"$displayName" ("$samAccountName") | Letzter Login am "$lastLogon"" } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.