Выполнение файла EXE с использованием скрипта PowerShell - PullRequest
90 голосов
/ 09 января 2011

Я пытаюсь выполнить EXE-файл, используя скрипт PowerShell. Если я использую командную строку, она работает без проблем (сначала я указываю имя исполняемого файла и ряд параметров для его вызова):

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

Но выполнение одного и того же действия внутри скрипта возвращает ошибку:

Термин '"C: \ Program Files \ Automated QA \ TestExecute 8 \ Bin \ TestExecute.exe " C: \ Temp \ TestProject1 \ TestProject1.pjs / run / exit / SilentMode ' не является распознается как имя командлета, функция, файл сценария или работоспособный программа. Проверьте правильность написания имя, или если путь был включен, убедитесь, что путь правильный и попробуйте еще раз.

(я вызвал команду с помощью оператора "&".)

Как я могу решить эту проблему?

Ответы [ 3 ]

103 голосов
/ 09 января 2011
& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

или

[System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

ОБНОВЛЕНИЕ: извините, я пропустил предложение "(я вызвал команду, используя оператор" & "). У меня была эта проблема, когда я оценивал путь динамически. Попробуйте конструкцию Invoke-Expression:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"
30 голосов
/ 10 января 2011

Похоже, вы указываете как EXE, так и его первый аргумент в одной строке, например;'"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'.Это не сработает.В общем случае вы вызываете собственную команду с пробелом в своем пути, например:

& "c:\some path with spaces\foo.exe" <arguments go here>

То есть & ожидает, что за ней следует строка, идентифицирующая команду: cmdlet, function, native exe относительныйили абсолютный путь.

Как только вы получите только эту работу:

& "c:\some path with spaces\foo.exe"

Начните работать над цитированием аргументов по мере необходимости.Хотя, похоже, ваши аргументы должны быть в порядке (без пробелов и других специальных символов, интерпретируемых PowerShell).

0 голосов
/ 16 ноября 2018

В Powershell перейдите в расположение файла .exe. Например:

cd C: \ Users \ Администраторы \ Downloads

PS C: \ Users \ Администраторы \ Загрузки> & '. \ Aaa.exe'

Появится установщик и следуйте инструкциям на экране.

...