PowerShell:
Läsa in kommandoradsargument
Hur gör man:
# Spara detta som test-script.ps1
# Skriv ut alla argument
param($Argument1, $Argument2, $Argument3)
Write-Host "Argument 1: $Argument1"
Write-Host "Argument 2: $Argument2"
Write-Host "Argument 3: $Argument3"
# Använda $args-array för att fånga alla argument
Write-Host "`nAlla argument med `$args:"
$args | ForEach-Object { Write-Host "Argument: $_" }
Kör skript så här i PowerShell:
.\test-script.ps1 -Argument1 'värde1' -Argument2 'värde2' -Argument3 'värde3'
Du får detta:
Argument 1: värde1
Argument 2: värde2
Argument 3: värde3
Alla argument med $args:
Argument: värde1
Argument: värde2
Argument: värde3
Fördjupning:
Kommandoradsargument i PowerShell har lång tradition, med rötter i Unix shell-scripting. PowerShell utökar detta med stöd för namngivna argument (som ovan) och möjligheten att behandla argument som starkt typade parametrar.
Andra alternativ för att läsa argument inkluderar $host.ui.Prompt()
för interaktiva förfrågningar eller att använda avancerade parametrar och parametrark block för att definiera beteende som obligatoriska argument eller att validera input.
Detaljer kring implementation:
param()
definierar parametrar i början av scriptet.$args
-arrayen används när parametrar inte är namngivna eller för att fånga ytterligare argument.Write-Host
använder vi för att skriva output direkt till konsolen.
För mer komplexa argumenthantering kan man skapa en Param
-block med CmdletBinding
för att aktivera avancerade funktioner som Mandatory
, HelpMessage
, och Parameter Sets
.