Zum Inhalt springen

Ungenutzte AD-Benutzer & Computer-Konten finden

Symbolbild Wolkenkratzer

Dieses Powershell-Script findet ungenutzte AD-Benutzer & Computer-Konten und sendet das Ergebnis per E-Mail an den Administrator.

Einsatzzweck

Ungenutzte Benutzer- und Computerkonten können die IT-Sicherheit gefährden und sollten daher deaktiviert oder gelöscht werden. Mit diesem Powershell-Script können seit längerem nicht verwendete Konten gefunden und per Mail gemeldet werden. Die Inaktivität wird über das Active-Directory-Attribut „LastLogonDate“ erkannt. Die Inaktivität kann in den Script-Optionen individuell festgelegt werden. Idealerweise wird dieses Script regelmäßig als geplante Windows-Aufgabe ausgeführt.

Ungenutzte AD-Benutzer & Computer-Konten finden

Zur Ausführung wird das Active Directory Powershell Modul und entsprechende Rechte (z.B. Domain-Admin-Rechte) benötigt.

Im Bereich „### Optionen ###“ können die Inaktivitätskriterien (min. inaktive Tage) und Maileinstellungen gesetzt werden.

Die Variablen $lastLogonDaysComputer und $lastLogonDaysUser legen die erforderliche Inaktivität in Tagen fest (Achtung: Der Wert wird mit angegeben!). In meinem Fall werden Konten mit 30-tägiger Inaktivität in der Liste ausgegeben.

### Optionen ###
$lastLogonDaysComputer = -30;
$lastLogonDaysUser = -30;
$mailTo = "mailempfaenger@domain.tld"
$mailFrom = "mailsender@domain.tld";
$mailSubject = "AD-Benutzer und Computer prüfen";
$mailSMTP = "smtpserver.domain.tld";
$mailHtmlHeader = @"
<style>
BODY {font-size:14px;}
TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
H2 {font-size:16px;}
</style>
"@

### Script ###

# Datum
$currentDate = Get-Date

# Computer
$dateLimitComputer = $currentDate.AddDays($lastLogonDaysComputer)
$computer = Get-ADComputer -Filter * -Properties Name, LastLogonDate | Where-Object { $_.LastLogonDate -lt $dateLimitComputer } | Sort LastLogonDate | ConvertTo-Html -Property Name, LastLogonDate -Head $mailHtmlHeader

# Benutzer
$dateLimitUser = $currentDate.AddDays($lastLogonDaysUser)
$user = Get-ADUser -Filter * -Properties Name, LastLogonDate | Where-Object { $_.LastLogonDate -notlike "" -and $_.LastLogonDate -lt $dateLimitUser -and $_.enabled -eq $true } | Sort LastLogonDate | ConvertTo-Html -Property Name, LastLogonDate

# Mail
$body = "<h2>Computer</h2>" + $computer + "<br><br>" + "<h2>Benutzer</h2>" + $user | Out-String
Send-MailMessage -To $mailTo -From $mailFrom -Subject $mailSubject -SmtpServer $mailSMTP -Body $body -BodyAsHtml -encoding ([System.Text.Encoding]::UTF8)Code-Sprache: PHP (php)

Mehr Infos zu: Get-ADComputer und Get-ADUser

Mehr zum Thema IT-Sicherheit

IT-Security-Basics für Unternehmen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

15 + sieben =