2010-12-21 5 views
0

msi를 호출하고 매개 변수를 전달하는 cmd 파일이 있습니다. 이 deploy.cmd 파일을 powershell 스크립트에서 호출합니다. 어떻게이 문제를 해결할 수 있습니까?내 ps 스크립트에서 cmd 파일을 실행하는 방법은 무엇입니까?

내가 여기에서 뭔가를 찾을 수 없습니다. 는 ps이 실행될 때

# Assigning Build Number and Drop Location for the MSI in scope 
$buildNumber = $TfsDeployerBuildData.BuildNumber 
$dropLocation = $TfsDeployerBuildData.DropLocation 

# Assign values 
if($buildNumber -eq $null) 
{ 
$buildNumber = $args[0] 
$dropLocation = $args[1] 
} 

# Move old uninstall folder to Archive folder 
Move-Item "D:\deploy\ABC_Uninstalled\*" "D:\deploy\ABC_Archive" -force 

# Move old build folder to uninstalled folder 
Move-Item "D:\deploy\ABC_Installed\*" "D:\deploy\ABC_Uninstalled" -force 

# Logging 
Add-Content -Path "C:\Log\TfsDeployer_Log.txt" -Value $dropLocation 
Add-Content -Path "C:\Log\TfsDeployer_Log.txt" -Value $buildNumber 

# Copy the msi from drop location to local physical drive 
Copy-Item $dropLocation "D:\deploy\ABC_Installed" -recurse 
Add-Content -Path "C:\Log\TfsDeployer_Log.txt" -Value "Copied the Msi to D:\deploy\Installed" 

# Start execution 
& "D:\deploy\ABC_Installed\$buildNumber\en-us\ETRM_QA.cmd" 

그러나, 그것은 cmd를 내부에 무엇을 인쇄

Msiexec /i ABCInstaller.msi^
DB.SERVER=ABC\QA^
APPLICATION.ENV.TYPE=Qa^
[email protected]^
SVCPASSWORD=xxx^
LOCAL.EMAILING="true"^
EMAIL.GMAT="[email protected]"^
EMAIL.GMATR="[email protected]"^
EMAIL.SUCCESSFUL.VALIDATION.SUBJECT="[QA] Successful validation of ABC Message"^
/lv "ABC_Installer_QA_Log.txt" 

이 내 PowerShell 스크립트의 모습입니다

이 내 cmd를이 모습입니다, 오히려 파일을 실행하기보다는, 그래서 실행의 출력은 cmd를 파일이

Output: C:\WINDOWS\system32>Msiexec /i ABCInstaller.msi^
DB.SERVER=ABC\QA^
APPLICATION.ENV.TYPE=Qa^
[email protected]^
SVCPASSWORD=xxx^
LOCAL.EMAILING="true"^
EMAIL.GMAT="[email protected]"^
EMAIL.GMATR="[email protected]"^
EMAIL.SUCCESSFUL.VALIDATION.SUBJECT="[QA] Successful validation of ABC Message"^
/lv "ABC_Installer_QA_Log.txt" /passive T 
이다

하지

+0

내가 간단한 cmd를 파일 다음을 수행 (Copy.cmd)를 작성하는 경우, Xcopy를 "C : \ 폴더 1"^ "C : \ 폴더 2" 그리고 PowerShell 스크립트 "C에서 호출 : \ Copy.cmd " 작동합니다. 그러나 Msiexec을 사용하는 경향이 있다면 cmd 파일을 실행하는 대신 인쇄합니다. 그래서 내 (copy.cmd)의 경우 다음 Msiexec가 포함/내가 을 EtrmInstaller.msi 그리고 파워 쉘 스크립트는 & "C : \ 폴더 1 \ Copy.cmd"입니다 다음 출력는 C : \ 문서 및 설정 \ tarora \ My Documents> Msiexec/i EtrmInstaller.msi 하지만 아무 것도 실행되지 않습니다! C : \ 문서 및 설정 \ tarora \ 내 문서> Msiexec가가/내가 을 EtrmInstaller.msi Tp를 –

+0

팁 : 더 읽기 질문을 가진 것은 얻을 수있는 추가 답변 – fenster

답변

0

시도 :-(실행 :

MSIEXEC 가능성이 즉시 cmd를 제어를 반환하는 백그라운드 프로세스로 시작하기 때문에, 당신은 단지 그것을보고하지 않는 실행
Invoke-Expression "D:\deploy\ABC_Installed\$buildNumber\en-us\ETRM_QA.cmd" 
0

. 나는이처럼 보이는 cmd를 스크립트를 작성하는 경우 예를 들어, :

"C:\Program Files\Microsoft Office\Office11\WINWORD.EXE" 

을 그리고 이런 식으로 호출 :

&launchWord.cmd 

내가 PowerShell 콘솔에 표시되는 모든, cmd를 스크립트의 내용입니다 만 단어가 다른 창에서 열립니다. msiexec은 시작에 실패하는 것이 아니라 시작 및 실패가 확실합니까?

관련 문제