Problem bei Shellcode: Programm rechnet mit Datum falsch
Hallo Liebe IT-Gemeinde,
ich habe bereits viele Infos aus dem Forum nutzen können ,aber nun bin ich soweit das ich mich bei euch melden muss.
Sind und zweck des ganzen:
User über Ihr Ablaufen des AD Passworts zu erinnern.
Diesen Code habe ich im Netz gefunden.
Die Send-MailMessage funktioniert noch nicht aber dies ist nicht das eigentliche Problem
Ich habe Probleme bei den Treffern in der
Anweisung.
Hier sind meine Ergebnisse:
Administraot passt, Stepenishchenkooo passt auch, aber warum sind die weiteren Ergebnisse ebenfalls Treffer?
Ich hoffe Ihr k önnt mir helfen.
Vielen Dank
Fizzo361
ich habe bereits viele Infos aus dem Forum nutzen können ,aber nun bin ich soweit das ich mich bei euch melden muss.
Sind und zweck des ganzen:
User über Ihr Ablaufen des AD Passworts zu erinnern.
$warnung_tage = 6
$smtpserver = "blubb"
$mailfrom = "blubb"
$betreff = "Dein Passwort läuft in 7 Tagen ab!"
$MailTo = "blubb"
$mailbody = "<div>
<p>Hallo,</p>
<p>Dein Kennwort wird in 7 Tagen ablaufen. Bitte melde Dich an der Dom&auml;ne an und &auml;ndere dein Passwort</p>
<p>Vielen Dank und viele Gr&uuml;&szlig;e</p>
</div>"
# Benötigte Module einbinden
Import-Module ActiveDirectory
# Berechne das Datum + Anzahl der Tage zum späteren Vergleich
$warnung_datum = Get-Date -Format dd.MM.yyyy((Get-Date).adddays($warnung_tage))
# Filter alle AD User und die benötigten Attribute. Weiterhin wird das Ablaufdatum des
# Passwortes aus dem AD-Attribut msDS-UserPasswordExpiryTimeComputed umgerechnet und
# in umbenannt in PWAblaufdatum
$aduser=Get-ADUser -filter {(Enabled -eq $True) -and (PasswordNeverExpires -eq $False)} -Properties Mail, DisplayName, msDS-UserPasswordExpiryTimeComputed | Select Mail, DisplayName, @{Name="PWAblaufdatum";Expression={([datetime]::fromfiletime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime}}
# Schleife für jeden User aus $aduser
foreach ($i in $aduser)
{
# Setze Variable für aktuellen User mit Passwortablaufdatum
$PWAblaufdatum = Get-date($i.PWAblaufdatum) -Format dd.MM.yyyy
$ausgabe1 = $i.DisplayName
$ausgabe2 = $i.Mail
"Ausgabe: $PWAblaufdatum, $ausgabe1, $ausgabe2, $warnung_datum"
# Wenn die Werte gleich sind dann sende eine Mail
if($PWAblaufdatum -le $warnung_datum)
{
"Treffer"
#"Ausgabe1: $ausgabe1"
#"Ausgabe2: $ausgabe2"
#Send-MailMessage -SmtpServer $smtpserver -From "<test@sbcbcprouu.de>" -To "<test@sbcbprouu.de>" -Subject $betreff -BodyAsHtml $mailbody
}
else
{
"Keine Treffer"
}
}
Die Send-MailMessage funktioniert noch nicht aber dies ist nicht das eigentliche Problem
Ich habe Probleme bei den Treffern in der
if($PWAblaufdatum -le $warnung_datum)
Hier sind meine Ergebnisse:
Ausgabe: 30.07.2019, Administrator, admin@stest.local, 30.05.2019
Keine Treffer
Ausgabe: 01.02.2018, Stepenishchenkooo, Yulias, , 30.05.2019
Treffer
Ausgabe: 20.08.2019, Schaendler, Maria, , 30.05.2019
Treffer
Ausgabe: 28.05.2019, Quruant, Roberth, , 30.05.2019
Treffer
Ausgabe: 28.07.2019, Muschkesky, Denyese, , 30.05.2019
Treffer
Ich hoffe Ihr k önnt mir helfen.
Vielen Dank
Fizzo361
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 455442
Url: https://administrator.de/contentid/455442
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
11 Kommentare
Neuester Kommentar
Zitat von @Fizzo361:
Administraot passt, Stepenishchenkooo passt auch, aber warum sind die weiteren Ergebnisse ebenfalls Treffer?
weil du zwei Strings miteinander vergleichst. Wozu soll das -Format dd.MM.yyyy gut sein?Administraot passt, Stepenishchenkooo passt auch, aber warum sind die weiteren Ergebnisse ebenfalls Treffer?
Moin,
Nö. 2 !> 3 Das alte Problem mit dem numerischen, dem alphanumerischen und dem Datumsvergleich. Schreibst Du das Datum in einen String, dann wird das ein alphanumerischer Vergleich. Und da gilt 2<3 und nicht 3<2.
Deklariere die Variablen als Datum und dann sollte das auch mit dem Datumsvergleich klappen.
hth
Erik
Zitat von @Fizzo361:
20.08.2019 ist doch größer als 30.05.2019, daher dürfte es kein Treffer sein oder verstehe ich das falsch,
20.08.2019 ist doch größer als 30.05.2019, daher dürfte es kein Treffer sein oder verstehe ich das falsch,
Nö. 2 !> 3 Das alte Problem mit dem numerischen, dem alphanumerischen und dem Datumsvergleich. Schreibst Du das Datum in einen String, dann wird das ein alphanumerischer Vergleich. Und da gilt 2<3 und nicht 3<2.
PS C:\> $str_datum = get-date -format dd.MM.yyyy((Get-Date).adddays(20))
PS C:\> $str_datum.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Deklariere die Variablen als Datum und dann sollte das auch mit dem Datumsvergleich klappen.
hth
Erik
Zitat von @Fizzo361:
ich hätte auch kein Problem wenn man die Datumswerte miteinander vergleicht, aber wie stelle ich das an?
lass die Formatierung wegich hätte auch kein Problem wenn man die Datumswerte miteinander vergleicht, aber wie stelle ich das an?
PS C:\>$str_datum = get-date (Get-Date).adddays(20)
PS C:\> $str_datum.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType
Moin,
So ist es, denn:
Liebe Grüße
Erik
So ist es, denn:
PS C:\> $(get-date -date $(get-date).adddays(6)).gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType
PS C:\> $(get-date -date $(get-date).adddays(6) -format "yyMMdd").gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Liebe Grüße
Erik