PowerShell 7 auf Linux: Installation, Praxisbeispiele und Best Practices

Kurzbeschreibung: In diesem Beitrag zeige ich, wie Sie PowerShell 7 (pwsh) auf verschiedenen Linux-Distributionen installieren, typische Aufgaben ausführen, Skripte betreiben und dabei Sicherheits- sowie Best-Practice-Aspekte beachten.

Warum PowerShell 7 auf Linux?

PowerShell 7 ist eine plattformübergreifende Shell- und Skriptsprache (nachfolger von PowerShell Core), die auf .NET läuft. Sie vereint leistungsstarke Objekt-Pipelines mit einfacher Interoperabilität zu nativen Linux-Befehlen. Das ist praktisch, wenn Sie Automatisierungsskripte schreiben wollen, die sowohl unter Windows als auch unter Linux zuverlässig laufen.

Wichtige Vorteile

  • Objektbasierte Pipeline (weniger Parsen von Text)
  • Cross-Platform: läuft auf Linux, macOS und Windows
  • Erweiterbar durch Module (PowerShellGet / PSGallery)
  • Moderne Features: ForEach-Object -Parallel, verbesserte Fehlerbehandlung

Installation (Schritt-für-Schritt)

Die offizielle Dokumentation enthält stets die aktuellsten Pakete. Hier sind die gebräuchlichsten Installationsbefehle.

Ubuntu / Debian (apt)

# Beispiel für Ubuntu 20.04+ / Debian
sudo apt update
sudo apt install -y wget apt-transport-https software-properties-common
wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y powershell
# Starten
pwsh --version

CentOS / RHEL (yum / dnf)

# RHEL/CentOS 7/8 Beispiel
sudo yum install -y yum-utils
curl -LO https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
sudo rpm -Uvh packages-microsoft-prod.rpm
sudo yum install -y powershell
pwsh --version

Fedora

sudo dnf install -y https://packages.microsoft.com/config/fedora/$(rpm -E %fedora)/packages-microsoft-prod.rpm
sudo dnf install -y powershell
pwsh --version

Arch Linux

PowerShell ist als Community-Paket (AUR) verfügbar. Verwenden Sie einen AUR-Helper wie yay:

yay -S powershell-bin
pwsh --version

Alternative: Snap

sudo snap install powershell --classic
pwsh --version

Erster Start & Grundeinstellungen

Starten Sie die Shell mit pwsh. Nützliche erste Prüfungen:

# Version prüfen
pwsh --version
# Pfad zur Binärdatei
which pwsh
# Module auflisten
pwsh -Command "Get-Module -ListAvailable"

Skripte mit PowerShell auf Linux

PowerShell-Skripte können wie normale Shell-Skripte ausgeführt werden. Nutzen Sie die Shebang-Zeile, damit das Skript direkt ausführbar ist.

#!/usr/bin/env pwsh
# beispiel.ps1 - prüft freien Speicher und listet Dienste
$free = Get-PSDrive -Name / | Select-Object Used, Free
Write-Output "Freier Speicher: $($free.Free)"
Get-Service | Where-Object { $_.Status -eq 'Running' } | Select-Object Name, Status

Markieren Sie die Datei ausführbar: chmod +x beispiel.ps1 und dann ./beispiel.ps1.

Praktische Beispiele

1) Systemdienste prüfen und neustarten

# Prüfe systemd Dienste (Beispiel)
Get-Service | Where-Object { $_.Name -like '*ssh*' -or $_.Name -like '*nginx*' } | ForEach-Object {
  $s = $_
  Write-Output "Service: $($s.Name) - Status: $($s.Status)"
  if ($s.Status -ne 'Running') {
    Write-Output "Starte $($s.Name) ..."
    sudo systemctl start $($s.Name.ToLower())
  }
}

Hinweis: PowerShell-Objekte für Get-Service auf Linux hängen von der Distribution ab – in vielen Fällen ist ein Mix mit systemctl-Aufrufen sinnvoll.

2) Pakete verwalten (apt-Beispiel)

# apt aktualisieren und Paket prüfen
sudo apt update
$pkg = 'nginx'
$installed = (apt list --installed 2>/dev/null | Select-String "^$pkg/") -ne $null
if (-not $installed) {
  Write-Output "Installiere $pkg ..."
  sudo apt install -y $pkg
} else {
  Write-Output "$pkg ist bereits installiert"
}

3) Parallele Verarbeitung mit ForEach-Object -Parallel

$hosts = 'host1','host2','host3'
$hosts | ForEach-Object -Parallel {
  param($h)
  # Beispiel: ping und Ausgabe
  if (Test-Connection -ComputerName $h -Count 1 -Quiet) {
    "Host $h erreichbar"
  } else {
    "Host $h nicht erreichbar"
  }
} -ThrottleLimit 5

Remoting mit SSH

PowerShell nutzt auf Linux üblicherweise SSH für Remoting (Enter-PSSession / Invoke-Command):

# Interaktiv auf einen entfernten Host wechseln
Enter-PSSession -HostName server.example.com -UserName user
# oder Befehle remote ausführen
Invoke-Command -HostName server.example.com -UserName user -ScriptBlock { hostname; uname -a }

Voraussetzung: SSH-Zugang auf dem Zielsystem und konfigurierte Schlüssel/Authentifizierung.

Sicherheit & Best Practices

  • Führen Sie pwsh nicht als root aus, wenn es nicht nötig ist. Nutzen Sie sudo gezielt.
  • Signieren Sie kritische Skripte (Code-Signing), wenn verfügbar, und prüfen Sie Dateiberechtigungen.
  • Nutzen Sie /etc/sudoers.d für feinere Rechtevergabe, anstatt globalen Root-Zugang.
  • Verwalten Sie Secrets sicher: Verwenden Sie Secret-Management (z. B. HashiCorp Vault, Azure Key Vault) statt Klartext in Skripten.
  • Regelmäßige Updates: PowerShell selbst und das zugrunde liegende System aktuell halten.

Fehlerbehebung (Quick Checks)

  • pwsh --version — Versionsprüfung
  • which pwsh — Pfad prüfen
  • Module-Probleme: Get-Module -ListAvailable und Install-Module
  • Logs: System-Logs (journalctl -u servicename) nutzen — PowerShell selbst schreibt Fehler meist in STDERR/STDOUT

Nützliche Module & Ressourcen

  • PowerShell Gallery: https://www.powershellgallery.com
  • Microsoft Docs: PowerShell on Linux
  • Beliebte Module: PowerShellGet, PSReadLine, Microsoft.PowerShell.Archive

Fazit

PowerShell 7 ist eine starke Ergänzung für Linux-Tools: Es vereinfacht plattformübergreifende Skripte, bietet moderne Sprachfeatures und lässt sich gut mit nativen Linux-Tools kombinieren. Achten Sie auf aktuelle Versionen, sichere Geheimnisverwaltung und testen Sie Skripte in einer kontrollierten Umgebung, bevor Sie sie in Produktion nehmen.

Share this content:

Das hast du vielleicht verpasst

shibiadmin
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.