Jump to content

AD gesperrte Benutzer - E-Mail senden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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}

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • 3 Wochen später...

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
 {}
Link zu diesem Kommentar
  • 3 Wochen später...
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...