Доступ к массиву $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, над которым я работаю (не этот демонстрационный пример), является прямым портом пакетного файла.
Ответы
Ответ 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 оценить выражение и затем преобразовать результат в строку.