2012-09-10 2 views
4

저는 powershell에서 zip 유틸리티를 호출하고 매개 변수를 바로 가져 오는 데 어려움을 겪고 있습니다.powershell 스크립트에서 실행 파일 (매개 변수)을 호출하십시오.

if (-not (test-path "C:\Program Files (x86)\7-Zip\7z.exe")) {throw "C:\Program Files (x86)\7-Zip\7z.exe needed"} 
    set-alias sz "C:\Program Files (x86)\7-Zip\7z.exe" 

    $argument_1 = "c:\temp\DeployTemp\" 
    $argument_0 = "c:\temp\Release\Web_Feature_2012R10_1_1112.prod.com.zip" 

    sz x $argument_0 -o$argument_1 

문제는 7zip 실행 호출이 문자열에 저장된 실제 값 대신 $ argument_1이라는 디렉토리로 문자 그대로 추출된다는 것입니다. 나는 몇 가지 방법으로 값을 벗어나려고 노력했지만 운이 없었다. 불행하게도 플래그는 출력 디렉토리 사이에 공백을 가질 수 없다 "-o"를 7zip과 ...

답변

5

이 같은 것을보십시오 :

& "$sz" x $argument_0 "-o$argument_1" 

을 앰퍼샌드 더 CMD 같은 표현을 치료하기 위해 PowerShell을 알려줍니다 .exe하지만, 여전히 변수 확장 ($로 시작하는 토큰)을 허용합니다.

+1

감사합니다. 나를 위해 일한 업데이트는 & sz x $ argument_0 "-o $ argument_1" – larryq

+2

앰퍼샌드는 "cmd와 가까운"동작을 일으키지 않습니다. 곧 나오는 * 문자열 *이 * 명령 *으로 해석되어야한다는 것을 powershell에 알려주는 것입니다. 이를 통해 사용자는 공백이나 특수 문자가 포함 된 전체 경로를 통해 실행 파일이나 스크립트를 호출 할 수 있습니다. 나머지 인수에는 영향을 미치지 않습니다. – latkin

+1

수정은 단순히 이스케이프 권한을 얻는 것이 었습니다. 마지막 인수는 큰 따옴표로 변수 확장을 허용하므로'-o $ argument_1 "이어야합니다. 전체 명령은'sz x $ argument_0 "-o $ argument_1"' – latkin

관련 문제