[英]Automating IISRESET via remote desktop connection after a TFS build
我想自動化一個進程,在TFS上成功構建之后調用該進程。 該過程將RDP發送到測試服務器,然后調用該服務器上的C#應用程序,並重置該服務器上的IIS。 每個步驟都將返回結果,因此無論是否調用下一步都是基於上一步驟。
實施它有一些障礙。 以下是我想知道的可能性,以及如何編碼。
1) 通過TFS構建調用該過程
Build定義中有一個選項可以調用自動測試。 我假設可以通過將其作為測試來調用該過程。
2) RDP到遠程服務器
我找到了下面的鏈接,這可能是一個解決方案
Process rdcProcess = new Process();
rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe");
rdcProcess.StartInfo.Arguments = "/generic:TERMSRV/192.168.0.217 /user:" + "username" + " /pass:" + "password";
rdcProcess.Start();
rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe");
rdcProcess.StartInfo.Arguments = "/v " + "192.168.0.217"; // ip or name of computer to connect
rdcProcess.Start();
3) IISReset
我認為它應該只是在RDP之后調用“ IISRESET
”,但問題是,如何限制運行IISRESET的結果。
可能適合的工具是:
1)Powershell - 我對Powershell了解不多,但如果需要我願意學習
2)C#
我的問題是如何實現它,任何代碼示例和想法將非常感激。
在大多數情況下,您不需要運行iisreset
如果你想升級一個asp.net應用程序,嘗試將app_offline.htm放在應用程序文件夾中,它將停止一個應用程序,應用程序文件將被解鎖
升級應用程序后,它將自動重啟,或者您可以“觸摸”web.config強制重新啟動
您可能更好地使用Lab Build將腳本作為目標計算機環境的一部分運行。 它可以針對該機器運行任何PowerShell以及部署和執行應用程序....
問題:如何捕獲運行IISRESET的結果
我相信老式的方式,希望這就是你要找的東西
c:> IISRESET >> C:\\ temp.log
您可以使用CMD或powershell中的上述內容
在過去,我使用Psexec對遠程服務器運行命令,在那里我們需要控制該命令結果的流量,我們只需將控制台輸出到共享文件夾並檢查我們的成功標志。
我不確定TFS是否可以以這種方式運行命令,但我們在hudson / jenkins上實現了它。
這不會直接回答您的問題,但可能會提供更好的前進方法
示例:psexec.exe \\ remoteserver“iisreset> h:\\ iisreset.log”
然后使用您的成功標志對iisreset.log運行grep或類似操作,作為運行下一步的條件。
在這里檢查我的答案有點相關: 答案
如果在構建服務器上運行TFSBuild服務的用戶在測試服務器上擁有足夠的權限,那么您可以使用psexec或powershell遠程運行命令。 閱讀以下鏈接:
沒有內置的活動/流程可以幫助您在TFS構建工作流中的遠程計算機上運行腳本。
第1步是確定如何在遠程計算機上運行腳本,如上所述,您可以使用PSEXEC或Powershell(盡管在遠程計算機上運行PowerShell可能會稍微復雜一些)。
Step2,編寫實際腳本來完成工作,停止服務,安裝MSI等。
步驟3,編輯當前的構建定義 - 創建新的自定義活動或在構建定義中使用InvokeProcess活動來調用您在步驟2中創建的腳本.InvokeProcess Activity
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.