Мне нужно обработать рабочую копию SVN в сценарии PS, но у меня возникают проблемы с передачей аргументов функциям. Вот что у меня есть:
function foo($arg1, $arg2)
{
echo $arg1
echo $arg2.FullName
}
echo "0: $($args[0])"
echo "1: $($args[1])"
$items = get-childitem $args[1]
$items | foreach-object -process {foo $args[0] $_}
Я хочу передать , $arg[0]
как $arg1
к foo
, и , $arg[1]
как $arg2
. Однако, это не работает, по какой-то причине $arg1
всегда пусто:
PS C:\Users\sbi> .\test.ps1 blah .\Dropbox
0: blah
1: .\Dropbox
C:\Users\sbi\Dropbox\Photos
C:\Users\sbi\Dropbox\Public
C:\Users\sbi\Dropbox\sbi
PS C:\Users\sbi>
Примечание . "blah"
Параметр не передается как $arg1
.
Я абсолютно уверен, что это что-то смешно простое (я только начал заниматься PS и все еще чувствую себя очень неуклюже), но я уже час бьюсь об этом, и ничего не могу найти.
powershell
SBI
источник
источник
Причина, по которой $ args [0] ничего не возвращает в объекте foreach, заключается в том, что $ args - это автоматическая переменная, которая принимает в команду безымянные, несопоставимые параметры, а объект foreach - это новая команда. Для блока процесса нет никаких несопоставимых параметров, поэтому $ args [0] имеет значение null.
Одна вещь, которая может помочь, заключается в том, что ваши скрипты могут иметь параметры, как и функции.
Как только вы захотите получить больше функциональности от ваших параметров, вы можете захотеть прочитать пост в блоге, который я написал о прогрессии параметров от $ args до текущих расширенных параметров, которые мы можем использовать сейчас.
источник
Попробуйте что-то вроде этого:
источник
foreach
.