EMZETT.
Login

Kurz: - learn.microsoft.com/powershell (Handbuch), PowerShell in a Month of Lunches, PowerShell.org - Pester für Tests, PSScriptAnalyzer für Stil, VS Code mit PowerShell-Erweiterung - Wiki dieser Seite.

Teil des Kurses PowerShell

Kapitel 8 von 8 im Kurs PowerShell (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Wichtige Cmdlets

AufgabeCmdlets (Aliase)
HilfeGet-Help, Get-Command, Get-Member, Get-Alias
AusgabeWrite-Output, Write-Host, Write-Verbose, Write-Warning, Write-Error, Out-File, Out-String
ObjekteSelect-Object (select), Where-Object (?, where), Sort-Object (sort), ForEach-Object (%), Group-Object, Measure-Object
SystemGet-Process (ps), Stop-Process, Get-Service, Start-Service, Get-ComputerInfo
DateienGet-ChildItem (ls), Get-Content (cat), Set-Content, Copy-Item (cp), Remove-Item (rm), New-Item
NetzwerkInvoke-WebRequest (curl), Invoke-RestMethod, Test-Connection, Test-NetConnection
DatenConvertTo-Json, ConvertFrom-Json, Import-Csv, Export-Csv, ConvertTo-Csv
ZeitGet-Date, New-TimeSpan, Start-Sleep

Operatoren auf einen Blick

Vergleich:  -eq -ne -gt -ge -lt -le   (Groß/Klein egal; -ceq -cne: unterscheidet)
Text:       -like -notlike  -match -notmatch  -replace  -split  -join  -f
Menge:      -in -notin  -contains -notcontains
Logik:      -and -or -not -xor  !
Typ:        -is -isnot -as
Umleitung:  >  >>  2>  2>&1  *>
PS 7:       ?:  ??  ??=  &&  ||  (Pipeline-Verkettung)

Automatische Variablen

VariableBedeutung
$_ / $PSItemaktuelles Objekt in der Pipeline
$argsnicht benannte Argumente
$?war der letzte Befehl erfolgreich?
$LASTEXITCODEExit-Code des letzten externen Programms
$ErrorListe der letzten Fehler
$PSScriptRootOrdner des laufenden Skripts
$HOME, $PWD, $PIDHome, aktueller Ordner, Prozess-ID
$env:NAMEUmgebungsvariable
$IsWindows, $IsLinux, $IsMacOSPlattform

Muster

# Splatting, Pipeline mit berechneten Eigenschaften, formatierte Ausgabe
$daten = 1..5 | ForEach-Object { [pscustomobject]@{ Nr = $_; Quadrat = $_ * $_; Gerade = $_ % 2 -eq 0 } }
$daten | Where-Object Gerade | Select-Object Nr, Quadrat | ForEach-Object { "$($_.Nr) -> $($_.Quadrat)" }
$daten | Measure-Object Quadrat -Sum | Select-Object -ExpandProperty Sum
($daten | Sort-Object Quadrat -Descending | Select-Object -First 1).Nr
"{0:N1} MB" -f (1536000 / 1MB)
1KB, 1MB, 1GB
$null -eq $undefiniert
$PSVersionTable.PSEdition

Ausgabe:

2 -> 4
4 -> 16
55
5
1.5 MB
1024
1048576
1073741824
True
Core

Häufige Fehler

ProblemUrsache / Lösung
> statt -gt> leitet Ausgabe in eine Datei um, Vergleich ist -gt
try/catch fängt nichtsFehler ist nicht abbrechend: -ErrorAction Stop
Funktion gibt unerwartete Werte zurückalle Ausgaben werden zurückgegeben: $null = ... oder `
Format-Table in der Mitte der Pipelinenur zum Anzeigen am Ende
Array wird langsam+= kopiert; List[T] oder Ergebnis der Schleife sammeln
Leerzeichen im PfadPfad in Anführungszeichen, Join-Path nutzen
Skripte sind auf diesem System deaktiviertSet-ExecutionPolicy RemoteSigned -Scope CurrentUser
Alias in SkriptenAliase wie ls, % nur interaktiv; in Skripten volle Namen
Write-Host für ErgebnisseRückgaben mit Write-Output; Write-Host nur für Anzeigen

Weiterlernen

  • learn.microsoft.com/powershell (Handbuch), PowerShell in a Month of Lunches, PowerShell.org
  • Pester für Tests, PSScriptAnalyzer für Stil, VS Code mit PowerShell-Erweiterung
  • Wiki dieser Seite: Artikel zu Windows-Administration und Automatisierung

Merke

  • Alles ist ein Objekt: Pipeline, Where-Object, Select-Object, Sort-Object
  • Cmdlets Verb-Nomen, Hilfe mit Get-Help/Get-Member
  • Skripte robust machen: Set-StrictMode, $ErrorActionPreference = "Stop", try/catch
  • PowerShell 7 läuft überall; Module aus der Gallery erweitern es

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Projekte: Praxisskripte

Alle Kapitel: PowerShell im Überblick