PowerShell 스크립트를 사용하여 EXE 파일 실행


111

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, 함수의 이름으로 인식되지 않습니다. , 스크립트 파일 또는 작동 가능한 프로그램. 이름의 철자를 확인하거나 경로가 포함 된 경우 경로가 올바른지 확인하고 다시 시도하십시오.

( "&"연산자를 사용하여 명령을 호출했습니다.)

이 문제를 어떻게 해결할 수 있습니까?


4
코드를 게시 해주세요. 그것이 문제가있는 곳이기 때문에 그것을 보는 것이 추측보다 훨씬 쉽습니다.
Cody Gray

답변:


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

원래 질문의 명령이 거의 정확하게 PS2.0의 VM에서 작동한다는 것이 이상합니다. 그러나 동일한 명령이 이제 PS4.0 시스템에서 실패합니다. 흥미롭게도 TestExecute도 호출하고 있습니다. 2 번을 가장 좋아하는 것 같아요. 한번해볼 게요. 고마워요!
EJA 2014-06-25

33

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에서 해석되는 다른 특수 문자가 없음)


2
어쨌든 스크립트와 exe가 같은 폴더에 있으면 전체 경로없이 powershell 스크립트를 실행할 수 있습니까? 아니면 상대 경로를 사용할 수 있습니까?
guanome

7
exe가 같은 폴더에 있으면이 작업을 수행 .\foo.exe할 수 ..\..\foo.exe있으며 상대 경로와 공백이있는 상대 경로를 사용할 수도 있습니다 & '..\..\path with spaces\foo.exe'.
Keith Hill

당신이있을 때 파이프 당신의 명령을 따옴표를 사용하는 것보다 : cmd /c "C:\temp\strarc.exe -cjd:M:\ | C:\temp\strarc.exe -s:8 -xd:N:\".
larkee 2014

2

Powershell에서 .exe 파일 위치로 cd합니다. 예를 들면 :

cd C : \ Users \ Administrators \ Downloads

PS C : \ Users \ Administrators \ Downloads> & '. \ aaa.exe'

설치 프로그램이 나타나고 화면의 지시를 따릅니다.


정확히 내가 원하는 것! .exe 파일 및 '. \ aaa.exe'실행
Sharif Yazdian

2
  1. $ args 복제
  2. 인수를 새 배열로 푸시
  3. & $ path $ args

데모:

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

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

& $exepath $myArgs

Thx @nodoccat은 매우 긴 인수 목록으로 docker 명령을 시작하는 매력처럼 작동했습니다.
danidemi

1

개발자가 아니라 한 줄에 여러 ps 명령을 실행하는 솔루션을 찾았습니다. 예 :

powershell "& 'c:\path with spaces\to\executable.exe' -arguments ; second command ; etc

& (앰퍼샌드) 앞에 "(이중 따옴표)를 배치하면 실행 파일이 실행됩니다. 어떤 예에서도 언급 된 적이 없습니다. 큰 따옴표가 없으면 ps 프롬프트가 열리고 입력을 기다립니다.


안녕하세요 RichardE. 답변의 형식을 개선 할 수 있습니까? 편집 모드에서는 서식 도움말이 제공됩니다.
Dorian Turba
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.