Подтвердить что ты не робот

Запустить исполняемый файл из Powershell script с параметрами

Итак, у меня есть powershell script, который должен запускать исполняемый файл с аргументом для передачи, чтобы установить, какой метод я хочу запустить, и мне нужно передать параметр, который является каталогом в файл конфигурации. Так вот что я

Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList /genmsi/f $MySourceDirectory\src\Deployment\Installations.xml

/f - это короткое имя, а файл - длинное имя для моего атрибута... Я получаю сообщение об ошибке в powershell, указывающее, что для /f или/файла не может быть найден позиционный параметр.

Любые мысли?

4b9b3361

Ответ 1

Мне удалось заставить это работать с помощью командлета Invoke-Expression.

Invoke-Expression "& `"$scriptPath`" test -r $number -b $testNumber -f $FileVersion -a $ApplicationID"

Ответ 2

Попробуйте указать список аргументов:

Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList "/genmsi/f $MySourceDirectory\src\Deployment\Installations.xml"

Вы также можете предоставить список аргументов в виде массива (аргументы, разделенные запятыми), но использование строки обычно проще.

Ответ 3

Вот альтернативный метод для выполнения нескольких аргументов. Я использую его, когда аргументы слишком длинны для одного лайнера.

$app = 'C:\Program Files\MSBuild\test.exe'
$arg1 = '/genmsi'
$arg2 = '/f'
$arg3 = '$MySourceDirectory\src\Deployment\Installations.xml'

& $app $arg1 $arg2 $arg3

Ответ 4

Просто добавив пример, который отлично работал у меня:

$sqldb = [string]($sqldir) + '\bin\MySQLInstanceConfig.exe'
$myarg = '-i ConnectionUsage=DSS Port=3311 ServiceName=MySQL RootPassword= ' + $rootpw
Start-Process $sqldb -ArgumentList $myarg