Hallo zusammen,
ich habe im technet ein Script gefunden, das genau das erledigt was ich möchte. Das Ablaufdatum der Kennwörter auslesen und ausgeben. Allerdings werden auch als "Alarm" Daten ausgegeben, die ausserhalb des 7 Tage Zeitraums liegen und ich weiß nicht warum.
Hat wer einen Tipp?
#Import des Active Directory Modul Import-Module ActiveDirectory #Ablaufzeitraum $Days="7" #Einstellungen $Date=Get-Date -Format dd-MM-yy((Get-Date).adddays($Days)) $Users=Get-ADUser -SearchBase "OU=01_Benutzer,DC=test,DC=local" -filter {(Enabled -eq $True) -and (PasswordNeverExpires -eq $False)} -Properties DisplayName, msDS-UserPasswordExpiryTimeComputed, Mail | Where-Object {$_.DisplayName -ne $null} | Select Mail, DisplayName,@{Name="ExpiryDate";Expression={([datetime]::fromfiletime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime}} #Schleife ob OK oder Alarm und Ausgabe auf Bildschirm sowie CSV foreach ($Entry in $Users) { $EntryDate = Get-date($Entry.ExpiryDate) -Format dd-MM-yy if ($EntryDate -lt $Date) { Write-Host "Alarm: The User" $entry.DisplayName "with Mailaddress:" $Entry.Mail "will expire at" $EntryDate -ForegroundColor Red $FilePath = '{0}\Temp\Kennwortalter.csv' -f $env:SystemDrive; $entry.DisplayName,$Entry.Mail,$EntryDate -join ',' | Out-File -FilePath $FilePath -Append -Width 200; } else { Write-host "OK: The User" $entry.DisplayName "with Mailaddress:" $Entry.Mail "will expire at" $EntryDate -ForegroundColor green } }
Ausgabe:
Mustermann Max, max.mustermann@test.local,08-07-16 | |||||
Mustermann Silvia,silvia.mustermann@test.local,02-09-16 | |||||
Mustermann Martin,martin.mustermann@test.local,12-08-16 |
Wenn ich das heutige Datum 08.07.2016 nehme und 7 Tage drauf rechne, sind 02.09. und 12.08. fehlerhaft.