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.

Author: larryq, 2012-09-08

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