Запустите исполняемый файл из скрипта 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
Другие вопросы по тегам