Jump to content

Empfohlene Beiträge

Hallo zusammen,

 

ich bin gerade dabei ein Skript zu schreiben, welches unser AD von Altlasten befreien soll.

 

Ziel ist es, alle User zu deaktivieren, die sich länger als 180 Tage nich am System angemeldet haben.

 

Dazu habe ich folgendes Skript geschrieben, wo ich leider am Vergleich scheitere

$tage = 180

#Abfrage aller aktiven User
$aktive_user = Get-ADUser -Filter {enabled -eq $true} -SearchBase "OU=****,DC=****-ad,DC=local" -Properties * | Sort

#Ablaufdatum von vor X Tagen definieren
$ablaufdatum = (get-date -date ((get-date).AddDays(-$tage)) -Format "dd.MM.yyyy");

"Heute vor 180 Tagen:  $ablaufdatum"
""

#Abfrage der letzten Anmeldung jedes Users an den drei DCs
foreach($user in $aktive_user) {$letzte_anmeldung_dc1 = Get-ADUser $user.SamAccountName -Properties * -Server DC1 | Select LastLogon$letzte_anmeldung_dc2 = Get-ADUser $user.SamAccountName -Properties * -Server DC2 | Select LastLogon$letzte_anmeldung_dc3 = Get-ADUser $user.SamAccountName -Properties * -Server DC3 | Select LastLogon#Datum formatieren fü den Vergleich$letzte_anmeldung_dc1 = [dateTime]::FromFileTime($letzte_anmeldung_dc1.LastLogon).ToString('dd.MM.yyyy')$letzte_anmeldung_dc2 = [dateTime]::FromFileTime($letzte_anmeldung_dc2.LastLogon).ToString('dd.MM.yyyy')$letzte_anmeldung_dc3 = [dateTime]::FromFileTime($letzte_anmeldung_dc3.LastLogon).ToString('dd.MM.yyyy')#Check ob der User sich länger als X Tage nicht angemeldet hatif($letzte_anmeldung_dc1 -lt $ablaufdatum -and $letzte_anmeldung_dc2 -lt $ablaufdatum -lt $letzte_anmeldung_dc3 -gt $ablaufdatum)) {

"Der User $($user.SamAccountName) ist abgelaufen / Letzte Anmeldungen: DC1: $letzte_anmeldung_dc1, DC2: $letzte_anmeldung_dc2; DC3: $letzte_anmeldung_dc3"

}



}

 

Irgendwie wird beim Vergleich nur der erste Tag im Datum verglichen.

 

 

Vielen Dank schon einmal

bearbeitet von Kuddel071089

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

nicht selbst bauen, das Thema ist seit Jahren abschließend gelöst.

 

[Leichenzählung in Active Directory | faq-o-matic.net]

https://www.faq-o-matic.net/2011/08/29/leichenzhlung-in-active-directory/

 

Gruß, Nils

Hallo Nils,

 

vielen Dank für die schnelle Antwort.

 

Mit dem PS Skript wollte ich, wenn denn alles klappt, den Usern ein Ablaufdatum setzten bzw. die ganz alten direkt deaktivieren.

 

Wenn ich jetzt eine Auswertung mit oldcmp machen, müsste ich dann also die Daten verarbeiten richtig?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

ich verstehe nicht, was du vorhast. Ablaufdatum?

Deaktivieren kann OldCmp direkt.

 

Falls du unbedingt was mit PowerShell bauen willst, dann nimm das AD-Feld lastLogonTimestamp. Das ist für Vergleiche der hier erwünschten Art gedacht und wird üer alle DCs repliziert, du musst also nicht alle DCs auslesen. Den Wert lastLogon und den Vergleich über die DCs braucht man nur, wenn man aktuelle Daten benötigt (letzte Anmeldung in den letzten wenigen Tagen), aber die brauchst du hier ja gerade nicht.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

ich verstehe nicht, was du vorhast. Ablaufdatum?

Deaktivieren kann OldCmp direkt.

 

Falls du unbedingt was mit PowerShell bauen willst, dann nimm das AD-Feld lastLogonTimestamp. Das ist für Vergleiche der hier erwünschten Art gedacht und wird üer alle DCs repliziert, du musst also nicht alle DCs auslesen. Den Wert lastLogon und den Vergleich über die DCs braucht man nur, wenn man aktuelle Daten benötigt (letzte Anmeldung in den letzten wenigen Tagen), aber die brauchst du hier ja gerade nicht.

 

Gruß, Nils

 

Was ich vorhabe:

 

Wenn sich ein User länger als 180 Tage nicht angemeldet hat, wird sich User per Ablaufdatum gesperrt. Falls er jetzt nach z.B. 200 Tagen aus einer langen Krankheit zurück kommt, wird der User wieder freigeschaltet.

 

Wenn sich ein User länger als z.B. 360 Tage nicht angemeldet hat. wird er deaktiviert und alle Gruppenmitgliedschaften entzogen...

 

Ich werde es dann mal mit LogonTimeStamp versuchen....

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

warum so ein umständliches Verfahren?

 

180 Tage - deaktivieren. Geht direkt per OldCmp.

360 Tage - z.B. verschieben in eine andere OU - geht direkt per OldCmp. Gruppenmitgliedschaften entfernen - könnte ein simples Skript machen, das einfach alle User in der OU abklappert.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×