your updated the successfully sistema scripts script pudo porque overridden laejecución habilitar estádeshabilitada está este esta ejecutar ejecuta ejecución ejecucion deshabilitada but powershell msdeploy webdeploy

updated - powershell no se ejecuta



Ejecutar PowerShell desde el comando de ejecución MSdeploy no se cierra (2)

Estoy intentando que MSDeploy ejecute un script de PowerShell en un servidor remoto. Así es como ejecuto MSDeploy:

msdeploy / -verb:sync / -source:runCommand=''C:/temp/HelloWorld.bat'', / waitInterval=15000,waitAttempts=1 / -dest:auto,computername=$WebDeployService$Credentials -verbose

HelloWorld.bat contiene:

echo "Hello world!" powershell.exe C:/temp/WebDeploy/Package/HelloWorld.ps1 echo "Done"

El HelloWorld.ps1 solo contiene:

Write-Host "Hello world from PowerShell!"

Sin embargo, parece que PowerShell nunca termina. Esta es la salida de ejecutar el msdeploy:

Verbose: Performing synchronization pass #1. Verbose: Source runCommand (C:/temp/HelloWorld.bat) does not match destination (C:/temp/HelloWorld.bat) differing in attributes (isSource[''True'',''False'']). Update pending. Info: Updating runCommand (C:/temp/HelloWorld.bat). Info: Info: C:/temp>echo "Hello world!" "Hello world!" C:/temp/WebDeploy>powershell.exe C:/temp/HelloWorld.ps1 Info: Hello world from Powershell! Info: Warning: The process ''C:/Windows/system32/cmd.exe'' (command line ''/c "C:/Users/peter/AppData/Local/Temp/gaskgh55.b2q.bat "'') is still running. Waiting for 15000 ms (attempt 1 of 1). Error: The process ''C:/Windows/system32/cmd.exe'' (command line ''/c "C:/Users/peter/AppData/Local/Temp/gaskgh55.b2q.bat"'' ) was terminated because it exceeded the wait time. Error count: 1.

¿Alguien sabe una solución?


Su escenario y su problema parecen similares a este problema informado: PowerShell.exe puede bloquearse si se redirige STDIN

Si este es el caso, intente esta solución: use -inputformat none :

powershell.exe -inputformat none C:/temp/WebDeploy/Package/HelloWorld.ps1

He intentado esto con el programa "un falso msdeploy" que llama al archivo .bat de esta manera:

using System.Diagnostics; class Program { static void Main(string[] args) { ProcessStartInfo si = new ProcessStartInfo(); si.FileName = "cmd.exe"; si.Arguments = "/c " + args[0]; si.RedirectStandardInput = true; si.UseShellExecute = false; var process = Process.Start(si); process.WaitForExit(); } }

Esta demostración tiene el mismo problema que usted describe y la solución le ayuda. Si msdeploy llama al archivo .bat de la misma forma o similar, entonces, con suerte, esta es una solución.


powershell.exe -file ScriptFile.ps < CON

Esto resuelve el problema sin recurrir a características no documentadas.