Skip to content

PowerShell

PowerShell ist ein plattformübergreifendes Framework zur Aufgabenautomatisierung und Konfigurationsverwaltung, bestehend aus einer Befehlszeilenshell und einer Skriptsprache. Anders als viele traditionelle Shells, die nur Text verarbeiten, arbeitet PowerShell mit .NET-Objekten, was die Automatisierung komplexer Aufgaben in der Daten- und Prozessanalyse erleichtert.

Lernziele

Der Artikel behandelt:

  • Grundkonzepte von PowerShell und deren Unterschiede zu anderen Shells wie Bash.
  • Anwendung von Cmdlets mit der Verb-Substantiv-Konvention und Nutzung der Pipeline.
  • Erstellung und Ausführung einfacher Skripte für Datenverarbeitung.
  • Umsetzung von Praxisbeispielen für die Analyse von Prozessen und Daten.

Was ist PowerShell?

PowerShell dient der Automatisierung von Aufgaben in der Systemadministration und Konfigurationsverwaltung. Es läuft auf Windows, Linux und macOS und unterscheidet sich von textbasierten Shells dadurch, dass es .NET-Objekte statt reinen Text verarbeitet. Dies ermöglicht eine präzisere und effizientere Datenmanipulation ohne manuelles Parsing.

Im Kontext der Daten- und Prozessanalyse eignet sich PowerShell für die Extraktion, Filterung und Verarbeitung von Systemdaten, Logdateien oder Prozessinformationen.

Grundkonzepte

Cmdlets

Cmdlets sind die grundlegenden Befehle in PowerShell und folgen einer einheitlichen Verb-Substantiv-Konvention, wie Get-Process oder Set-Location. Sie führen Aktionen aus und geben .NET-Objekte zurück.

Pipeline

Die Pipeline verkettet Befehle mit dem Operator |, wobei die Ausgabe eines Cmdlets als Eingabe in das nächste fließt. Anders als in textbasierten Shells werden Objekte übergeben, was die Datenverarbeitung vereinfacht.

Module

PowerShell ist modular erweiterbar. Module enthalten zusätzliche Cmdlets für spezifische Technologien, wie Azure oder SQL Server. Sie werden mit Import-Module geladen.

Wichtige Cmdlets

Zu den grundlegenden Cmdlets gehören:

  • Get-Command: Listet verfügbare Cmdlets auf.
  • Get-Help: Zeigt Hilfe zu Cmdlets an.
  • Get-Process: Listet laufende Prozesse auf.
  • Set-Location: Wechselt das Verzeichnis.
  • Copy-Item, Move-Item, Remove-Item: Für Dateioperationen.

Variablen und Datentypen

Variablen werden mit $ deklariert, z. B. $name = "Wert". Sie können Zeichenketten, Zahlen, Arrays oder Objekte speichern. PowerShell ist case-insensitive bei Variablennamen.

Kontrollstrukturen

Bedingte Anweisungen

Bedingte Anweisungen verwenden if ($bedingung) { ... } oder switch für Mehrfachbedingungen.

Schleifen

  • for-Schleife: for ($i = 1; $i -le 5; $i++) { ... }
  • while-Schleife: while ($bedingung) { ... }
  • foreach-Schleife: foreach ($item in $sammlung) { ... } – ideal für die Verarbeitung von Datenlisten.

Funktionen und Skripte

Funktionen gruppieren Befehle: function Name { # Befehle }.

Skripte tragen die Endung .ps1 und werden mit .\script.ps1 ausgeführt. Die Ausführungsrichtlinie (Execution Policy) muss oft angepasst werden, z. B. auf RemoteSigned, um Skripte zuzulassen.

Tipps für die effiziente Arbeit

  • Tab-Vervollständigung: Tab-Taste für automatische Befehlsvervollständigung.
  • Befehlsverlauf: Pfeiltasten oder Get-History.
  • Hilfesystem: Get-Help mit Parametern wie -Examples oder -Online. Hilfe aktualisieren mit Update-Help.

Praxisbeispiele für Daten- und Prozessanalyse

CSV-Dateien verarbeiten

powershell
$data = Import-Csv -Path "daten.csv"
foreach ($row in $data) {
    Write-Output "Name: $($row.Name), Wert: $($row.Wert)"
}

Prozesse filtern

powershell
Get-Process | Where-Object { $_.CPU -gt 10 } | Select-Object Name, CPU

Logdateien analysieren

powershell
Get-Content "log.txt" | Where-Object { $_ -match "Fehler" } | Measure-Object

WMI-Abfragen

powershell
Get-CimInstance -ClassName Win32_Process | Select-Object Name, ProcessId

Erweiterbarkeit

PowerShell nutzt die PowerShell Gallery für Module. Find-Module und Install-Module dienen dem Finden und Installieren von Erweiterungen.

Häufige Fehler und Tipps

  • Nicht: Skripte aus unbekannten Quellen ohne Prüfung ausführen. Stattdessen: RemoteSigned als Execution Policy verwenden und den Code prüfen.
  • Nicht: Text als Eingabe erwarten, wenn Objekte fließen. Stattdessen: Pipeline für Objektmanipulation nutzen.

Selbsttest

  1. Was ist die Verb-Substantiv-Konvention bei Cmdlets?
  2. Wie verkettet man Befehle in der Pipeline?
  3. Nennen Sie ein Beispiel für eine foreach-Schleife in PowerShell.
  4. Wie lädt man ein Modul?
  5. Welche Execution Policy erlaubt signierte Skripte?
  6. Wie filtert man Prozesse nach CPU-Nutzung?

Weiterführendes

Weitere Informationen finden Sie in der offiziellen PowerShell-Dokumentation auf Microsoft Learn.