2014-11-28 3 views
0

Привет Я очень новичок в powershell, и я пишу скрипт, который принимает несколько параметров. Доступ к этим параметрам осуществляется в цикле for внутри файла. Это выглядит что-то вроде этогоPowershell, доступ к нескольким параметрам в цикле for

$numOfArgs = args.Length 
for ($i=3; $i -le $numOfArgs; $i++) 
{ 


    write-host "folder: $args[$i]" 
    # does something with the arguments 

} 

Однако вывод дает мне все параметры в целом, а не только одного параметра, указанного в массиве в качестве элемента массива? Может кто-нибудь сказать мне, где ошибка здесь? Благодаря!

ответ

2

EDIT: Спасибо Дункану, чтобы указать на это, пропуская переменную $ в переменной.

Попробуйте это:

$numOfArgs = $args.Length 
for ($i=3; $i -le $numOfArgs; $i++) 
{ 
    write-host "folder: $($args[$i])" 
    # does something with the arguments 
} 

При размещении переменной в строке, переменная вычисляется, а не все выражение. Таким образом, окружая его $(), Powershell оценит все выражение.

Другими словами, только $args оценивали вместо $args[$i]

+0

Вам нужен '' $ в первой строке: '$ args.Length' Я пытался добавить его для вас, но он был перезаписан, когда вы улучшили свой ответ , – Duncan

+0

спасибо Дункан –

Смежные вопросы