Skript-Grundlagen: Bash & PowerShell im professionellen IT-Betrieb
Skripting ist die technische Basis nahezu jeder Form von Automatisierung. Unabhängig davon, ob komplexe CI/CD-Pipelines, Infrastruktur-Automatisierung oder einfache Wartungsaufgaben umgesetzt werden, am Anfang steht immer ein Skript.
In klassischen Linux-Umgebungen dominiert Bash, während in Windows- und Hybrid-Infrastrukturen PowerShell der De-facto-Standard ist. Professionelle DevOps- und Automatisierungsstrategien beherrschen beide Welten.
1. Rolle von Skripten in DevOps & Automatisierung
Skripte übernehmen Aufgaben, die:
- wiederkehrend sind
- klar definierte Abläufe besitzen
- manuell fehleranfällig wären
- schnell und reproduzierbar ausgeführt werden müssen
Sie dienen häufig als:
- Grundlage für CI/CD-Jobs
- Wrapper für komplexe Tools
- Glue-Code zwischen Systemen
- Fallback-Lösung bei Tool-Ausfällen
2. Bash – Grundlagen
2.1 Einsatzgebiet
- Linux-Server
- Container-Images
- Cloud-VMs
- Init- und Provisioning-Skripte
2.2 Aufbau eines Bash-Skripts
#!/bin/bash
# Beschreibung des Skripts
# Autor / Zweck / Datum
echo "Hello World"
Die sogenannte Shebang definiert, mit welchem Interpreter das Skript ausgeführt wird.
2.3 Variablen
NAME="Server01"
echo "Hostname: $NAME"
- Keine Typisierung
- Großschreibung für Konfigurationsvariablen empfohlen
2.4 Bedingungen
if [ -f /etc/passwd ]; then
echo "Datei existiert"
else
echo "Datei fehlt"
fi
2.5 Schleifen
for i in 1 2 3; do
echo "Durchlauf $i"
done
3. PowerShell – Grundlagen
3.1 Einsatzgebiet
- Windows-Server
- Active Directory
- Azure & Hybrid-Cloud
- Cross-Platform (PowerShell Core)
3.2 Cmdlet-Prinzip
PowerShell arbeitet objektbasiert, nicht textbasiert.
Get-Service
Get-Process
Cmdlets folgen dem Schema:
- Verb-Nomen
- z. B. Get-Service, Set-Item, New-User
3.3 Variablen
$ServerName = "Server01"
Write-Output $ServerName
3.4 Bedingungen
if (Test-Path "C:\Windows") {
Write-Output "Pfad existiert"
} else {
Write-Output "Pfad fehlt"
}
3.5 Schleifen
foreach ($i in 1..3) {
Write-Output "Durchlauf $i"
}
4. Bash vs. PowerShell – Technischer Vergleich
| Kriterium | Bash | PowerShell |
|---|---|---|
| Plattform | Linux / Unix | Windows / Cross-Platform |
| Datenmodell | Textbasiert | Objektbasiert |
| Lernkurve | Flach, aber fehleranfällig | Steiler, dafür strukturierter |
| Enterprise-Einsatz | Sehr hoch | Sehr hoch |
5. Typische Fehlerquellen
- Fehlende Fehlerbehandlung
- Keine Exit-Codes
- Hardcodierte Pfade
- Ungeprüfte Benutzerinputs
- Ausführung mit zu hohen Rechten
6. Best Practices für professionelle Skripte
- Kommentare und Header verwenden
- Idempotente Logik anstreben
- Logging integrieren
- Exit-Codes korrekt setzen
- Dry-Run-Optionen anbieten
7. Sicherheitsaspekte
- Keine Zugangsdaten im Klartext
- Minimal notwendige Rechte
- Signierte PowerShell-Skripte
- Versionskontrolle (Git)
Zusammenfassung
Bash und PowerShell bilden das Fundament jeder Automatisierungs- und DevOps-Strategie. Wer beide Skriptsprachen beherrscht, kann plattformübergreifend Prozesse steuern, Systeme warten und komplexe Abläufe sicher automatisieren.
Sie sind kein Ersatz für Konfigurationsmanagement oder IaC, sondern deren Grundlage.