Выполнение 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
- клон $ args
- вставь свои аргументы в новый массив
- & $ path $ args
Демо-версия:
$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()
$myArgs += '-p'
$myArgs += $env:NGINX_HOME
& $exepath $myArgs