Какой аналог Powershell $ @ используется для вызова другой команды? - PullRequest
2 голосов
/ 06 сентября 2010

В сценарии оболочки Unix, чтобы вызвать команду foo для исходных аргументов сценария, вы просто пишете

foo $@

В Powershell $args - это массив (обычно) строк, содержащих аргументы текущего скрипта. Если ты пишешь

foo $args

произойдет ли то же самое, что и в bash или других типичных интерпретаторах сценариев оболочки Unix?

1 Ответ

3 голосов
/ 06 сентября 2010

Вы хотите использовать сплаттинг аргументов, который является новым в PowerShell 2.0.Переменная, используемая для сплаттинга, может быть либо массивом (аргументы связаны позиционно), либо хеш-таблицей (ключи соответствуют именам параметров, а их значения предоставляют аргумент).Если вы не объявляете какие-либо параметры, используйте @args.Проблема с попыткой использовать $args состоит в том, что он будет отправлен в виде массива к первому параметру, а не разбит на все параметры.Однако многие люди объявляют параметр.В этом случае вы хотите использовать @PSBoundParameters, например:

foo @PSBoundParameters
...