Skip to main content

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.