2013-10-05 97 views
4

我要自動的過程,這是在TFS創建成功後調用。該過程將RDP發送到測試服務器,然後調用該服務器上的C#應用​​程序,並重置該服務器上的IIS。每一步都會返回結果,因此是否要調用下一步是基於上一步。自動化IISRESET通過TFS後,遠程桌面連接建立

有在實現它的幾個障礙。以下是我想知道的是否有可能,以及如何對其進行編碼。

1)經由建立在TFS調用過程

有在生成定義的選項來調用自動測試。我假設這個過程可以通過將它作爲一個測試來實現。

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(); 

Run mstsc.exe with specified username and password

Automating remote desktop connection

3)IISRESET

我認爲它應該簡單地在RDP之後調用「IISRESET」,但問題是,如何封裝運行IISRESET的結果。

可能適合的工具有:

1)Powershell的 - 我不知道很多關於Powershell的,但如果需要

2)C#

我的問題是,很願意學習如何實現它,任何代碼示例和想法將非常感激。

+0

爲什麼需要通過RDP連接到遠程計算機? iisreset支持用於執行遠程重置的計算機名稱參數。 –

+0

如前所述,我需要調用一個C#應用程序,然後重置iis。你能詳細說說你的話嗎?它是否會返回重置狀態? – Pingpong

+0

我不確定需要詳細說明。它會生成控制檯輸出,就好像您已經在目標機器上運行iisreset一樣,如果這是您要求的。 –

回答

0

檢查我在這裏回答這是有點關係:Answer

如果它運行TFSBuild服務構建服務器上的用戶已經測試服務器上有足夠的權限,那麼你可以使用PSEXEC或PowerShell來遠程運行你的命令。閱讀下面的鏈接:

PSEXEC

PowerShell Remote commands

沒有內置活動/進程,它可以幫助你在遠程機器上的TFS運行腳本建立工作流程。

步驟1對於您是確定如何在遠程計算機上運行腳本,如上所述,您可以使用PSEXEC或Powershell(儘管在遠程計算機上運行PowerShell可能會稍微複雜一些) 。

第二步,編寫實際的腳本來完成的工作,停止服務,安裝MSI等

第三步,編輯您的當前構建確定指標 - 創建一個新的自定義活動或利用InvokeProcess活動從您的構建定義中調用您在步驟2中創建的腳本。InvokeProcess活動

0

在大多數情況下,如果你想升級asp.net應用程序,儘量把app_offline.htm應用程序文件夾,你並不需要運行iisreset

,它將停止應用程序和應用程序文件會解鎖

升級應用程序後,它會自動重新啓動,或者您也可以「觸摸」的web.config強制重啓

+0

不,IISRsset特定於我自己的應用程序,與本案無關。 – Pingpong

+0

好的。如果你在TFS下運行,我會建議使用像msbuild這樣的東西,例如http://www.msbuildextensionpack.com/。有遠程任務執行的東西。 – chipitsine

0

您可以使用實驗室構建運行腳本作爲環境的一部分作業的更好目標計算機。它可以運行鍼對該機器的powershell任何以及部署和執行應用程序....

0

問題:如何捕捉運行IISRESET

的結果,我相信老式的方式,希望這是你是什麼尋找

c:> IISRESET >> C:\ temp。登錄

您可以使用上面無論是從CMD或PowerShell的

0

在我使用PSEXEC來對遠程服務器,並在以往任何時候,我們需要控制該命令的結果流運行命令過去,我們簡單地將控制檯傳送到共享文件夾並檢查我們的成功標誌。

我不確定TFS是否能以這種方式運行命令,但我們是在hudson/jenkins上實現它的。

這不會直接回答你的問題,但它可以提供一個更好的方式前進

一個例子: psexec.exe \ REMOTESERVER 「IISRESET> H:\ iisreset.log」

然後運行grep或類似的iisreset.log與您的成功標誌作爲運行下一步的條件。