Powershell 2.0挂起时从MsDeploy运行前使用c /

时间:2010-05-09 02:38:27

标签: powershell msdeploy

我试图在MSDeploy命令的preSync调用期间调用powershell,但powershell在调用之后不会退出该进程。 命令(来自命令行): “tools / MSDeploy / msdeploy.exe”-verb:sync -preSync:runCommand =“powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command C:/MyInstallPath/deploy.ps1 Set-WebAppOffline Uninstall-Service”,waitInterval = 60000 -usechecksum -source:dirPath =“build / for-deployment”-dest:wmsvc = BLUEPRINT-X86,username = deployer,password = deployer,dirPath = C:/ MyInstallPath

我在这里使用了一个hack(http://therightstuff.de/2010/02/06/How-We-Practice-Continuous-Integration-And-Deployment-With-MSDeploy.aspx)来获取powershell进程并杀死它但是没有用。我也尝试过taskkill和sysinternals等效,但没有任何东西可以杀死进程,以免MSDeploy出错。 该命令已执行,但随后就在那里。什么可能导致powershell像这样挂起的想法?我在网络上发现了一些其他类似的问题,但没有答案。

环境是Win 2K3,使用Powershell 2.0。

更新:这是我用来调用我的powershell命令的.vbs脚本。使用'cscript.exe path / to / script.vbs'调用:

Option Explicit
Dim oShell, appCmd,oShellExec
Set oShell = CreateObject("WScript.Shell")
appCmd = "powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ""&{ . c:/development/materialstesting/deploy/web/deploy.ps1; Set-WebAppOffline }"" "
Set oShellExec = oShell.Exec(appCmd)
oShellExec.StdIn.Close()

3 个答案:

答案 0 :(得分:5)

以防万一有人正在为批处理文件寻找类似的解决方案: 看看这里 http://epeleg.blogspot.com/2010/06/solution-to-powershell-never-exists.html

  

短篇小说:使用< NUL

答案 1 :(得分:3)

查看proposed solution on this site。 PowerShell.exe似乎不希望在执行此类操作时退出,直到调用进程关闭了stdin。

答案 2 :(得分:0)

您是否尝试过使用此命令?停止处理$ pid。 $ pid是当前pid的内置powershell变量。对于codecampserver项目,我在服务器2008 R2服务器上工作。您可以在此处查看运行此内容的构建:http://build-oss.headspringlabs.com。我注意到预先同步尝试了这个,但我认为这不会影响远程会话。