Zum Inhalt wechseln


Foto

PS: Ablaufdatum mit aktuellem Datum vergleichen


  • Bitte melde dich an um zu Antworten
4 Antworten in diesem Thema

#1 Kuddel071089

Kuddel071089

    Senior Member

  • 325 Beiträge

 

Geschrieben 07. November 2017 - 12:55

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



#2 Dukel

Dukel

    Board Veteran

  • 9.299 Beiträge

 

Geschrieben 07. November 2017 - 13:09

Schau dir die Inhalte der Variablen $aktuellesdatum und $userdatum an. Evtl. über die Konsole oder als Ausgabe.


Stop making stupid people famous.


#3 testperson

testperson

    Board Veteran

  • 4.597 Beiträge

 

Geschrieben 07. November 2017 - 13:14

Hi,

 

(Get-Date).AddDays(-7) würde dir z.B. das Datum von vor 7 Tagen liefern.
 

 

Gruß

Jan


Good morning, that's a nice TNETENNBA!

#4 Kuddel071089

Kuddel071089

    Senior Member

  • 325 Beiträge

 

Geschrieben 07. November 2017 - 13:27   Lösung

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 von Kuddel071089, 07. November 2017 - 13:27.


#5 Dukel

Dukel

    Board Veteran

  • 9.299 Beiträge

 

Geschrieben 07. November 2017 - 13:45

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

Stop making stupid people famous.