PowerShell:
Lesen von Kommandozeilenargumenten
How to:
Mit PowerShell Argumente zu lesen, ist super einfach. Benutze die automatische Variable $args
. Hier ein Beispiel:
# hello.ps1
param(
[string]$Name = "Welt"
)
Write-Host "Hallo, $Name!"
# Beispielaufruf mit Argument
# PS > .\hello.ps1 -Name "PowerShell Nutzer"
# Beispieloutput:
# Hallo, PowerShell Nutzer!
Wenn du $args
direkt nutzt:
# direct_args.ps1
# Ergebnis ausgeben
$args.ForEach({
Write-Host "Argument: $_"
})
# Beispielaufruf ohne parameterübergabe
# PS > .\direct_args.ps1 Das ist cool!
# Beispieloutput:
# Argument: Das
# Argument: ist
# Argument: cool!
Deep Dive
PowerShell Argumente sind nicht neu. Schon in alten Batch-Dateien gabs %1
, %2
, usw. PowerShell macht’s moderner mit $args
und param()
.
Alternativen gibt’s natürlich. $PSBoundParameters
für Named-Parameter und Argument-Transformation durch Funktionen oder Skriptblöcke.
Bei der Implementierung von Kommandozeilenargumenten kommt es darauf an, wie komplex deine Parameterlogik ist. Einfache Skripte kommen oft mit $args
aus, für mehr Komplexität sind param()
-Blöcke und explizite Parameterdefinitionen besser.