- 2 Abschnitte
- 16 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- Grundlagen & Einstieg9
- Fortgeschritten8
Skripte und Ausführungsrichtlinien
Einzelne PowerShell-Befehle sind praktisch, aber die wahre Stärke der Sprache liegt darin, Abläufe zu automatisieren.
Dazu schreibst du Skripte – also Sammlungen von Befehlen, die Schritt für Schritt ausgeführt werden.
PowerShell-Skripte erstellen
Ein Skript ist einfach eine Textdatei mit der Endung .ps1.
Du kannst sie in jedem Editor erstellen, typischerweise aber in Visual Studio Code oder dem integrierten ISE-Editor (Integrated Scripting Environment).
Beispielskript:
# Backup-Skript
$quelle = "C:\Daten"
$ziel = "C:\Backup\" + (Get-Date -Format "yyyy-MM-dd")
New-Item -ItemType Directory -Path $ziel -Force
Copy-Item -Path $quelle\* -Destination $ziel -Recurse
Write-Host "Backup abgeschlossen: $ziel"
Speichere die Datei als backup.ps1.
Skripte ausführen
Wenn du die Datei im Terminal starten willst, gib den Pfad mit einem Punkt und Backslash an:
.\backup.ps1
Wenn du sie aus einem anderen Ordner startest:
C:\Skripte\backup.ps1
Die Execution Policy
Microsoft hat eine Sicherheitsfunktion eingebaut, die verhindert, dass ungewollte Skripte automatisch ausgeführt werden.
Das ist die Execution Policy. Sie legt fest, ob und welche Skripte laufen dürfen.
Du kannst die aktuelle Richtlinie prüfen mit:
Get-ExecutionPolicy
Typische Werte:
| Richtlinie | Bedeutung |
|---|---|
| Restricted | Keine Skripte erlaubt (nur interaktive Befehle) |
| RemoteSigned | Lokale Skripte dürfen laufen, heruntergeladene nur, wenn signiert |
| AllSigned | Nur signierte Skripte erlaubt |
| Unrestricted | Alle Skripte erlaubt, Warnung bei Internet-Quellen |
Wenn du lokal eigene Skripte testen willst, stellst du sie oft auf RemoteSigned:
Set-ExecutionPolicy RemoteSigned
Diese Änderung erfordert Administratorrechte.
Wenn du nur temporär für die aktuelle Sitzung lockern möchtest:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Damit gilt die Einstellung nur, solange das Fenster geöffnet ist.
Sicherheitsgedanke
Die Execution Policy ist kein umfassender Schutzmechanismus, sondern ein Warnsystem.
Wenn du Skripte aus dem Internet ausführst, prüfe sie vorher sorgfältig.
Unbekannte Skripte können Befehle enthalten, die Dateien löschen, Systemeinstellungen ändern oder sensible Daten übertragen.
Kommentare im Skript
Kommentare helfen, dein Skript verständlich zu halten.
Sie beginnen mit einem # und werden beim Ausführen ignoriert.
# Dieses Skript löscht alte Log-Dateien
$pfad = "C:\Logs"
Get-ChildItem -Path $pfad -Recurse -Filter *.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item
Auch ganze Abschnitte kannst du mit Blockkommentaren ausblenden:
<#
Hier steht ein längerer Kommentar,
der mehrere Zeilen umfassen kann.
#>
Skripte mit Parametern
Du kannst dein Skript so schreiben, dass es Eingaben entgegennimmt.
Das macht es wiederverwendbar.
param(
[string]$Quelle,
[string]$Ziel
)
Copy-Item -Path $Quelle -Destination $Ziel -Recurse
Write-Host "Kopieren abgeschlossen."
Starten kannst du das Skript so:
.\kopieren.ps1 -Quelle "C:\Test" -Ziel "D:\Backup"
Rückgabewerte und Ausgaben
Wenn du möchtest, dass dein Skript etwas zurückliefert (z. B. für andere Befehle), verwendest du Write-Output.
Für reine Anzeigen im Terminal nutzt du Write-Host.
Write-Output "Dies ist eine Rückgabe"
Write-Host "Dies ist nur eine Anzeige"
Write-Host ist sichtbar, geht aber nicht durch die Pipeline weiter.
Das ist wichtig, wenn du später Skripte miteinander kombinierst.
Skripte planen und automatisieren
Fertige Skripte kannst du über den Windows-Aufgabenplaner automatisch starten.
So kannst du z. B. täglich ein Backup oder eine Systemprüfung ausführen.
Im Aufgabenplaner wählst du einfach:
Programm:
powershell.exeArgumente:
-ExecutionPolicy Bypass -File "C:\Skripte\backup.ps1"
Damit läuft das Skript ohne Sicherheitsabfrage, aber nur mit den Rechten des geplanten Benutzers.
