Kuddel071089 9 Geschrieben 7. November 2017 Melden Teilen Geschrieben 7. November 2017 Hallo zusammen, bei uns bekommen externe Mitarbeiter bei der Einrichtung immer ein Ablaufdatum und werde in eine Gruppe aufgenommen, wo alle externen MAs gelistet sind. Jetzt möchte ich ein PS Skript schreiben, welches die User, sofern sie ein Mail-Adresse haben, bei X Tagen vor dem Ablaufdatum benachrichtigen. Ich dachte da so an 7 Tage, 5 Tage und 1 Tag. Mein Ansatz wäre jetzt ersteinmal die Mitglieder der Gruppe abzufragen. Dann würde ich mir eine Schleife bauen, in der für jeden User das Ablaufdatum abgefragt wird und mit dem aktuellem Datum verglichen wird. Leider hänge ich gerade ein wenig an dem Vergleich der beiden Daten. cls $user = Get-AdUser Test-5 -Properties * | Select AccountExpirationDate $userdatum = $user.AccountExpirationDate $aktuellesdatum = Get-Date if($userdatum -gt $aktuellesdatum) {"NICHT ABGELAUFEN"} Im Vergleich müsste man ja vom aktuellen Datum irgendwie X Tage abzeigen und dann vergleichen. Hat jemand eine Idee ? Vielen Dank schon einmal Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 7. November 2017 Melden Teilen Geschrieben 7. November 2017 Schau dir die Inhalte der Variablen $aktuellesdatum und $userdatum an. Evtl. über die Konsole oder als Ausgabe. Zitieren Link zu diesem Kommentar
testperson 1.707 Geschrieben 7. November 2017 Melden Teilen Geschrieben 7. November 2017 Hi, (Get-Date).AddDays(-7) würde dir z.B. das Datum von vor 7 Tagen liefern. Gruß Jan Zitieren Link zu diesem Kommentar
Beste Lösung Kuddel071089 9 Geschrieben 7. November 2017 Autor Beste Lösung Melden Teilen Geschrieben 7. November 2017 (bearbeitet) Habe mir die entsprechenden Tage in eine Variable geschrieben: $aktuelles_datum = Get-Date -Format dd.MM.yyyy $7_tage = get-date -date $(get-date).adddays(+7) -format dd.MM.yyyy $5_tage = get-date -date $(get-date).adddays(+5) -format dd.MM.yyyy $1_tag = get-date -date $(get-date).adddays(+1) -format dd.MM.yyyy Jetzt muss ich nur noch das Ablaufdatum wie oben formatieren $user = Get-ADUser Test-5 -Properties * | Select AccountExpirationDate $user_ablaufdatum = $user.AccountExpirationDate EDIT: Okay, habs gelöst: $user = Get-ADUser Test-5 -Properties * | Select AccountExpirationDate $user_ablaufdatum = $user.AccountExpirationDate $user_ablaufdatum = ($user_ablaufdatum.tostring("dd.MM.yyyy")) bearbeitet 7. November 2017 von Kuddel071089 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 7. November 2017 Melden Teilen Geschrieben 7. November 2017 Waaaah. Du willst nicht ein Datum umformatieren um zu vergleichen. Du willst zwei Datumsobjekte haben und diese (incl. dem Versatz) vergleichen. $user_ablaufdatum = (Get-ADUser Test-5 -Properties AccountExpirationDate).AccountExpirationDate # Damit sparst du die Variable $user $user_ablaufdatum Mittwoch, 13. Dezember 2017 00:00:00 (Get-Date).AddDays(-7) Dienstag, 31. Oktober 2017 14:40:01 # Vergleich: $user_ablaufdatum -gt (Get-Date) True $user_ablaufdatum -gt (Get-Date).AddDays(50) False Statt einem Vergleich kannst du auch die Daten voneinander abziehen und dieses Ergebniss verarbeiten (via Switch). $user_ablaufdatum - (Get-Date) Days : 35 Hours : 9 Minutes : 13 ... ($user_ablaufdatum - (Get-Date)).days 35 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.