Ответ 1
Классическая проблема PowerShell. Вместо этого попробуйте:
exec { & "$ArchiverOutputDir\NServiceBus.Host.exe" /install }
PowerShell выполняет не только команды, но и выражения, например:
C:\PS> 2 + 2
4
C:\PS> "hello world"
hello world
То, что вы дали PowerShell в начале конвейера, представляет собой строковое выражение, которое оно точно оценивает и печатает на консоли. Используя оператор вызова &
, вы сообщаете PowerShell следующее: либо имя команды (в строке), либо исполняемый скриптблока. Технически вы также можете использовать . "some-command-name-or-path"
. Единственное различие заключается в том, что для команд PowerShell &
создает новую область для выполнения команды, а .
- нет. Для внешних exes не имеет значения, насколько я могу определить, какой из них вы используете, но &
обычно используется.