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-Key: 193954

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

Printed on: April 25, 2024 at 22:04 o'clock

Member: DerWoWusste
Solution DerWoWusste Nov 09, 2012, updated at Feb 20, 2014 at 11:35:35 (UTC)
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-
Member: edvhammel
edvhammel Nov 29, 2012 at 12:29:51 (UTC)
Goto Top
Da hab ich wohl was übersehen. Skript ist nicht von mir, habe ich aber auch nie behauptet. Danke für die Hilfe