我從構建服務器調用遠程PowerShell腳本。問題是,當遠程腳本運行時間超過一分鐘時,MSDeploy將在完成時掛起。MSDeploy在調用遠程Powershell 2.0時掛起
MSDeploy的輸出是這樣的:
Info: Sleeping for a minute... Info: Done sleeping! Info: The process 'C:\Windows\system32\cmd.exe' (command line '') exited with code '0x0'.
遠程過程顯然結束,但MSDeploy失敗,如果它運行不到一分鐘更長的時間才能識別它。我們正在運行的MSDeploy命令如下:
"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:runCommand="powershell.exe -File D:\test\command.ps1 < NUL",waitInterval=2147483647,successReturnCodes=0;2 -dest:auto,ComputerName='https://someurl.com',AuthType=Basic,UserName='someusername',Password='somepassword' -allowUntrusted -useCheckSum -Verbose -Debug
注意如何我已經包括管道中NUL
到進程。這是爲了重定向遠程powershell進程STDIN
,因爲當STDIN
被重定向時它顯然可以遠程掛起。它必須手動關閉。
我看到了很多帖子在stackoverflow表明這將解決這個問題。我也能夠使< NUL
修復程序在另一個環境中工作。
我也看過帖子比推薦設置標誌-InputFormant None
,但那也行不通。
比方說,我有2臺服務器 - Build Server A
和Remote Server A
。無論我申請什麼修正,即使Remote Server A
完成運行Powershell腳本並宣佈其返回代碼,Build Server A
上的MSDeploy仍會掛起。
比方說,我有2個更多的服務器 - Build Server B
和Remote Server B
。我已經應用的修復做在這些服務器上工作,MSDeploy 不會掛起。
兩種環境(A和B)都使用Powershell 2.0和MSDeploy 7.1.1955.0版。
有輸出一個區別,我注意到的是:當與-Verbose
和-Debug
標誌運行這兩個進程,構建服務器A吐出:
信息:過程C:\ Windows \ System32下\ cmd.exe'(命令行)'用代碼'0x0'退出。
生成服務器乙吐出:
的信息:該過程 'C:\ Windows \ System32下\ cmd.exe的'(命令行 '')退出,代碼值爲 '0x0'。
詳細:同步完成1遍。
構建服務器B(不掛起)在其Verbose輸出中提到它已成功同步。構建服務器A不。
不幸的是,我們無法及時升級PowerShell或MSDeploy。有沒有人有任何見解?
由於您的構建和服務器配置,您的問題對您非常具體,因爲我們無法訪問您的特定環境,所以我不認爲其他人將能夠重現該錯誤。一個[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)會有所幫助,但我認爲在這種情況下是不可能的。 –
我已經盡我所能在環境中找到差異。他們看起來一樣。 Windows 2008,powershell 2.0和msdeploy版本7.1.1955.0 –
除此之外,我什麼也沒有繼續下去。我們已經堅持了幾個星期。我想不出任何可能導致此問題的服務器配置或環境差異。 –