PowerShell ist ein leistungsstarkes Automatisierungs- und Verwaltungstool für Systemadministratoren. Damit können Sie Skripte ausführen, Dienste und Benutzer verwalten, Ereignisse steuern und mit externen Systemen und APIs interagieren. In diesem Leitfaden erfahren Sie Schritt für Schritt, wie Sie PowerShell für praktische Aufgaben einsetzen können.
Installation und Einrichtung
- Laden Sie PowerShell 7+ von der offiziellen Website herunter: https://github.com/PowerShell/PowerShell
- Öffnen Sie PowerShell oder PowerShell ISE (den integrierten Skripteditor).
Erlauben Sie die Ausführung von Skripten, indem Sie Folgendes ausführen:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Erstes Skript „Hello.ps1“
Erstellen Sie eine Datei mit dem Namen „Hello.ps1“ und fügen Sie Folgendes ein:
Write-Host "Hello, PowerShell automation!"
Get-Date
$env:USERNAME
Führen Sie das Skript mit dem folgenden Befehl aus:
.\Hello.ps1
Grundlagen der Syntax
PowerShell basiert auf einer klaren und übersichtlichen Struktur:
- Befehle: Get-Process, Start-Service, Stop-Computer
- Variablen: $user = „Admin”
- Bedingungen: if ($x -gt 10) { … }
- Schleifen: foreach ($item in $list) { … }
Verwenden Sie den PowerShell ISE-Editor oder Visual Studio Code mit der PowerShell-Erweiterung für Hervorhebungen und Autovervollständigungen.
Skriptstil und -struktur
Wir empfehlen, die folgenden Grundsätze zu beachten:
- Benennen Sie Funktionen im Verb-Substantiv-Stil: Get-Report, Start-Backup
- Verwenden Sie Try-Catch, um Fehler zu behandeln
- Fügen Sie Kommentare und Parameterbeschreibungen (Docblocks) hinzu
- Trennen Sie Logik nach Funktionen und Modulen
Beispiel: Speicherüberwachung
param([int]$Threshold = 80)
$mem = Get-CimInstance Win32_OperatingSystem |
Select @{Name='FreeGB'; Expression={[math]::Round($_.FreePhysicalMemory/1MB,2)}}
if ($mem.FreeGB -lt $Threshold) {
Write-Warning "Memory low: $($mem.FreeGB) GB"
} else {
Write-Host "Memory OK: $($mem.FreeGB) GB"
}
Das Skript überprüft, ob genügend freier Speicherplatz vorhanden ist, und zeigt eine Warnung an, wenn dies nicht der Fall ist.
Taskplaner
Sie können PowerShell-Skripte nach einem Zeitplan ausführen:
- Öffnen Sie den Taskplaner
- Erstellen Sie eine neue Aufgabe → Registerkarte „Aktion“
Geben Sie Folgendes an:
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\Hello.ps1"
- Richten Sie einen zeit- oder ereignisbasierten Trigger ein.
Benutzerverwaltung
Lokale Benutzer:
$pass = Read-Host -AsSecureString "Введите пароль"
New-LocalUser -Name "TestUser" -Password $pass -FullName "Тестовый пользователь"
Disable-LocalUser -Name "TestUser"
Remove-LocalUser -Name "TestUser"
Active Directory (mit CSV-Datei):
Import-Csv users.csv | ForEach-Object {
New-ADUser -Name $_.Name -SamAccountName $_.Login `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true
}
Windows-Ereignisüberwachung
Get-WinEvent -LogName System -MaxEvents 10 |
Format-Table TimeCreated, Id, Message
Filterung:
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000; StartTime=(Get-Date).AddDays(-1)}
In CSV exportieren:
... | Export-Csv "C:\Logs\app.csv" -NoTypeInformation
Sicherung und Archivierung
$src = "C:\Important"
$dst = "D:\Backup\Backup_$(Get-Date -Format 'yyyyMMdd').zip"
Compress-Archive -Path "$src\*" -DestinationPath $dst
Add-Content "D:\Backup\backup_log.txt" "Backup: $(Get-Date) → $dst"
Dieses Skript erstellt ein Archiv aus einem Ordner und protokolliert die Sicherung.
E-Mail-Benachrichtigungen
Send-MailMessage -From "admin@domain.com" -To "team@company.com" `
-Subject "Backup report" -Body "Backup completed successfully." `
-SmtpServer "smtp.domain.com" -Attachments "D:\Backup\*.zip"
Integration mit CI/CD und der Cloud
- Sie können PowerShell in GitHub Actions, Azure Automation Runbooks oder auf VPS SSD verwenden.
Beispiel für GitHub Actions:
- name: Run PowerShell script
run: pwsh ./monitor.ps1
- In Azure können Sie ein Skript mit RBAC und Ausführungsprotokollen nach einem Zeitplan ausführen.
PowerShell ist nicht nur eine Shell, sondern ein universelles Automatisierungstool. Anhand von Beispielen aus der Praxis zum Sichern und Löschen alter Dateien sowie zum Ausführen von Programmen lernen Sie schnell die Grundlagen kennen. Wichtig: Testen Sie Skripts immer mit dem Parameter -WhatIf oder in einer Testumgebung, um unerwünschte Änderungen zu vermeiden.