2010-12-13 2 views
2

여러 위치에있을 수있는 .exe를 실행하고 싶습니다. WORKINGDIRECTORY를 지정Start-Process의 파일 경로 매개 변수에 변수 사용

$runpath = "$servicepackfolder\SQLServer2008SP1-KB968369-IA64-ENU.exe" 

Start-Process -FilePath $runpath -arg "/x:.\$buildfolder\PCU" 

또는 이러한 방법 :

Start-Process 'SQLServer2008SP1-KB968369-IA64-ENU.exe' -WorkingDirectory $servicepackfolder -arg "/x:.\$buildfolder\PCU" 

하지만 변수가 문자열로 해석되지 않는 것 같다.

Start-Process : This command cannot be executed due to the error: The system cannot find the file specified.

나는 올바른 디렉토리 안에 있고 나는 $의 RUNPATH 변수의 출력을 가지고 시작 - 프로세스 호출에서 변수를 대체 할 경우, 나는 예상되는 동작을 얻을.

이 방법이 효과가 있습니까, 아니면 이러한 경로를 하드 코딩해야할까요? 내가 -NoNewWindow를 추가 경우 표시되는 동작을 복제 할 수 있지만, SQL 2008에 대한

+0

이렇게 할 수 있는지 알아 보았습니까? –

답변

1

를 슬립 스트림 빌드 프로세스를 자동화하려고 내 테스트 케이스 예상대로 작동 해당 매개 변수에 지정하지 않은 경우 :

start-process sizeof.exe -WorkingDirectory C:\temp -ArgumentList 1 

새 창이 깜박이고 사라집니다.하지만 내 임시 디렉터리에서 지정된 exe를 실행하고있는 것을 볼 수 있습니다.

+0

매개 변수 값에 변수를 사용하려고합니다. 하드 코드 된 것 같습니다. – Sam

+0

변수 사용은'-ArgumentList $ myvar'와 마찬가지로 작동합니다. '-NoNewWindow'를 사용하고 있습니까? –

0

결코보다는 더 나은 늦었지만 저도 같은 문제가 발생하는 경우, 확실하지가 버그로 여부를 분류되어 이것에 대한 해결 방법을 찾았습니다 -

파워 쉘 항상 해제 탈출 백 슬래시를 처리하지 않습니다 또는 문자열로/변수에 저장 생성 된 문자열에 따옴표는 라인, 그래서 -FilePath 잘 모든 것을 처리 :

:

$runpath = "$servicepackfolder\SQLServer2008SP1-KB968369-IA64-ENU.exe" 

에 $ RUNPATH를 사용하기 전에 다음 (또는 동급)를보십시오

$cleanpath = $runpath.replace("\","\\").replace('"',"") 

.replace ("\", "\\"). replace (' "'," ")는 슬래시를 이스케이프 처리하고 문자열 처리 및 전달에서 인용 부호를 제거하므로이 문제를 해결할 수 있습니다).

당신을 위해 조금 늦었습니다.하지만 상상해보십시오. 다른 사람이이 문제를 인터넷으로 검색하는 데 도움이됩니다.

관련 문제