Вопрос о выполнении команды в powershell - PullRequest
2 голосов
/ 11 сентября 2009

Может кто-нибудь помочь мне объяснить, что здесь происходит? Извините, если это основной вопрос, Я упростил это из конвейерного выражения, которое я пытаюсь написать:

$foo = pwd
$cmd = "dir"

& $cmd $foo #Works

dir $foo  #Works

& "dir $foo" #Error

* Термин «dir C: \» не распознается как командлет, функция, работающая программа или файл сценария. Проверьте срок и попробуйте снова.

В строке: 1 символ: 2 + & <<<< "dir $ foo" *</p>

dir pwd #Error

* Get-ChildItem: Невозможно найти путь 'C: \ pwd', поскольку он не существует.

В строке: 1 символ: 4 + dir <<<< pwd *</p>

Я ожидаю, что все четыре из них дадут одинаковые результаты

Ответы [ 2 ]

5 голосов
/ 12 сентября 2009

Если вы хотите "выполнить" строку, содержащую произвольный скрипт, используйте командлет Invoke-Expression, например ::10000

Выражение-выражение "dir $ foo"

5 голосов
/ 11 сентября 2009

Выражения в кавычках интерпретируются как один аргумент. В третьей команде оболочка интерпретирует ее как запрос команды "dir C:\" без аргументов, а не как запрос команды "dir" с аргументом "C:\".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...