Mit PowerShell starten heißt nicht, sofort ein umfangreiches Skript schreiben zu müssen. Ein paar lesende Befehle reichen, um die Konsole kennenzulernen: Version prüfen, Dateien auflisten, Prozesse ansehen und Ergebnisse filtern. In dieser Anleitung gehst du diese Schritte nacheinander durch. Am Ende erstellst du ein eigenes Skript, das einen Prozessbericht als CSV-Datei speichert.
Die allgemeinen Beispiele funktionieren mit PowerShell 7 unter Windows, Linux und macOS. Windows PowerShell 5.1 ist eine ältere, Windows-spezifische Variante. Wenn du erst verstehen möchtest, wofür PowerShell grundsätzlich geeignet ist, lies den Beitrag Was ist PowerShell?.
PowerShell starten: Welche Version verwendest du?
Unter Windows findest du möglicherweise zwei Einträge im Startmenü: Windows PowerShell und PowerShell 7. Windows PowerShell 5.1 startet über powershell.exe. Die separat installierte PowerShell 7 startest du über pwsh. Beide können nebeneinander vorhanden sein. Einige ältere Windows-Module funktionieren weiterhin nur mit 5.1; für neue, plattformübergreifende Skripte ist PowerShell 7 meist der bessere Ausgangspunkt.
Öffne das gewünschte Terminal und gib ein:
$PSVersionTable.PSVersion
$PSVersionTable.PSEdition
Die erste Zeile zeigt die Version. Bei PSEdition steht für PowerShell 7 Core, für Windows PowerShell 5.1 Desktop. Wenn pwsh nicht gefunden wird, ist PowerShell 7 wahrscheinlich noch nicht installiert oder sein Programmverzeichnis fehlt im Suchpfad.
PowerShell 7 bei Bedarf installieren
Auf einem unterstützten Windows-Client mit WinGet kannst du das Paket anhand seiner exakten ID suchen und installieren:
winget search --id Microsoft.PowerShell --exact
winget install --id Microsoft.PowerShell --source winget
Öffne nach der Installation ein neues Terminal und starte pwsh. PowerShell 7 ersetzt Windows PowerShell 5.1 dabei nicht. Auf Windows Server, macOS und Linux unterscheiden sich die empfohlenen Installationswege. Nutze dafür die Installationsübersicht von Microsoft. Wie du weitere Programme mit WinGet verwaltest, erklärt die WinGet-Anleitung auf IT-Fundus.
Die ersten PowerShell-Befehle eingeben
Beginne mit Befehlen, die nur Informationen anzeigen. Sie ändern keine Dateien und benötigen normalerweise keine Administratorrechte:
Get-Location
Get-ChildItem
Get-Process
Get-Location zeigt dein aktuelles Verzeichnis, Get-ChildItem dessen Inhalt und Get-Process die laufenden Prozesse. Die Ergebnisse hängen natürlich davon ab, auf welchem Rechner und in welchem Ordner du arbeitest. Du kannst mit Set-Location -Path $HOME in dein Benutzerverzeichnis wechseln.
Hilfe und verfügbare Befehle finden
PowerShell-Befehle heißen häufig Cmdlets und folgen dem Muster Verb-Substantiv. Mit diesen Aufrufen findest du Befehle und Beispiele:
Get-Command -Name *-Process
Get-Help Get-Process -Examples
Get-Command sucht hier nach Befehlen, deren Name auf -Process endet. Get-Help zeigt Beispiele für einen konkreten Befehl. Falls die lokale Hilfe nur eine Kurzfassung liefert, öffne mit Get-Help Get-Process -Online die aktuelle Dokumentation.
Die Pipeline verstehen: Befehle verbinden
Das Zeichen | verbindet Befehle. Die Ausgabe links wird zur Eingabe rechts. Bei PowerShell sind das häufig Objekte mit Eigenschaften und nicht bloß Textzeilen. Schau dir zunächst an, welche Eigenschaften ein Prozess besitzt:
Get-Process | Get-Member
Unter anderem findest du Name, Id und CPU. Jetzt kannst du die Prozessliste sortieren und die Anzeige begrenzen:
Get-Process |
Sort-Object -Property CPU -Descending |
Select-Object -Property Name, Id, CPU -First 5
Das Ergebnis zeigt fünf Prozesse mit der höchsten bisher erfassten CPU-Zeit. Die Eigenschaft CPU ist keine aktuelle CPU-Auslastung in Prozent. Der Befehl dient hier vor allem dazu, die Pipeline zu üben.
Mit Where-Object filterst du anhand einer Eigenschaft. Dieses Beispiel zeigt Dateien im aktuellen Verzeichnis, die größer als ein Megabyte sind:
Get-ChildItem -File |
Where-Object Length -gt 1MB |
Select-Object Name, Length
Wenn keine Datei diese Bedingung erfüllt, bleibt die Ausgabe leer. Das ist kein Fehler. Weitere Beispiele findest du im Beitrag Die 20 wichtigsten PowerShell-Befehle.
Variablen und Pfade in PowerShell
Variablen beginnen mit $. Du kannst ein Ergebnis darin speichern und später wiederverwenden:
$ordner = Join-Path -Path $HOME -ChildPath 'PowerShell-Start'
$ordner
Join-Path setzt Pfadbestandteile passend zur Umgebung zusammen. Das ist für Skripte besser lesbar als ein fest eingetragener Benutzerpfad. Der Befehl legt den Ordner noch nicht an; er berechnet nur den Pfad.
Dein erstes Skript: Prozessbericht als CSV
Wenn du mit PowerShell starten und einen Ablauf wiederholen möchtest, ist eine Skriptdatei der nächste Schritt. Ein PowerShell-Skript ist eine Textdatei mit der Endung .ps1. Erstelle in einem Ordner deiner Wahl die Datei prozessbericht.ps1 und füge diesen Inhalt ein:
$zielordner = Join-Path -Path $HOME -ChildPath 'PowerShell-Start'
New-Item -ItemType Directory -Path $zielordner -Force | Out-Null
$zeitstempel = Get-Date -Format 'yyyyMMdd-HHmmssfff'
$datei = Join-Path -Path $zielordner -ChildPath "prozesse-$zeitstempel.csv"
Get-Process |
Select-Object -Property Name, Id, CPU |
Export-Csv -Path $datei -NoTypeInformation -Encoding utf8 -ErrorAction Stop
Write-Output "Bericht gespeichert: $datei"
Das Skript erstellt bei Bedarf den Ordner PowerShell-Start in deinem Benutzerverzeichnis. Danach schreibt es eine neue CSV-Datei mit Zeitstempel. Es beendet keine Prozesse und ändert keine Systemeinstellungen. Die ausgegebene Datei enthält eine Momentaufnahme; Prozess-IDs und CPU-Zeiten können beim nächsten Lauf anders sein.
Wechsle im Terminal in den Ordner mit der Skriptdatei und führe sie aus:
./prozessbericht.ps1
Wenn der Aufruf funktioniert, erscheint der vollständige Dateipfad. Die Datei kannst du in einer Tabellenkalkulation öffnen oder mit PowerShell wieder einlesen. Verwende dafür den tatsächlich ausgegebenen Pfad:
Import-Csv -Path '/vollstaendiger/pfad/zur/prozesse-datei.csv' |
Select-Object -Property Name, Id -First 5
Der Pfad in der letzten Zeile ist ein Platzhalter, kein Speicherort, der auf deinem Rechner automatisch existiert. Kopiere den vom Skript ausgegebenen Pfad zwischen die Anführungszeichen. Unter Windows sieht er beispielsweise anders aus als unter Linux oder macOS. Importierte CSV-Werte sind zunächst Text; für Berechnungen musst du sie bei Bedarf umwandeln.
Wenn ein PowerShell-Skript nicht startet
„Der Begriff wurde nicht erkannt“
Prüfe den Dateinamen und deinen aktuellen Ordner mit Get-Location und Get-ChildItem. Mit ./ vor dem Skriptnamen sagst du PowerShell ausdrücklich, dass die Datei im aktuellen Ordner liegt.
Die Ausführungsrichtlinie blockiert das Skript
Unter Windows kann eine Ausführungsrichtlinie das Starten einer .ps1-Datei einschränken. Prüfe zunächst die Einstellungen:
Get-ExecutionPolicy -List
Wenn du dein selbst geschriebenes und geprüftes Skript für diese Sitzung ausführen möchtest, kann eine temporäre Einstellung für den aktuellen Prozess passend sein:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Sie gilt nur bis zum Schließen dieser PowerShell-Sitzung. Eine Organisationsrichtlinie kann sie übersteuern. Ändere die Richtlinie nicht pauschal für unbekannte Skripte und verwende nicht unüberlegt Bypass. Microsoft weist ausdrücklich darauf hin, dass die Ausführungsrichtlinie keine Sicherheitsgrenze ist. Auf Linux und macOS wird diese Windows-Richtlinie nicht durchgesetzt.
Die CSV-Datei wird nicht erstellt
Prüfe die Fehlermeldung und den ausgegebenen Pfad. Ein voller Datenträger, fehlende Schreibrechte oder ein gesperrtes Verzeichnis können das Schreiben verhindern. Starte die Konsole nicht vorsorglich als Administrator; für den Ordner im eigenen Benutzerverzeichnis ist das normalerweise unnötig.
Sicher mit PowerShell starten
- Beginne mit lesenden Befehlen und prüfe Ergebnisse, bevor du Änderungen automatisierst.
- Lies fremde Skripte vor dem Ausführen. Ein kurzer Befehl aus dem Internet kann Dateien ändern oder Daten versenden.
- Nutze bei unterstützten Änderungsbefehlen
-WhatIf, um eine Aktion zuerst anzusehen. - Führe PowerShell nur mit erhöhten Rechten aus, wenn eine konkrete Aufgabe sie verlangt.
- Schreibe Passwörter und Zugangsschlüssel nicht direkt in Skriptdateien, die du weitergibst oder in Git speicherst.
Häufige Fragen zum PowerShell-Einstieg
Muss ich programmieren können?
Nein. Einzelne Befehle und Pipelines kannst du sofort nutzen. Variablen und Skriptdateien werden erst interessant, wenn du denselben Ablauf wiederholen möchtest.
Funktioniert das Beispiel auch mit Windows PowerShell 5.1?
Die grundlegenden Befehle des Prozessberichts funktionieren auch dort. Unterschiede können bei Modulen, Standardkodierungen und zusätzlichen Funktionen auftreten. Prüfe mit $PSVersionTable.PSVersion, welche Umgebung du gerade verwendest.
Wo speichert das Beispiel die CSV-Datei?
Im Unterordner PowerShell-Start deines Benutzerverzeichnisses. Das Skript zeigt nach erfolgreichem Export den vollständigen Pfad an.
Fazit: mit PowerShell starten und weiterlernen
Wenn du mit PowerShell starten möchtest, beginne mit Version, Hilfe und ein paar lesenden Befehlen. Danach kannst du Objekte über die Pipeline filtern und dein erstes Skript ausführen. Der Prozessbericht zeigt einen vollständigen kleinen Ablauf: Daten lesen, Eigenschaften auswählen und als Datei speichern. Von dort aus kannst du ähnliche Berichte für Dateien oder andere Datenquellen bauen. Die offizielle PowerShell-Dokumentation hilft dir bei Parametern und Plattformunterschieden.