Выполнение EXE файла с помощью PowerShell script

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

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

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

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

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

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

Ответ 1

& "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")

UPDATE: извините, я пропустил "(я вызвал команду, используя оператор" & "). У меня была эта проблема, когда я динамически оценивал путь. Попробуйте построить Invoke-Expression:

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

Ответ 2

Похоже, вы указываете как 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 relative или absolute path.

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

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

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

Ответ 3

Термин "greyhound.exe" не распознается как имя командлета, функции, файла script или действующей программы...

Но если я запустил его как доверенную команду. \greyhound.exe, тогда выполняется исполняемый файл.

Ответ 4

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

cd C:\Users\Администраторы\Загрузки

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

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

Ответ 5

  1. клон $ args
  2. вставь свои аргументы в новый массив
  3. & $ path $ args

Демо-версия:

$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()

$myArgs += '-p'
$myArgs += $env:NGINX_HOME

& $exepath $myArgs