Veröffentlicht 27. September 201113 j 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!
29. September 201113 j 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"" } }
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.