PowerShell 스크립트를 사용하여 EXE 파일을 실행하려고합니다. 명령 줄을 사용하면 문제없이 작동합니다 (먼저 실행 파일의 이름과 일련의 매개 변수를 제공하여 호출합니다).
"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’ 는 cmdlet, 함수의 이름으로 인식되지 않습니다. , 스크립트 파일 또는 작동 가능한 프로그램. 이름의 철자를 확인하거나 경로가 포함 된 경우 경로가 올바른지 확인하고 다시 시도하십시오.
( “&”연산자를 사용하여 명령을 호출했습니다.)
이 문제를 어떻게 해결할 수 있습니까?
답변
& "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"
답변
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, 함수, 기본 exe 상대 또는 절대 경로와 같은 명령을 식별하는 문자열이옵니다.
이 작업을 수행하면 :
& "c:\some path with spaces\foo.exe"
필요에 따라 인수 인용 작업을 시작하십시오. 인수가 괜찮은 것처럼 보이지만 (공백이없고 PowerShell에서 해석되는 다른 특수 문자가 없음)
답변
Powershell에서 .exe 파일 위치로 cd합니다. 예를 들면 :
cd C : \ Users \ Administrators \ Downloads
PS C : \ Users \ Administrators \ Downloads> & ‘. \ aaa.exe’
설치 프로그램이 나타나고 화면의 지시를 따릅니다.
답변
- $ args 복제
- 인수를 새 배열로 푸시
- & $ path $ args
데모:
$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()
$myArgs += '-p'
$myArgs += $env:NGINX_HOME
& $exepath $myArgs
답변
개발자가 아니라 한 줄에 여러 ps 명령을 실행하는 솔루션을 찾았습니다. 예 :
powershell "& 'c:\path with spaces\to\executable.exe' -arguments ; second command ; etc
& (앰퍼샌드) 앞에 “(이중 따옴표)를 배치하면 실행 파일이 실행됩니다. 어떤 예에서도 언급 된 적이 없습니다. 큰 따옴표가 없으면 ps 프롬프트가 열리고 입력을 기다립니다.