blue3 0 Geschrieben 21. Oktober 2014 Melden Teilen Geschrieben 21. Oktober 2014 Hallo,ich bin auf der Suche nach einer Möglichkeit gesperrte AD-User zu finden und die gefundenen dann in einer E-Mail an eine Adresse zu senden, damit sich dies jemand ansieht und ggfls. den User wieder entsperrt.Mein Code zum finden eines gesperrten Users funktioniert, die Ausgabe in der E-Mail sieht zwar noch nicht so schön aus aber es funktioniert.Das Script würde ich dann einfach alle 15min laufen lassen. Ärgerlich ist dann jedoch, dass dann alle 15min wieder eine E-Mail geschrieben wird.Wie bekomme ich das hin, dass nur einmalig eine Mial geschickt wird? Zudem ist vermutlich meine "If" nicht wirklich toll. Bin halt noch Anfänger... $gesperrteBenutzer= Search-ADAccount -LockedOut | Get-ADUser -Properties LockoutTime | Select-Object SamAccountName, LockoutTime | ForEach-Object { $_.LockoutTime = [System.DateTime]::FromFileTime($_.LockoutTime);$_} | Where-Object { $_.LockoutTime -gt ((get-date) - (New-TimeSpan -hour 48)) } function sendmail($body) { $SmtpClient = new-object system.net.mail.smtpClient $MailMessage = New-Object system.net.mail.mailmessage $SmtpClient.Host = "MailServer" $mailmessage.from = "mail@host.local" $mailmessage.To.add("mail@host.local") $mailmessage.Subject = “gesperrte Benutzer" $MailMessage.IsBodyHtml = $true $mailmessage.Body = $body $smtpclient.Send($mailmessage) } $body = @" Folgende Benutzer sind gesperrt: $gesperrteBenutzer "@ if($gesperrteBenutzer) {sendmail $body} Zitieren Link zu diesem Kommentar
NilsK 2.938 Geschrieben 21. Oktober 2014 Melden Teilen Geschrieben 21. Oktober 2014 Moin, du könntest die User, über die bereits benachrichtigt wurde, in einer Liste hinterlegen. Das Skript könnte die Liste dann prüfen und nur über die Objekte informieren, die dort nicht drinstehen. Das könnte man dann noch weiter verfeinern, indem man in der Liste einen Zeitstempel hinterlegt und nach einer gewissen Zeit die Einträge automatisch entfernt. Oder du liest das Attribut "lockoutTime" mit aus, das den Zeitpunkt der Sperrung angibt, und berücksichtigst nur die Sperrungen seit dem letzten Durchlauf - das wäre sicher am elegantesten. Allerdings gibt es in manchen Umgebungen bzw. Situationen Probleme beim Zugriff auf dieses Attribut. Noch ein Ansatz: Du liest nicht das AD aus, sondern die Eventlogs der DCs und suchst dort nach der Event.ID 4740. Dazu musst du allerdings die Überwachungsrichtlinie der DCs bearbeiten. Insgesamt dürfte das aber der beste Weg sein. [Event ID 4740 - A user account was locked out]http://www.morgantechspace.com/2013/11/Event-ID-4740-A-user-account-was-locked-out.html Gruß, Nils Zitieren Link zu diesem Kommentar
nemonix 2 Geschrieben 12. November 2014 Melden Teilen Geschrieben 12. November 2014 hab ich vor längerer Zeit mal gebastelt, tut zumindest seinen Zweck! Wir aber vermutlich noch besser gehen: Add-PSSnapin Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue $Filepath="C:\AD_User_Disabled.htm" $Mailinhalt=Get-QADUser -SizeLimit 0 -searchroot "OU=User, DC=CONTOSO, DC=COM" -disabled | Select-Object samAccountName | ft | Out-String Get-QADUser -SizeLimit 0 -searchroot "OU=User, DC=CONTOSO, DC=COM" -disabled | Select-Object samAccountName | ConvertTo-Html | Out-File $Filepath $today = Get-Date $logdate = Get-Date -format yyyyMMdd $samaccountname = $_.samAccountName $passwordstatus = $_.PasswordStatus $smtpserver = "Mailserver" $body = $Mailinhalt $emailFrom = "Email von " $emailto = "Email an" $subject= "Betreff" if ($Mailinhalt -match "samaccountname") { Send-MailMessage -To $emailto -From $emailFrom -Subject $subject -SmtpServer $smtpserver -Attachments $Filepath -BodyAsHtml -Encoding ([system.Text.Encoding]::UTF8) } else {} Zitieren Link zu diesem Kommentar
samsam 14 Geschrieben 13. November 2014 Melden Teilen Geschrieben 13. November 2014 (bearbeitet) Moin, du brauchst nicht QUEST PowerShell, hast du schon diese PS Skript in TechNet gesehen? User account locked out mail notification with HTML report MFG bearbeitet 13. November 2014 von samsam 2 Zitieren Link zu diesem Kommentar
blue3 0 Geschrieben 1. Dezember 2014 Autor Melden Teilen Geschrieben 1. Dezember 2014 Dnake nemonix das wäre auch eine Möglikeit. Vielen Dank an samsam. You made my day. Das ist genau das, was ich gesucht habt. Und so easy. Ich wusste bisher garnicht, dass man den Aufgabenplaner an Ereignisse ansetzten kann, bzw. das der dann was ausführt wenn ein Ereigniss auftritt. Wundervolle Lösung. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.