acessando a matriz $ args em powershell
tenho um script de teste powershell V2 que se parece com este:
function test_args()
{
Write-Host "here's arg 0: $args[0]"
Write-Host "here's arg 1: $args[1]"
}
test_args
Se eu ligar para isto do comando powershell, consigo isto no ecrã:
here's arg[0]: [0]
here's arg[1]: [1]
Não era bem o que eu queria. Parece que tenho que copiar $args[0] e $args[1] para novas variáveis no script antes de poder usá-las? Se o fizer, posso aceder bem às coisas.
Há alguma forma de aceder aos $args indexados no meu código? Tentei usar aparelho em torno deles de várias maneiras, mas sem sorte.
Eu vou mudar para parâmetros nomeados eventualmente, mas o script que estou trabalhando (não esta demo) é uma porta reta de um arquivo de lote.
22
1 answers
Tenta isto em vez disso:
function test_args()
{
Write-Host "here's arg 0: $($args[0])"
Write-Host "here's arg 1: $($args[1])"
}
test_args foo bar
Note que é {[1] } e não $arg
. Também quando você usa uma variável PowerShell em uma string, PowerShell só substitui o valor da variável. Você não pode usar diretamente uma expressão como $args[0]
. No entanto, você pode colocar a expressão dentro de um grupo de sub-expressão $()
dentro de uma cadeia de duas citações para obter PowerShell para avaliar a expressão e, em seguida, converter o resultado para uma cadeia de caracteres.
34
Author: Keith Hill, 2012-09-09 18:33:10