Подтвердить что ты не робот

Доступ к массиву $args в powershell

У меня есть test powershell V2 script, который выглядит так:

    function test_args()
    {
      Write-Host "here arg 0: $args[0]"
      Write-Host "here arg 1: $args[1]"
    }


    test_args

Если я вызываю это из командной строки powershell, я получаю это на экране:

here arg[0]: [0]

here arg[1]: [1]

Не совсем то, что я хотел. Кажется, мне нужно скопировать $args [0] и $args [1] новым переменным в script, прежде чем я смогу их использовать? Если я это сделаю, я получу доступ к вещам.

Есть ли способ получить доступ к индексированным $args в моем коде? Я пытался использовать фигурные скобки вокруг них разными способами, но не повезло.

В конечном итоге я перейду к именованным параметрам, но script, над которым я работаю (не этот демонстрационный пример), является прямым портом пакетного файла.

4b9b3361

Ответ 1

Попробуйте это вместо:

function test_args()
{
  Write-Host "here arg 0: $($args[0])"
  Write-Host "here arg 1: $($args[1])"
}

test_args foo bar

Обратите внимание, что это $args, а не $arg. Также, когда вы используете переменную PowerShell в строке, PowerShell только заменяет значение переменной. Вы не можете напрямую использовать выражение типа $args[0]. Однако вы можете поместить выражение внутри группы выражений $() внутри строки с двумя кавычками, чтобы заставить PowerShell оценить выражение и затем преобразовать результат в строку.