Aquí es una línea MSDeploy cmd he usado para sincronizar un archivedir que se crea a partir de una etapa posterior a la generación en mi archivo Windows Service.proj
.
Se está sincronizando desde mi servidor de compilación a mi servidor de aplicaciones en una red diferente. Tengo pasos de compilación previa y posterior que inician y detienen los servicios en el servidor remoto. Debe envolver el script de powershell en un script vb debido a un error con powershell y msdeploy. La opción -verbose
es muy útil.
También tengo el script vbscript y ps1 a continuación. Tenga cuidado con la suspensión de VB y los tiempos de espera de pre y post aplicación.
msdeploy -verb:sync -source:archivedir=\\qa-xxxxx1.qa.lan\deployment\backups\FreddieMacDelivery\FreddieMacDelivery.zip,tempAgent='True',computerName=qa-xxxxx1.qa.lan,userName=QA\xxxxx,password=xxxx,authtype=NTLM,includeAcls='False' -dest:dirpath=\\qa-xxxxxx1.qa.lan\protk\Services\FreddieMacDelivery\1.4.1.test -useCheckSum -verbose -preSync:runCommand="cscript.exe c:\temp\stop_win_svc.vbs" -postSync:runCommand="c:\temp\start_win_svc.vbs",waitInterval=15000,waitAttempts=1
escritura de VB:
Option Explicit
Dim oShell, appCmd,oShellExec
Set oShell = CreateObject("WScript.Shell")
appCmd = "powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ""&c:/temp/Get_Win_SVC.ps1"" "
Set oShellExec = oShell.Exec(appCmd)
WScript.Sleep 1000
oShellExec.StdIn.Close()
script de PowerShell:
$username = 'QA\xxxxx'
$password = 'xxxxx'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
(Get-WmiObject -computer qa-xxxx1.qa.lan -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")
$svc = (Get-WmiObject -computer qa-xxxxx1.qa.lan -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")
Write-Host $svc
$svc.InvokeMethod("StartService", $null)
(Get-WmiObject -computer qa-xxxxx1.qa.lan -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")> c:\temp\win_stat_post.txt
yo estaría muy interesado en lo que vino a la solución de este. –
Desafortunadamente nos quedamos sin tiempo para encontrar una solución, pero espero volver a este tema nuevamente pronto. – Andy
Finalmente publiqué una publicación de blog sobre cómo terminamos haciendo esto: http://www.jamescrowley.co.uk/2011/09/05/deploying-windows-services-using-msdeploy/ –