Ich habe ein Test-Powershell-V2-Skript, das so aussieht:
function test_args()
{
Write-Host "here's arg 0: $args[0]"
Write-Host "here's arg 1: $args[1]"
}
test_args
Wenn ich dies von der Powershell-Eingabeaufforderung aus aufrufe, wird Folgendes auf dem Bildschirm angezeigt:
here's arg[0]: [0]
here's arg[1]: [1]
Nicht ganz das, was ich wollte. Es scheint, dass ich $ args [0] und $ args [1] in neue Variablen im Skript kopieren muss, bevor ich sie verwenden kann? Wenn ich das tue, kann ich gut darauf zugreifen.
Gibt es eine Möglichkeit, auf die indizierten $ args in meinem Code zuzugreifen? Ich habe versucht, geschweifte Klammern um sie herum zu verwenden, aber kein Glück.
Ich werde irgendwann zu benannten Parametern übergehen, aber das Skript, an dem ich arbeite (nicht dieses Demo-Skript), ist ein direkter Port einer Batch-Datei.
Versuchen Sie dies stattdessen:
function test_args()
{
Write-Host "here's arg 0: $($args[0])"
Write-Host "here's arg 1: $($args[1])"
}
test_args foo bar
Beachten Sie, dass es sich um $args
Und nicht um $arg
Handelt. Auch wenn Sie eine PowerShell-Variable in einer Zeichenfolge verwenden, ersetzt PowerShell nur den Wert der Variablen. Sie können einen Ausdruck wie $args[0]
Nicht direkt verwenden. Sie können den Ausdruck jedoch in einer $()
-Unterausdrucksgruppe in eine Zeichenfolge mit doppelten Anführungszeichen einfügen, damit PowerShell den Ausdruck auswertet und das Ergebnis in eine Zeichenfolge konvertiert.