J'ai un script PowerShell V2 de test qui ressemble à ceci:
function test_args()
{
Write-Host "here's arg 0: $args[0]"
Write-Host "here's arg 1: $args[1]"
}
test_args
Si j'appelle cela à partir de l'invite de commande powershell, je l'obtiens à l'écran:
here's arg[0]: [0]
here's arg[1]: [1]
Pas tout à fait ce que je voulais. Il semble que je doive copier $ args [0] et $ args [1] dans de nouvelles variables du script avant de pouvoir les utiliser? Si je fais cela, je peux accéder aux choses correctement.
Existe-t-il un moyen d'accéder aux $ args indexés dans mon code? J'ai essayé d'utiliser des accolades autour d'eux de diverses manières, mais pas de chance.
Je vais finalement passer aux paramètres nommés, mais le script sur lequel je travaille (pas celui-ci) est un port direct d'un fichier batch.
Essayez plutôt ceci:
function test_args()
{
Write-Host "here's arg 0: $($args[0])"
Write-Host "here's arg 1: $($args[1])"
}
test_args foo bar
Notez qu'il s'agit de $args
Et non de $arg
. De plus, lorsque vous utilisez une variable PowerShell dans une chaîne, PowerShell ne remplace que la valeur de la variable. Vous ne pouvez pas utiliser directement une expression comme $args[0]
. Cependant, vous pouvez placer l'expression dans un groupe de sous-expressions $()
à l'intérieur d'une chaîne entre guillemets doubles pour que PowerShell évalue l'expression, puis convertit le résultat en chaîne.