PowerShell Active Directory-Automatisierung
PowerShell ist das wichtigste Werkzeug für Windows-Administratoren zur Automatisierung von Active Directory-Aufgaben. Von der Benutzerbereitstellung über Gruppenverwaltung bis hin zu Compliance-Berichten ermöglicht PowerShell die effiziente Verwaltung selbst großer AD-Umgebungen. Diese Anleitung zeigt praxiserprobte Skripte für den täglichen Einsatz.
Active Directory-Modul einrichten
Installieren und konfigurieren Sie das AD-PowerShell-Modul:
# RSAT-Tools unter Windows Server installieren
Install-WindowsFeature -Name RSAT-AD-PowerShell
# Unter Windows 10/11
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
# Modul importieren und Verbindung prüfen
Import-Module ActiveDirectory
Get-ADDomain
Get-ADForest
Überprüfen Sie die verfügbaren Cmdlets:
Get-Command -Module ActiveDirectory | Measure-Object
Get-Command -Module ActiveDirectory | Where-Object { $_.Name -like "*User*" }
Benutzerbereitstellung automatisieren
Erstellen Sie einzelne Benutzer mit allen erforderlichen Attributen:
New-ADUser -Name "Max Mustermann" `
-SamAccountName "mmustermann" `
-UserPrincipalName "mmustermann@contoso.de" `
-GivenName "Max" `
-Surname "Mustermann" `
-Department "IT" `
-Path "OU=Users,OU=IT,DC=contoso,DC=de" `
-AccountPassword (ConvertTo-SecureString "InitialP@ss2026!" -AsPlainText -Force) `
-Enabled $true `
-ChangePasswordAtLogon $true
Für Massenoperationen verwenden Sie CSV-Import:
Import-Csv -Path "C:\Scripts\neue_benutzer.csv" | ForEach-Object {
$password = ConvertTo-SecureString $_.Password -AsPlainText -Force
New-ADUser -Name "$($_.Vorname) $($_.Nachname)" `
-SamAccountName $_.SamAccountName `
-UserPrincipalName "$($_.SamAccountName)@contoso.de" `
-GivenName $_.Vorname `
-Surname $_.Nachname `
-Department $_.Abteilung `
-Path $_.OU `
-AccountPassword $password `
-Enabled $true
Add-ADGroupMember -Identity $_.Gruppe -Members $_.SamAccountName
Write-Host "Benutzer $($_.SamAccountName) erstellt" -ForegroundColor Green
}
Berichte und Auditing
Finden Sie inaktive Konten und generieren Sie Compliance-Berichte:
# Inaktive Benutzer der letzten 90 Tage
$inaktiv = Get-ADUser -Filter * -Properties LastLogonDate |
Where-Object { $_.LastLogonDate -lt (Get-Date).AddDays(-90) -and $_.Enabled -eq $true } |
Select-Object Name, SamAccountName, LastLogonDate, Enabled
$inaktiv | Export-Csv -Path "C:\Reports\inaktive_benutzer.csv" -NoTypeInformation
# Bald ablaufende Passwörter
$ablaufend = Get-ADUser -Filter * -Properties msDS-UserPasswordExpiryTimeComputed |
Select-Object Name, SamAccountName,
@{N="Ablaufdatum";E={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} |
Where-Object { $_.Ablaufdatum -lt (Get-Date).AddDays(14) }
$ablaufend | Export-Csv -Path "C:\Reports\ablaufende_passwoerter.csv" -NoTypeInformation
Erstellen Sie eine Übersicht der Gruppenmitgliedschaften:
Get-ADGroup -Filter * -SearchBase "OU=Gruppen,DC=contoso,DC=de" | ForEach-Object {
$mitglieder = Get-ADGroupMember -Identity $_.Name | Select-Object -ExpandProperty Name
[PSCustomObject]@{
Gruppe = $_.Name
Anzahl = $mitglieder.Count
Mitglieder = $mitglieder -join "; "
}
} | Export-Csv -Path "C:\Reports\gruppenbericht.csv" -NoTypeInformation
Geplante Automatisierung
Richten Sie wiederkehrende Aufgaben mit dem Task Scheduler ein:
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\AD-Bereinigung.ps1"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 6am
$settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable
Register-ScheduledTask -TaskName "AD Weekly Cleanup" `
-Action $action -Trigger $trigger -Settings $settings `
-User "CONTOSO\svc_automation" `
-Description "Wöchentliche AD-Bereinigung und Berichterstellung"
Kombinieren Sie die obigen Skripte in einem umfassenden Bereinigungsskript, das inaktive Konten deaktiviert, Berichte generiert und Benachrichtigungen per E-Mail versendet. Testen Sie alle Skripte gründlich in einer Testumgebung, bevor Sie sie in der Produktion einsetzen.