edvhammel
Goto Top

Auslesen des Passwortablaufdatums und Mailbenachrichtigung

Hi Admin-Gemeinde,

wir haben aktuell umgestellt auf DC Windows 2008 R2 und als Client Win7 64 bit.
Per GPO bekommen die User 7 Tage vor Ablauf Ihres Kennworts den Ballon eingeblendet, dass Ihr Passwort abläuft.
Leider sehen bzw. übersehen unsere Benutzer diesen Hinweis.

Nun hab ich mir gedacht es muss doch möglich sein, das expire Date des AD Passwort auszulesen und dann den AD Benutzern eine Mail zu schicken mit dem Hinweis: "Ihr Passwort läuft in X Tagen ab!"

Ich hab auch schon mal gegoogelt und bin auf folgendes Skript gestossen:
 
###############################################################################

function write-Eventlog([string]$uname)
{

  $text = "Das Kennwort für den Benutzer " + $uname + " wurde zur Änderung aktiviert."  

  $Eventlog = new-object System.Diagnostics.EventLog('Application')  
  $Eventlog.MachineName = "."  
  $Eventlog.Source = "Kennwort-Manager"  
  $Eventlog.WriteEntry($text)

}

function send-EMail([string]$uname, [string]$email, [int]$number)
{
  #Mailserver  
  $server = "192.168.1.20"  
  $from = " kennwort@hier.local"  
  $subject = "Ihr Domainen-Kennwort läuft demnächst ab!"  
  $template = "C:\powershell\password.html"  

  $body = get-Content $template
  $replace=[regex]"#TAGE#"  
  $body = $replace.Replace($body,$number,1)
  $replace=[regex]"#NAME#"  
  $body = $replace.Replace($body,$uname,1)

  [System.Net.Mail.MailMessage]$message = New-Object System.Net.Mail.MailMessage($from, $email, $subject, $body)
  $message.IsBodyHTML = $true

  if ($number -eq 1) {$message.Priority ="High"}  

  [System.Net.Mail.SmtpClient]$smtpclient = New-Object System.Net.Mail.SmtpClient($server)
  $smtpclient.Send($message)

}

### Begin Main

$days = "7"  
$container = "OU=Benutzer,DC=hier,DC=local"  
$query = "(&(objectclass=user)(useraccountcontrol=512))"  

for ($day = 0; $day -le $days; $day++)
{

   $user =""  
   $users = Get-ADUser -LdapFilter $query -SearchBase $container -SearchScope:Subtree | Where {$_.PasswordExpires.Date -eq ([datetime]::Now.Date.AddDays($day))}

    foreach ($user in $users)
     {
       if ($user -ne $null)
       {
        
           if ($day -eq 0)
           {
             write-Eventlog $user.Name
             set-aduser -identity $user.NTAccountName -UserMustChangePassword $true
           }
           else
           {
             send-EMail $user.Name $user.EMail $day
           }
       }
     }
}

### End Main 

Leider bin ich aber noch Powershell Neuling und bekomme es nicht hin, das Ganze zu testen bzw. erfolgreich auszuführen. Vielleicht könnt Ihr mir ja weiterhelfen.

Danke!

Content-ID: 193954

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

Ausgedruckt am: 23.11.2024 um 12:11 Uhr

DerWoWusste
Lösung DerWoWusste 09.11.2012, aktualisiert am 20.02.2014 um 12:35:35 Uhr
Goto Top
Moin.

Ich hab Dein Skript gegoogelt und gesehen, dass Du es einfach nicht komplett wiedergibst ;) siehe http://www.msisafaq.de/anleitungen/Verschiedenes/VistaPwd.htm
Du unterschlägst den Autor und dessen Kommentar:

Für den Betrieb dieses Skripts sind die Powershell und die PowerShell Commands for Active
Directory von Quest erforderlich. Die Powershell Commands können Sie unter der URL
http://www.quest.com/powershell/activeroles-server.aspx herunter laden.

Hattest Du die runtergeladen und eingebunden?
Wenn's nicht will, schau mal hier: User übersehen in Windows 7 ständig den Balloon -Ändern Sie ggf. das Kennwort-
edvhammel
edvhammel 29.11.2012 um 13:29:51 Uhr
Goto Top
Da hab ich wohl was übersehen. Skript ist nicht von mir, habe ich aber auch nie behauptet. Danke für die Hilfe