Запустите исполняемый файл из скрипта Powershell с параметрами
Итак, у меня есть сценарий powershell, который должен запускать исполняемый файл с аргументом для передачи, чтобы указать, какой метод я хочу запустить, и мне нужно передать параметр, который является каталогом, в файл конфигурации. Так вот что у меня
Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList /genmsi/f $MySourceDirectory\src\Deployment\Installations.xml
/f - это короткое имя, а file - это длинное имя для моего атрибута... Я получил ошибку в powershell, сообщающую, что позиционный параметр не может быть найден для /f или /file.
Какие-нибудь мысли?
4 ответа
Я смог заставить это работать с помощью Invoke-Expression
Командлет.
Invoke-Expression "& `"$scriptPath`" test -r $number -b $testNumber -f $FileVersion -a $ApplicationID"
Попробуйте процитировать список аргументов:
Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList "/genmsi/f $MySourceDirectory\src\Deployment\Installations.xml"
Вы также можете предоставить список аргументов в виде массива (аргументы, разделенные запятыми), но обычно проще использовать строку.
Вот альтернативный метод для выполнения нескольких аргументов. Я использую его, когда аргументы слишком длинны для одного лайнера.
$app = 'C:\Program Files\MSBuild\test.exe'
$arg1 = '/genmsi'
$arg2 = '/f'
$arg3 = '$MySourceDirectory\src\Deployment\Installations.xml'
& $app $arg1 $arg2 $arg3
Просто добавив пример, который работал хорошо для меня:
$sqldb = [string]($sqldir) + '\bin\MySQLInstanceConfig.exe'
$myarg = '-i ConnectionUsage=DSS Port=3311 ServiceName=MySQL RootPassword= ' + $rootpw
Start-Process $sqldb -ArgumentList $myarg