pago159
Goto Top

Denkfehler bei Kennwortskript

Hi,

ich habe mich mal wieder an einem Skript in PowerShell geübt, wobei ich wohl einen Denkfehler in dem Skript habe.
Die Ausgabe, wann das Kennwort abläuft scheint korrekt zu sein, allerdings erhalte ich die Meldung des bald ablaufenden Kennworts leider viel zu früh. Das Kennwort läuft im November ab und ich werde nun schon gewarnt.
Wo habe ich hier den Denkfehler sitzen?

Danke schon mal für eure Hilfe.
Lg Pago

$EntryDate = ""  
$Entry = ""  
$Date = ""  
$Days = ""  
$Users = ""  


#Import Active Directory Module
Import-Module ActiveDirectory
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")   

#Tage bis zum Kennwortablauf
$Days="14"  

#Einstellungen
$Date=Get-Date -Format dd.MM.yyyy-HH:mm:ss((Get-Date).adddays($Days))

$Users=Get-ADUser $Env:USERNAME -Properties DisplayName, msDS-UserPasswordExpiryTimeComputed | Where-Object {$_.DisplayName -ne $null} | Select DisplayName,@{Name="ExpiryDate";Expression={([datetime]::fromfiletime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime}}   

#Magic
foreach ($Entry in $Users) {
    $EntryDate = Get-date($Entry.ExpiryDate) -Format dd.MM.yyyy
    $EntryTime = Get-date($Entry.ExpiryDate) -Format HH:mm:ss

    if ($EntryDate -lt $Date) {
       

    # Ausgabe der Warnmeldung 14 Tage vor Kennwortablauf, dass das Kennwort geändert werden soll. Und Abfrage ob bei der nächsten Anmeldung das Kennwort geändert werden soll!
        [System.Windows.Forms.MessageBox]::Show("Achtung $Date, Ihr ($Env:USERNAME) Kennwort läuft am $EntryDate um $EntryTime Uhr ab. Möchten Sie Ihr Kennwort bei der nächsten Anmeldung ändern?" , "WARNUNG KENNWORT LÄUFT BALD AB!!!",3, [System.Windows.Forms.MessageBoxIcon]::Exclamation)  
		}
        #Bei Antwort YES wird ein Flag gesetzt, welches bei der nächsten Anmeldung eine Kennwortänderung verlangt.
        If($Result -eq "Yes")  
        {
       Set-ADUser $_ -ChangePasswordAtLogon $true
       }
       #Bei der Antwort NO wird abgebrochen und nichts unternommen
       elseif ($Result -eq "No")  
       {
       break
       }
       #Bei der Antwort ABBRECHEN wird abgebrochen und nichts unternommen
       else
       {
       break
       }
    
    else 
    {
       # Wenn das Kennwort noch lange genug gültig ist, passiert hier nichts! 
    }
}

Content-ID: 283015

Url: https://administrator.de/contentid/283015

Ausgedruckt am: 24.11.2024 um 13:11 Uhr

122990
122990 16.09.2015 aktualisiert um 10:24:29 Uhr
Goto Top
Moin,
das liegt an deinen sehr sehr komischen Datumsangaben, vor allem in Zeile 16
Hier findest du ein Skript das das macht was du willst


Gruß grexit