Использовать переменную для параметра filepath в Start-Process - PullRequest
2 голосов
/ 14 декабря 2010

Я хотел бы запустить .exe, который может находиться в нескольких местах.

$runpath = "$servicepackfolder\SQLServer2008SP1-KB968369-IA64-ENU.exe"

Start-Process -FilePath $runpath -arg "/x:.\$buildfolder\PCU" 

Или так, указав WorkingDirectory:

Start-Process 'SQLServer2008SP1-KB968369-IA64-ENU.exe' -WorkingDirectory $servicepackfolder -arg "/x:.\$buildfolder\PCU"

Но кажется, что переменные не интерпретируются как строки.

Start-Process: эта команда не может быть выполнена из-за ошибки: система не может найти указанный файл.

Я нахожусь в правильном каталоге, и если я берувывод из переменной $ runpath и замена ее на переменную в вызове Start-Process, я получаю ожидаемое поведение.

Будет ли это работать, или я застрял жесткое кодирование этих путей.Попытка автоматизировать процесс сборки Slipstream для SQL 2008.

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Я могу продублировать поведение, которое вы видите , если я добавлю -NoNewWindow, но если я не укажу этот параметр, он будет работать, как и ожидалось, для моего теста:

start-process sizeof.exe  -WorkingDirectory C:\temp -ArgumentList 1

новое окно вспыхивает и исчезает, но я вижу, что он запускает указанный exe из моего временного каталога.

0 голосов
/ 23 июня 2014

Лучше поздно, чем никогда, но я нашел обходной путь для этого, когда возникла та же проблема, но не уверен, классифицируется ли это как ошибка или нет -

Powershell не всегда обрабатывает неотбегающиеобратные косые черты или кавычки в строках, которые хранятся в переменной / созданы путем обработки строк, все это хорошо для -FilePath, поэтому для вашей строки:

$runpath = "$servicepackfolder\SQLServer2008SP1-KB968369-IA64-ENU.exe"

Попробуйте следующее (или эквивалентное) перед использованием $ runpath:

$cleanpath = $runpath.replace("\","\\").replace('"',"")

.replace ("\", "\\"). Replace ('"'," ") экранирует косую черту и удаляет кавычки, которые вводят обработка и передача строки, что, по-видимому,Очистите эту проблему (в некоторых случаях).

Я немного опоздала, я полагаю, но, надеюсь, это поможет другим людям поискать эту информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...