PowerShell-Spickzettel
Eine durchsuchbare, druckbare PowerShell-Referenz — Cmdlets, die Pipeline, Variablen, Dateien, Schleifen, Funktionen, Objekte und Administration. Kostenlos.
Hilfe & Erkundung
12Get-Help Get-Process
Hilfe zu einem Cmdlet anzeigen
Get-Help Get-Process -Examples
Anwendungsbeispiele für ein Cmdlet anzeigen
Get-Help Get-Process -Full
Die vollständige Hilfe inkl. Parameter anzeigen
Get-Help about_Functions
Ein konzeptuelles about_-Thema lesen
Update-Help
Die neuesten Hilfedateien herunterladen
Get-Command -Noun Process
Cmdlets auflisten, die auf ein Nomen wirken
Get-Command -Verb Get
Cmdlets auflisten, die ein bestimmtes Verb nutzen
Get-Command *service*
Befehle per Wildcard-Namen suchen
Get-Process | Get-Member
Die Eigenschaften und Methoden von Objekten auflisten
Get-Alias ls
Anzeigen, zu welchem Befehl ein Alias aufgelöst wird
Get-Alias -Definition Get-ChildItem
Alle Aliase für ein Cmdlet auflisten
$PSVersionTable
Die PowerShell-Version und -Edition anzeigen
Variablen & Typen
13$x = 5
Einer Variable einen Wert zuweisen
[int]$n = '42'
Eine streng typisierte Variable deklarieren
$null
Der Null-/Leerwert
$true; $false
Boolesche Literale
$arr = @(1, 2, 3)
Ein Array erstellen
$arr += 4
Ein Element an ein Array anhängen
$arr[0]; $arr[-1]
Erstes und letztes Array-Element indizieren
$hash = @{ Name = 'Ann'; Age = 30 }
Eine Hashtable erstellen
$hash['Name']; $hash.Name
Einen Hashtable-Wert per Schlüssel lesen
$env:PATH
Eine Umgebungsvariable lesen
$env:MY_VAR = 'value'
Eine Umgebungsvariable für die Sitzung setzen
Get-Variable
Alle definierten Variablen auflisten
[math]::Round(3.14159, 2)
Eine statische .NET-Methode aufrufen
Pipeline & Filtern
12Get-Process | Where-Object { $_.CPU -gt 10 }
Objekte nach einer Bedingung filtern
Get-Process | ? CPU -gt 10
Mit dem ?-Alias und vereinfachter Syntax filtern
Get-Process | ForEach-Object { $_.Name }
Einen Skriptblock für jedes Objekt ausführen
Get-Process | % { $_.Kill() }
Mit dem %-Alias iterieren
Get-Process | Select-Object Name, Id
Nur bestimmte Eigenschaften behalten
Get-Process | Select-Object -First 5
Die ersten N Objekte nehmen
Get-Process | Sort-Object CPU -Descending
Objekte nach einer Eigenschaft sortieren
Get-Process | Group-Object Company
Objekte nach einer Eigenschaft gruppieren
Get-Process | Measure-Object CPU -Sum
Numerische Werte aggregieren (Summe, Durchschnitt)
Get-ChildItem | Select-Object -Unique
Eindeutige Objekte zurückgeben
1..5 | ForEach-Object { $_ * 2 }
Einen Bereich durch eine Transformation leiten
Get-Process | Out-GridView
Ergebnisse an ein interaktives Raster senden
Dateien & Pfade
13Get-ChildItem -Path C:\Logs
Elemente in einem Verzeichnis auflisten (Alias ls/dir)
Get-ChildItem -Recurse -Filter *.log
Passende Dateien rekursiv auflisten
Get-Content .\file.txt
Datei Zeile für Zeile lesen
Get-Content .\file.txt -Tail 20
Die letzten N Zeilen einer Datei lesen
Set-Content .\file.txt -Value 'Hi'
Text in eine Datei schreiben (überschreiben)
Add-Content .\file.txt -Value 'Hi'
Text an eine Datei anhängen
Copy-Item a.txt b.txt
Eine Datei oder ein Verzeichnis kopieren
Move-Item a.txt .\dir\
Ein Element verschieben oder umbenennen
Remove-Item a.txt -Force
Eine Datei oder ein Verzeichnis löschen
New-Item -ItemType Directory -Path .\dir
Eine neue Datei oder ein neues Verzeichnis erstellen
Test-Path .\file.txt
Prüfen, ob ein Pfad existiert
Get-Location
Das aktuelle Verzeichnis anzeigen (Alias pwd)
Set-Location C:\Temp
Das aktuelle Verzeichnis wechseln (Alias cd)
Strings & Text
12'Hello World' -match 'World'
Einen String gegen eine Regex testen
'Hello' -replace 'l', 'L'
Text per Regex ersetzen
'a,b,c' -split ','
Einen String per Regex in ein Array aufteilen
'a-b-c'.Split('-')
Mit der .NET-String-Methode aufteilen
'a', 'b' -join ', '
Array-Elemente zu einem String verbinden
Select-String -Path *.log -Pattern 'error'
Grep-artige Suche über Dateien hinweg
'{0} of {1}' -f 3, 10
Einen String mit Platzhaltern formatieren
' hi '.Trim()
Führenden und abschließenden Whitespace entfernen
'Hello'.ToUpper()
Einen String in Großbuchstaben umwandeln
'Hello'.Substring(0, 3)
Einen Teilstring per Index und Länge extrahieren
'Hello'.Contains('ell')
Prüfen, ob ein String Text enthält
'Hello'.Length
Die Anzahl der Zeichen holen
Schleifen & Bedingungen
12if ($x -gt 0) { 'pos' } elseif ($x -eq 0) { 'zero' } else { 'neg' }
Verzweigen mit if / elseif / else
switch ($x) { 1 { 'one' } default { 'other' } }
Einen Wert gegen Fälle abgleichen
foreach ($i in $arr) { $i }
Über eine Sammlung iterieren
for ($i = 0; $i -lt 5; $i++) { $i }
Gezählte Schleife mit einem Index
while ($x -lt 10) { $x++ }
Schleife, solange eine Bedingung wahr ist
do { $x++ } while ($x -lt 10)
Mindestens einmal durchlaufen, dann prüfen
$x -eq 5; $x -ne 5
Gleich- und Ungleich-Vergleiche
$x -gt 5; $x -lt 5
Größer-als- und Kleiner-als-Vergleiche
$x -ge 5; $x -le 5
Größer-/Kleiner-gleich-Vergleiche
'abc' -like 'a*'
Wildcard-Match-Vergleich
@(1, 2, 3) -contains 2
Array-Zugehörigkeit prüfen
break; continue
Die aktuelle Schleifeniteration verlassen oder überspringen
Funktionen & Skripte
12function Get-Sum { param($a, $b) $a + $b }
Eine Funktion mit Parametern definieren
Get-Sum -a 2 -b 3
Eine Funktion mit benannten Argumenten aufrufen
function Test { param([int]$n = 1) }
Typisierter Parameter mit einem Standardwert
param([Parameter(Mandatory)]$Name)
Verlangen, dass ein Parameter angegeben wird
return $value
Einen Wert aus einer Funktion zurückgeben
function F { [CmdletBinding()] param() }
Eine erweiterte Funktion erstellen (Common Params)
Write-Verbose 'msg' -Verbose
Einen Verbose-Nachrichtenstrom ausgeben
Write-Output $result
Ein Objekt an die Pipeline senden
Write-Error 'failed'
In den Fehlerstrom schreiben
.\script.ps1 -Arg value
Eine Skriptdatei mit Argumenten ausführen
. .\functions.ps1
Ein Skript per Dot-Sourcing in die Sitzung laden
try { } catch { $_ } finally { }
Abbrechende Fehler behandeln
Objekte & Eigenschaften
12Get-Process | Select-Object -ExpandProperty Name
Rohe Eigenschaftswerte statt Objekte zurückgeben
(Get-Process).Name
Eine Eigenschaft jedes Objekts ansprechen
Get-Process | Select-Object Name, @{ Name = 'MB'; Expression = { $_.WS / 1MB } }
Eine berechnete Eigenschaft hinzufügen
[PSCustomObject]@{ Name = 'Ann'; Age = 30 }
Ein eigenes Objekt erstellen
$obj | Add-Member -NotePropertyName Tag -NotePropertyValue 'x'
Eine Eigenschaft an ein Objekt anhängen
$obj.PSObject.Properties.Name
Die Eigenschaftsnamen eines Objekts auflisten
$obj | Format-Table -AutoSize
Objekte als ausgerichtete Tabelle anzeigen
$obj | Format-List *
Alle Eigenschaften als Liste anzeigen
$obj | ConvertTo-Json -Depth 5
Ein Objekt nach JSON serialisieren
Get-Content data.json | ConvertFrom-Json
JSON in Objekte parsen
$obj | Export-Csv out.csv -NoTypeInformation
Objekte in eine CSV-Datei exportieren
Import-Csv data.csv
Eine CSV-Datei in Objekte einlesen
Prozesse & Dienste
12Get-Process
Laufende Prozesse auflisten (Alias ps)
Get-Process -Name chrome
Prozesse per Namen holen
Stop-Process -Name notepad -Force
Einen Prozess beenden
Start-Process notepad.exe
Einen neuen Prozess starten
Get-Service
Windows-Dienste auflisten
Get-Service -Name wuauserv
Einen Dienst per Namen holen
Start-Service -Name wuauserv
Einen gestoppten Dienst starten
Stop-Service -Name wuauserv
Einen laufenden Dienst stoppen
Restart-Service -Name wuauserv
Einen Dienst neu starten
Set-Service -Name wuauserv -StartupType Manual
Den Startmodus eines Dienstes ändern
Get-EventLog -LogName System -Newest 20
Aktuelle klassische Ereignisprotokoll-Einträge lesen
Get-WinEvent -LogName Application -MaxEvents 20
Moderne Ereignisprotokolle abfragen
Remoting & Jobs
12Enter-PSSession -ComputerName Srv01
Eine interaktive Remote-Sitzung starten
Exit-PSSession
Eine interaktive Remote-Sitzung verlassen
Invoke-Command -ComputerName Srv01 -ScriptBlock { Get-Service }
Einen Befehl auf einem Remote-Host ausführen
$s = New-PSSession -ComputerName Srv01
Eine persistente Remote-Sitzung erstellen
Invoke-Command -Session $s -ScriptBlock { hostname }
Eine bestehende Remote-Sitzung wiederverwenden
Remove-PSSession $s
Eine Remote-Sitzung schließen und entfernen
Start-Job -ScriptBlock { Get-Process }
Einen Befehl als Hintergrund-Job ausführen
Get-Job
Hintergrund-Jobs und ihren Status auflisten
Receive-Job -Id 1 -Keep
Die Ausgabe eines Jobs abrufen
Wait-Job -Id 1
Blockieren, bis ein Job abgeschlossen ist
Stop-Job -Id 1; Remove-Job -Id 1
Einen Hintergrund-Job stoppen und entfernen
Get-Process | Start-ThreadJob { $input }
Leichte In-Process-Thread-Jobs ausführen
Module & Pakete
12Get-Module
Aktuell geladene Module auflisten
Get-Module -ListAvailable
Alle installierten Module auflisten
Import-Module Pester
Ein Modul in die Sitzung laden
Remove-Module Pester
Ein Modul aus der Sitzung entladen
Find-Module -Name PSReadLine
Die Galerie nach einem Modul durchsuchen
Install-Module PSReadLine -Scope CurrentUser
Ein Modul aus der Galerie installieren
Update-Module PSReadLine
Ein installiertes Modul aktualisieren
Uninstall-Module PSReadLine
Ein installiertes Modul entfernen
Get-ExecutionPolicy
Die aktuelle Skript-Ausführungsrichtlinie anzeigen
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Signierte und lokale Skripte ausführen lassen
Get-PSRepository
Konfigurierte Paket-Repositorys auflisten
$PROFILE
Pfad zum aktuellen Benutzerprofil-Skript
Kein Eintrag passt zu „:q“.
Brauchen Sie Hilfe?
Ein Problem mit diesem Tool gefunden? Sagen Sie es unserem Team.