Я хочу сохранить абсолютный путь к файлу в переменной оболочки мощности и использовать его для выполнения программы с аргументами. Я хочу сделать это на сервере сборки, чтобы у меня была утилита на этом сервере сборки, используемая агентами сборки. Учти это:
$pathToExe = "C:\path\to\program.exe"
#build server does stuff in a working dir
$pathToExe arg1 arg2
Когда это выполняется, $ pathToExe не расширяется до своего значения. Вместо этого я вижу в журналах: «Неожиданный токен ‘arg1’ в выражении или инструкции».
Как правильно делать такие вещи в Power Shell? Я пробовал другой синтаксис с кавычками, но я не могу заставить его работать без жесткого кодирования пути к файлу, чего я пытаюсь избежать.
Я думаю, вам нужно будет использовать Start-Process
— person Sly_Boots schedule 10.10.2018
Как же так? Нравится? Start-Process $ pathToExe arg1 arg2 — person Sly_Boots schedule 10.10.2018
Вот пример того, что я использую в настоящее время. Я жестко запрограммировал свои аргументы, но можно использовать переменные. Start-Process -FilePath ($Firefox + "Firefox_62.exe") -ArgumentList ("-ms /INI=$Firefox" + "Firefox_Settings.ini") -Verbose -Wait -NoNewWindow
— person Sly_Boots schedule 10.10.2018
Вы должны использовать оператор вызова
&
. См. Примеры ниже:См.
Get-Help about_Operators
или это ссылка MSDN.Я не знал об этом методе. Мне это нравится. ss64.com/ps/call.html для получения дополнительной информации. Спасибо @Pawel Dyl — person Sly_Boots; 10.10.2018
Оператор
call
также называется операторомinvocation
. — person Sly_Boots; 10.10.2018Спасибо! Это отлично работало, когда у меня был $ исполняемый файл = C: \ path \ program.exe. — person Sly_Boots; 10.10.2018