MaisTools
Anleitungen/

PowerShell Spickzettel

Schnelle PowerShell-Referenz: Cmdlets, Flags, Beispiele und Objekt-Pipeline, nach Abschnitt organisiert mit Sofortsuche.

PowerShell Spickzettel

Cmdlets, Objekt-Pipeline und One-Liner

Navigation

Get-ChildItem

Listet Dateien und Verzeichnisse. Aliase ls, gci, dir. -Recurse läuft durch alles, -Force zeigt versteckte.

Flags-Recurse-Force-Filter-Include-Exclude-File-Directory-Depth
Beispiel
Get-ChildItem
Get-ChildItem -Recurse -Filter *.ts
Get-ChildItem -Force
gci -Directory
Set-Location

Wechselt das aktuelle Verzeichnis. Alias cd. Unterstützt - für das vorherige und ~ für das Home.

Flags-Path-LiteralPath-PassThru
Beispiel
Set-Location s:\MaisTools
cd ~
cd ..
Get-Location

Zeigt den aktuellen Pfad. Alias pwd.

Beispiel
Get-Location
pwd
Test-Path

Prüft, ob ein Pfad existiert. Gibt $true oder $false zurück.

Flags-PathType-IsValid-NewerThan-OlderThan
Beispiel
Test-Path .\file.txt
Test-Path .\src -PathType Container
if (Test-Path .\dir) { 'existe' }
Push-Location / Pop-Location

Speichert das aktuelle Verzeichnis auf einem Stack (Push) und kehrt später zurück (Pop). Nützlich in Skripten.

Flags-Path-StackName
Beispiel
Push-Location C:\Temp
# ...trabalho aqui...
Pop-Location
Resolve-Path

Löst einen relativen Pfad zu einem absoluten auf, oder umgekehrt mit -Relative.

Flags-Relative-LiteralPath
Beispiel
Resolve-Path .\src
Resolve-Path -Relative C:\Temp\file.txt

Dateien

New-Item

Erstellt Dateien, Verzeichnisse oder Symlinks. -ItemType legt den Typ fest. -Force auf bestehender Datei kürzt sie.

Flags-ItemType-Path-Force-Value
Beispiel
New-Item -ItemType File novo.txt
New-Item -ItemType Directory -Force pasta\sub
New-Item -ItemType SymbolicLink -Path link -Target target
Copy-Item

Kopiert Dateien oder Verzeichnisse. -Recurse für Bäume, -Force überschreibt das Ziel.

Flags-Recurse-Force-Filter-Include-Exclude-Destination
Beispiel
Copy-Item a.txt b.txt
Copy-Item -Recurse src\ dest\
Copy-Item *.log -Destination archive\
Move-Item

Verschiebt oder benennt Dateien und Verzeichnisse um.

Flags-Force-Destination-Filter
Beispiel
Move-Item old.txt new.txt
Move-Item *.log archive\
Remove-Item

Löscht Dateien oder Verzeichnisse. -Recurse -Force löscht ohne Bestätigung (gefährlich).

Flags-Recurse-Force-Filter-Include-Confirm
Beispiel
Remove-Item file.txt
Remove-Item -Recurse -Force node_modules
Remove-Item *.tmp
Rename-Item

Benennt Dateien um. Akzeptiert ScriptBlock in -NewName für Massenumbenennungen.

Flags-NewName-Force
Beispiel
Rename-Item old.txt new.txt
Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '\.txt$','.md' }
Get-Item

Holt Informationen zu einem Element (Length, LastWriteTime, etc.). Liest keinen Inhalt, nur Metadaten.

Flags-Force-Stream
Beispiel
Get-Item .\file.txt
(Get-Item file.txt).Length
Get-Item file.txt | Select-Object Name, Length, LastWriteTime

Inhalt

Get-Content

Liest den Inhalt einer Datei. -TotalCount wie head, -Tail wie tail, -Wait folgt wie tail -f.

Flags-TotalCount-Tail-Wait-Raw-Encoding
Beispiel
Get-Content file.txt
Get-Content file.txt -TotalCount 10
Get-Content file.txt -Tail 20
Get-Content app.log -Wait -Tail 100
Set-Content

Schreibt Inhalt in eine Datei und überschreibt sie. -Encoding utf8 vermeidet den PS 5.1 Default UTF-16 mit BOM.

Flags-Value-Encoding-Force-NoNewline
Beispiel
Set-Content out.txt 'linha'
'a','b','c' | Set-Content lista.txt -Encoding utf8
Add-Content

Fügt Inhalt an eine bestehende Datei an. Entspricht >> in bash.

Flags-Value-Encoding
Beispiel
Add-Content log.txt 'nova entrada'
Get-Date | Add-Content log.txt
Out-File

Leitet Ausgabe in eine Datei um. -Append hängt an, -Encoding steuert die Codierung.

Flags-FilePath-Append-Encoding-Width
Beispiel
Get-Process | Out-File processes.txt
Get-Service | Out-File -Append -Encoding utf8 services.log
Clear-Content

Leert den Inhalt einer Datei, ohne sie zu löschen.

Flags-Path-Force
Beispiel
Clear-Content log.txt
Clear-Content *.tmp

Pipeline

Where-Object

Filtert Objekte in der Pipeline nach Bedingung. Aliase ? und where. Unterstützt Kurzsyntax Eigenschaft -op Wert.

Flags-FilterScript-Property
Beispiel
Get-Process | Where-Object { $_.CPU -gt 10 }
Get-Service | Where-Object Status -eq Running
gci | ? { $_.Length -gt 1MB }
Sort-Object

Sortiert Objekte nach Eigenschaft. -Descending kehrt um, -Unique entfernt Duplikate.

Flags-Property-Descending-Unique
Beispiel
Get-Process | Sort-Object CPU -Descending
Get-ChildItem | Sort-Object Length -Descending
'b','a','c' | Sort-Object
Select-Object

Wählt N Objekte aus der Pipeline oder Eigenschaften jedes Objekts. -ExpandProperty extrahiert den Wert.

Flags-First-Last-Skip-Property-ExpandProperty-Unique
Beispiel
Get-Process | Select-Object -First 5
Get-Process | Select-Object Name, CPU, WS
Get-Service | Select-Object -ExpandProperty Name
ForEach-Object

Iteriert durch die Pipeline und wendet einen Block auf jedes Objekt an. Aliase % und foreach. -Parallel parallel (PS 7+).

Flags-Process-Begin-End-Parallel
Beispiel
Get-ChildItem | ForEach-Object { $_.Name.ToUpper() }
1..5 | %{ $_ * 2 }
$urls | ForEach-Object -Parallel { Invoke-WebRequest $_ }
Measure-Object

Zählt, summiert, Durchschnitt, Max oder Min einer Sammlung. -Line, -Word, -Character für Text.

Flags-Property-Sum-Average-Maximum-Minimum-Line-Word-Character
Beispiel
Get-Process | Measure-Object -Property WS -Sum -Average
Get-Content file.txt | Measure-Object -Line
Get-ChildItem | Measure-Object
Group-Object

Gruppiert Objekte nach Eigenschaft. Nützlich um Vorkommen zu zählen oder Dictionaries mit -AsHashTable zu bauen.

Flags-Property-NoElement-AsHashTable
Beispiel
Get-Process | Group-Object ProcessName
Get-ChildItem | Group-Object Extension -NoElement

Suche

Select-String

Sucht Muster in Strings oder Dateien. Das grep-Äquivalent. -Pattern akzeptiert Regex, -SimpleMatch deaktiviert es.

Flags-Pattern-Path-Recurse-CaseSensitive-NotMatch-Context-SimpleMatch
Beispiel
Select-String 'TODO' *.ts
Select-String -Path src\*.ts -Pattern 'error' -CaseSensitive
Get-ChildItem -Recurse | Select-String 'API_KEY'
Get-Command

Zeigt verfügbare Cmdlets mit Filter nach Name, Modul oder Typ. (Get-Command npm).Source liefert den Pfad.

Flags-Name-Module-CommandType-All
Beispiel
Get-Command npm
Get-Command *process*
(Get-Command npm).Source
Get-Command -Module Microsoft.PowerShell.Utility
Get-Member

Zeigt Eigenschaften und Methoden eines Objekts. Unverzichtbar um zu entdecken, was man mit einem Typ tun kann.

Flags-MemberType-Static-Name
Beispiel
Get-Process | Get-Member
(Get-Date) | Get-Member -MemberType Method
'abc' | Get-Member
Get-Help

Zeigt Hilfe zu Cmdlets oder about_*-Themen. -Examples zeigt Beispiele, -Online öffnet die Web-Version.

Flags-Full-Examples-Online-Detailed-Parameter
Beispiel
Get-Help Get-ChildItem
Get-Help Get-Process -Examples
Get-Help about_Variables
Get-Help Set-Content -Online

Variablen

$variable

Variablen beginnen mit $ und brauchen keine Deklaration. Unterstützen Arrays (@()) und Hashtables (@{}).

Beispiel
$nome = 'Bruno'
$idade = 30
$lista = @(1, 2, 3)
$hash = @{ a = 1; b = 2 }
$env:

Liest und setzt Umgebungsvariablen. Get-ChildItem env: listet alle. Änderung gilt nur in der aktuellen Sitzung.

Beispiel
$env:PATH
$env:USERPROFILE
$env:DEBUG = 'true'
Get-ChildItem env:
$null

Null-Wert. Bei Vergleichen $null links setzen ($null -eq $x), um Überraschungen mit Arrays zu vermeiden.

Beispiel
if ($null -eq $var) { 'vazio' }
$lista = @($null, 1, 2)
[string]::IsNullOrEmpty($x)
[typ]

Typumwandlung mit [typ]. Funktioniert für int, string, datetime, typisierte Arrays, Regex.

Beispiel
[int]'42'
[datetime]'2026-01-15'
[int[]]$nums = 1,2,3
[regex]::Escape($pattern)
$global: / $script: / $local:

Legt den Gültigkeitsbereich einer Variable fest: global (gesamte Sitzung), script (diese Datei) oder local (diese Funktion).

Beispiel
$global:config = @{}
$script:contador = 0
function f { $local:tmp = 1 }

Strings

"$var" Interpolation

Doppelte Anführungszeichen erweitern $var und $(expr). Einfache sind literal und erweitern nichts.

Beispiel
$nome = "Bruno"
"Olá $nome"
"Caminho: $($obj.Property)"
'literal $nome'  # sem expansão
@"..."@ / @'...'@

Mehrzeilige Strings (Here-Strings). @"..."@ erweitert Variablen, @'...'@ ist literal. Schließendes Token muss in Spalte 0 stehen.

Beispiel
@"
linha 1 com $nome
linha 2
"@

@'
literal $nome
'@
-f (Format)

Format-Operator im printf-Stil. Unterstützt Zahlen, Daten und Ausrichtung ({0,5:N2}).

Beispiel
'{0} tem {1} anos' -f $nome, $idade
'{0:N2}' -f 1234.5678  # 1,234.57
'{0:yyyy-MM-dd}' -f (Get-Date)
-replace / -split / -join

String-Operationen: -replace nutzt Regex, -split teilt in Array, -join verbindet Array zu String.

Beispiel
'abc123' -replace '\d', 'X'
'a,b,c' -split ','
@('a','b','c') -join ', '

Kontrolle

if / elseif / else

Bedingungsstruktur. Nutzt PowerShell-Operatoren (-eq, -lt) statt == oder <.

Beispiel
if (Test-Path .\file) {
  'existe'
} elseif ($x -gt 0) {
  'positivo'
} else {
  'outro'
}
switch

Alternative zu verketteten ifs. -Regex und -Wildcard aktivieren Muster, -File liest Zeilen aus einer Datei.

Flags-Regex-Wildcard-CaseSensitive-File
Beispiel
switch ($x) {
  1 { 'um' }
  2 { 'dois' }
  default { 'outro' }
}

switch -Regex ($texto) {
  '^\d+$' { 'número' }
}
foreach / for / while

Schleifen über Sammlungen (foreach), mit Zähler (for), während Bedingung (while), oder mindestens einmal (do/while).

Beispiel
foreach ($f in Get-ChildItem) { $f.Name }
for ($i = 0; $i -lt 5; $i++) { $i }
while ($cond) { ... }
do { ... } while ($cond)
try / catch / finally

Fehlerbehandlung. Um nicht-terminierende Fehler abzufangen, nutze -ErrorAction Stop am Cmdlet.

Beispiel
try {
  Cmdlet -ErrorAction Stop
} catch [System.IO.IOException] {
  Write-Error "IO: $_"
} catch {
  Write-Error $_
} finally {
  Cleanup
}
break / continue / return

break verlässt die Schleife, continue springt zur nächsten Iteration, return verlässt die Funktion.

Beispiel
foreach ($x in 1..10) {
  if ($x -eq 5) { break }
  if ($x % 2 -eq 0) { continue }
  $x
}

Operatoren

-eq -ne -lt -gt -le -ge

Vergleichsoperatoren. Es gibt kein == in PowerShell, nutze immer -eq, -ne, -lt, -gt, -le, -ge.

Beispiel
$x -eq 5     # igual
$x -ne 5     # diferente
$x -lt 10    # menor
$x -gt 0     # maior
$x -le 10    # menor ou igual
$x -ge 0     # maior ou igual
-like / -match / -contains / -in

Weitere Operatoren: -like nutzt Wildcards, -match nutzt Regex, -contains prüft Zugehörigkeit, -in ist die Umkehrung.

Beispiel
'file.txt' -like '*.txt'         # wildcards
'abc123' -match '\d+'             # regex
@(1,2,3) -contains 2              # pertença
2 -in @(1,2,3)                   # pertença (invertido)
-and / -or / -not / -xor

Logische Operatoren. -and, -or, -not, -xor. ! ist Alias für -not.

Beispiel
($x -gt 0) -and ($x -lt 10)
($a -eq 1) -or ($b -eq 2)
-not (Test-Path .\file)
!$cond

Prozesse

Get-Process

Listet Prozesse mit Eigenschaften (CPU, WS, Id, ProcessName). Ohne Argument werden alle aufgelistet.

Flags-Name-Id-IncludeUserName-Module
Beispiel
Get-Process
Get-Process node, chrome
Get-Process -Id 1234
Stop-Process

Beendet Prozesse nach Name oder Id. -Force vermeidet Bestätigung. Kann Objekte aus der Pipeline empfangen.

Flags-Name-Id-Force-PassThru
Beispiel
Stop-Process -Name node
Stop-Process -Id 1234 -Force
Get-Process node | Stop-Process
Start-Process

Startet ein Programm. -Wait blockiert bis zum Ende, -NoNewWindow läuft in der aktuellen Konsole, -Verb RunAs erhöht.

Flags-FilePath-ArgumentList-WorkingDirectory-Wait-NoNewWindow-Verb
Beispiel
Start-Process notepad
Start-Process npm -ArgumentList 'run','dev'
Start-Process pwsh -Verb RunAs
Wait-Process

Wartet auf das Ende eines Prozesses. -Timeout bricht nach N Sekunden ab.

Flags-Name-Id-Timeout
Beispiel
Wait-Process -Name node
Wait-Process -Id 1234 -Timeout 30
& (Aufrufoperator)

Führt einen Befehl oder ein Skript aus. Nötig bei Pfaden mit Leerzeichen oder dynamischen Aufrufen.

Beispiel
& 'C:\Program Files\App\app.exe' arg1 arg2
& $cmd
& { Get-Process; Get-Service }

Daten

ConvertFrom-Json

Konvertiert JSON in PowerShell-Objekte. -AsHashtable liefert Hashtable (PS 6+) statt PSCustomObject.

Flags-AsHashtable-Depth-NoEnumerate
Beispiel
Get-Content pkg.json | ConvertFrom-Json
'{"a":1}' | ConvertFrom-Json
$obj.dependencies
ConvertTo-Json

Konvertiert PowerShell-Objekte in JSON. -Depth steuert die Tiefe (Default 2, meist zu niedrig).

Flags-Depth-Compress-AsArray
Beispiel
$obj | ConvertTo-Json -Depth 10
@{a=1; b=2} | ConvertTo-Json -Compress
Get-Process | Select-Object Name,Id | ConvertTo-Json
Import-Csv

Liest CSV in Objekte mit Eigenschaften. -Delimiter für ; oder andere, -Header wenn die Datei keinen Header hat.

Flags-Path-Delimiter-Header-Encoding
Beispiel
Import-Csv users.csv
Import-Csv data.csv -Delimiter ';' -Encoding utf8
Export-Csv

Exportiert Objekte als CSV. -NoTypeInformation entfernt die Typzeile oben (Default in PS 6+).

Flags-Path-Delimiter-NoTypeInformation-Append-Encoding
Beispiel
Get-Process | Export-Csv processes.csv -NoTypeInformation
$data | Export-Csv out.csv -Encoding utf8 -Delimiter ';'

Netzwerk

Invoke-WebRequest

Vollwertiger HTTP-Client. Liefert die Antwort als Objekt mit .Content, .StatusCode, .Headers. Alias iwr.

Flags-Uri-Method-Headers-Body-OutFile-UseBasicParsing
Beispiel
Invoke-WebRequest https://example.com
iwr https://api.example.com -OutFile data.json
iwr -Uri $url -Method POST -Body $body
Invoke-RestMethod

HTTP-Client, der JSON oder XML automatisch in Objekte parst. Häufigster für REST-APIs. Alias irm.

Flags-Uri-Method-Headers-Body-ContentType
Beispiel
Invoke-RestMethod https://api.github.com/users/octocat
irm $url -Method POST -Body ($obj | ConvertTo-Json) -ContentType 'application/json'
Test-NetConnection

Testet TCP-Konnektivität zu Host und Port. Nur Windows. Auf Linux/macOS nutze Test-Connection -TcpPort (PS 7+).

Flags-ComputerName-Port-TraceRoute-CommonTCPPort
Beispiel
Test-NetConnection google.com -Port 443
Test-NetConnection -ComputerName 8.8.8.8 -TraceRoute
Test-Connection

Ping-Äquivalent. -Count begrenzt Pakete, -Quiet gibt nur $true oder $false zurück.

Flags-ComputerName-Count-Quiet-Delay
Beispiel
Test-Connection google.com -Count 4
Test-Connection 8.8.8.8 -Quiet  # bool

Module

Get-Module

Listet Module. -ListAvailable zeigt alle installierten, nicht nur die geladenen.

Flags-ListAvailable-Name-All
Beispiel
Get-Module
Get-Module -ListAvailable
Get-Module -Name Pester
Import-Module

Lädt ein Modul in die aktuelle Sitzung. -Force lädt neu, falls bereits importiert.

Flags-Name-Force-Prefix-Function
Beispiel
Import-Module Pester
Import-Module .\MeuModulo.psm1 -Force
Install-Module

Installiert Module aus der PowerShell Gallery. -Scope CurrentUser vermeidet Admin-Rechte.

Flags-Name-Scope-Force-AllowClobber-RequiredVersion
Beispiel
Install-Module Pester -Scope CurrentUser
Install-Module Az -Force -AllowClobber
Find-Module

Sucht nach verfügbaren Modulen in der PowerShell Gallery.

Flags-Name-Tag-Filter
Beispiel
Find-Module Az*
Find-Module -Tag azure

Erweitert

Start-Job / Receive-Job

Führt Code im Hintergrund aus. Receive-Job holt die Ergebnisse, -Wait blockiert bis fertig.

Flags-ScriptBlock-Name-ArgumentList
Beispiel
$j = Start-Job { Get-Process }
Receive-Job $j -Wait -AutoRemoveJob
Get-Job | Remove-Job
Start-ThreadJob

Leichte Thread-basierte Background-Jobs (schneller als Start-Job). In PS 7+ enthalten, in 5.1 mit Install-Module ThreadJob installieren.

Flags-ScriptBlock-ThrottleLimit-StreamingHost
Beispiel
$j = Start-ThreadJob { 1..10 | %{ $_ * 2 } }
$urls | ForEach-Object -Parallel { iwr $_ } -ThrottleLimit 5
Measure-Command

Misst die Ausführungszeit eines Blocks. Liefert TimeSpan mit TotalSeconds, TotalMilliseconds, etc.

Flags-Expression
Beispiel
Measure-Command { Get-ChildItem -Recurse }
(Measure-Command { ./script.ps1 }).TotalSeconds
Invoke-Command

Führt Befehle auf einer Remote-Maschine via WinRM aus. Unterstützt persistente Sessions mit -Session.

Flags-ComputerName-ScriptBlock-Session-Credential-AsJob
Beispiel
Invoke-Command -ComputerName server01 -ScriptBlock { Get-Service }
Invoke-Command -Session $s -ScriptBlock { hostname }
Start-Sleep

Pausiert die Ausführung für N Sekunden oder Millisekunden.

Flags-Seconds-Milliseconds
Beispiel
Start-Sleep -Seconds 5
Start-Sleep -Milliseconds 250

Referenz

Objekt-Pipeline

Im Gegensatz zu bash transportiert die PowerShell-Pipeline Objekte mit Eigenschaften und Methoden. Jedes Cmdlet kann direkt auf .Length, .Name, .CPU zugreifen, ohne Text zu parsen.

Beispiel
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
# objectos fluem entre comandos com propriedades preservadas

Get-ChildItem | Where-Object Length -gt 1MB
# Each item retains its full type — pode aceder a .Length, .Name, etc.

Get-Service | Group-Object Status | Format-Table Name, Count
Datei-Codierung

Die Default-Codierung hat sich zwischen Versionen geändert. Zu wissen, welche aktiv ist, verhindert BOMs und kaputte Zeichen in Skripten und Logs, die mit anderen Tools geteilt werden.

PowerShell 5.1
  • Default variiert je nach Cmdlet: Out-File nutzt UTF-16 LE mit BOM, Set-Content nutzt Default (ANSI/Windows-1252).
  • Keines erzeugt UTF-8 ohne -Encoding. Gib immer -Encoding utf8 an für Dateien, die mit Unix-Tools geteilt werden.
PowerShell 7+
  • Default: UTF-8 ohne BOM.
  • Verhalten am Ökosystem ausgerichtet. In beiden garantiert -Encoding utf8 UTF-8.
Beispiel
Set-Content file.txt 'texto' -Encoding utf8
Out-File log.txt -Encoding utf8 -InputObject $data
[System.IO.File]::WriteAllText('file.txt', 'texto', [System.Text.UTF8Encoding]::new($false))
Fehler und Exit-Codes

PowerShell unterscheidet terminierende von nicht-terminierenden Fehlern. Cmdlets scheitern standardmäßig stumm, nutze -ErrorAction Stop, um try/catch sie fangen zu lassen.

-ErrorAction
  • ContinueStandardverhalten, zeigt Fehler und macht weiter.
  • Stopmacht es zu einem terminierenden Fehler (abfangbar).
  • SilentlyContinueversteckt den Fehler, aber $? wird $false.
  • Ignoreversteckt und protokolliert nicht in $Error.
Status
  • $?$true wenn der letzte Befehl erfolgreich war.
  • $LASTEXITCODEExit-Code der letzten nativen Anwendung.
  • $Error[0]Objekt des letzten aufgezeichneten Fehlers.
Beispiel
try {
  Get-Item .\file -ErrorAction Stop
} catch [System.IO.FileNotFoundException] {
  Write-Warning "ficheiro não encontrado"
} catch {
  Write-Error $_.Exception.Message
}

# verificar saída de processo nativo
git status
if ($LASTEXITCODE -ne 0) { throw "git falhou" }
Unterschiede zwischen 5.1 und 7+

Windows PowerShell 5.1 (powershell.exe) und PowerShell 7+ (pwsh.exe) haben unterschiedliche Syntax und Features. Diese Details brechen Skripte beim Wechsel zwischen Versionen.

  • A && B / A || BDie Operatoren && und || gibt es nur in PS 7+. In 5.1 nutze: A; if ($?) { B }
  • $x ? a : bDen ternären Operator ?: gibt es nur in PS 7+. In 5.1 nutze if/else.
  • $x ?? yDen Null-Coalescing-Operator ?? gibt es nur in PS 7+.
  • ConvertFrom-Json -AsHashtableConvertFrom-Json -AsHashtable gibt es nur ab PS 6+.
  • ForEach-Object -ParallelForEach-Object -Parallel gibt es nur in PS 7+.
20 essenzielle One-Liner

Häufige Kombinationen für Automatisierung und Administration. Jeder löst eine spezifische Aufgabe in einer einzigen Pipeline.

  • 01.Findet Dateien größer als 100MB rekursiv.
    Get-ChildItem -Recurse -File | Where-Object Length -gt 100MB
  • 02.Listet die 10 größten Dateien im aktuellen Verzeichnis.
    Get-ChildItem | Sort-Object Length -Descending | Select-Object -First 10
  • 03.Zeigt die 10 Prozesse mit dem höchsten Speicherverbrauch.
    Get-Process | Sort-Object WS -Descending | Select-Object -First 10
  • 04.Zeigt die 10 Prozesse mit dem höchsten CPU-Verbrauch.
    Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
  • 05.Zählt die Gesamtzahl der Dateien rekursiv.
    Get-ChildItem -Recurse -File | Measure-Object | Select-Object -ExpandProperty Count
  • 06.Löscht alle .tmp-Dateien rekursiv.
    Get-ChildItem -Recurse -Filter *.tmp | Remove-Item
  • 07.Sucht TODO in allen TypeScript-Dateien.
    Get-ChildItem -Recurse -File | Where-Object Extension -in '.ts','.tsx' | Select-String 'TODO'
  • 08.Holt die öffentliche externe IP der aktuellen Maschine.
    (Invoke-WebRequest ifconfig.me -UseBasicParsing).Content.Trim()
  • 09.Listet TCP-Ports im Lauschmodus mit dem zugehörigen Prozess.
    Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess
  • 10.Verfolgt ein Log live ab den letzten 100 Zeilen.
    Get-Content app.log -Wait -Tail 100
  • 11.Holt aktuelles Datum und Uhrzeit in einem für Dateinamen tauglichen Format.
    Get-Date -Format 'yyyy-MM-dd_HH-mm-ss'
  • 12.Erstellt ein Zip-Backup mit dem Datum im Dateinamen.
    Compress-Archive -Path .\src -DestinationPath "backup-$(Get-Date -Format yyyy-MM-dd).zip"
  • 13.Formatiert und gibt JSON expandiert für maximale Lesbarkeit aus.
    Get-Content data.json | ConvertFrom-Json | ConvertTo-Json -Depth 10
  • 14.Listet alle Umgebungsvariablen alphabetisch sortiert.
    Get-ChildItem env: | Sort-Object Name
  • 15.Listet alle aktuell laufenden Dienste.
    Get-Service | Where-Object Status -eq 'Running'
  • 16.Testet, ob ein TCP-Port auf einem Remote-Host offen ist.
    Test-NetConnection google.com -Port 443
  • 17.Zeigt freien Speicherplatz auf jedem Laufwerk des Systems.
    Get-Volume | Select-Object DriveLetter, SizeRemaining, Size
  • 18.Zeigt die letzten 20 Befehle aus dem Sitzungsverlauf.
    Get-History | Select-Object -Last 20
  • 19.Zeigt den vollständigen Pfad eines Befehls (which-Äquivalent).
    (Get-Command npm).Source
  • 20.Listet Dateien, die in den letzten 7 Tagen geändert wurden.
    Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }