Как выполнить файл cmd в моем сценарии PS? - PullRequest
0 голосов
/ 21 декабря 2010

У меня есть cmd-файл, который вызывает msi и передает параметры. Я вызываю этот файл deploy.cmd из сценария powershell. Как я могу достичь этого?

Возможно, я что-то здесь упускаю.

Вот так выглядит мой cmd,

Msiexec /i ABCInstaller.msi ^
DB.SERVER=ABC\QA ^
APPLICATION.ENV.TYPE=Qa ^
SVCIDENTITY=SVC-QA@ABC.com ^
SVCPASSWORD=xxx ^
LOCAL.EMAILING="true" ^
EMAIL.GMAT="tarun.arora@abc.com" ^
EMAIL.GMATR="tarun.arora@abc.com" ^
EMAIL.SUCCESSFUL.VALIDATION.SUBJECT="[QA] Successful validation of ABC Message" ^
/lv "ABC_Installer_QA_Log.txt" 

Вот так выглядит мой скрипт powershell,

# 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" 

Однако, когда выполняется ps, он печатает то, что находится внутри файла cmd, а не выполняет его, поэтому результат выполнения равен

Output: C:\WINDOWS\system32>Msiexec /i ABCInstaller.msi ^
DB.SERVER=ABC\QA ^
APPLICATION.ENV.TYPE=Qa ^
SVCIDENTITY=SVC-QA@ABC.com ^
SVCPASSWORD=xxx ^
LOCAL.EMAILING="true" ^
EMAIL.GMAT="tarun.arora@abc.com" ^
EMAIL.GMATR="tarun.arora@abc.com" ^
EMAIL.SUCCESSFUL.VALIDATION.SUBJECT="[QA] Successful validation of ABC Message" ^
/lv "ABC_Installer_QA_Log.txt" /passive T 

Файл cmd не выполняется: - (

Ответы [ 2 ]

0 голосов
/ 22 декабря 2010

MsiExec, скорее всего, выполняется, вы просто его не видите, потому что он запускается как фоновый процесс, который немедленно возвращает управление cmd.Например, если я создаю сценарий cmd, который выглядит следующим образом:

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

И вызываю его так:

&launchWord.cmd

Все, что я вижу на консоли powershell, - это содержимоеСценарий cmd, но слово открывается в другом окне.Вы уверены, что msiexec не просто запускается и не запускается, а не запускается?

0 голосов
/ 22 декабря 2010

Попробуйте:

Invoke-Expression "D:\deploy\ABC_Installed\$buildNumber\en-us\ETRM_QA.cmd"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...