在TFS构建之后通过远程桌面连接自动化IISRESET

时间:2013-10-05 11:06:33

标签: c# powershell tfs iisreset

我想自动化一个进程,在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();

Run mstsc.exe with specified username and password

Automating remote desktop connection

3) IISReset

我认为它应该只是在RDP之后调用“IISRESET”,但问题是,如何限制运行IISRESET的结果。

可能适合的工具是:

1)Powershell - 我对Powershell了解不多,但我愿意在必要时学习

2)C#

我的问题是如何实现它,任何代码示例和想法都将非常感激。

5 个答案:

答案 0 :(得分:0)

在大多数情况下,您不需要运行iisreset

如果要升级asp.net应用程序,请尝试将app_offline.htm放在应用程序文件夹中,它将停止应用程序并解锁应用程序文件

升级应用程序后,它将自动重启,或者您可以“触摸”web.config强制重启

答案 1 :(得分:0)

您可能最好使用Lab Build将脚本作为目标计算机环境的一部分运行。它可以对该机器运行任何PowerShell以及部署和执行应用程序....

答案 2 :(得分:0)

问题:如何捕获运行IISRESET的结果

我相信老式的方式,希望这就是你要找的东西

C:GT; IISRESET>> C:\ temp.log

您可以使用CMD或powershell

中的上述内容

答案 3 :(得分:0)

过去我曾使用Psexec对远程服务器运行命令,而我们需要在该命令的结果上控制流量,我们只需将控制台传送到共享文件夹并检查我们的成功标志。 / p>

我不确定TFS是否可以这种方式运行命令,但是我们在hudson / jenkins上实现了它。

这不会直接回答你的问题,但它可能提供更好的前进方式

一个例子: psexec.exe \ remoteserver“iisreset> h:\ iisreset.log”

然后使用您的成功标志对iisreset.log运行grep或类似操作,作为运行下一步的条件。

答案 4 :(得分:0)

在这里查看我的答案,这有点相关:Answer

如果在构建服务器上运行TFSBuild服务的用户在测试服务器上拥有足够的权限,那么您可以使用psexec或powershell远程运行命令。阅读以下链接:

PSEXEC

PowerShell Remote commands

没有内置的活动/流程可以帮助您在TFS构建工作流程中的远程计算机上运行脚本。

第1步是确定如何在远程计算机上运行脚本,如上所述,您可以使用PSEXEC或Powershell(尽管在远程计算机上运行PowerShell可能会稍微复杂一些)。

Step2,编写实际脚本来完成工作,停止服务,安装MSI等。

步骤3,编辑当前的构建定义 - 创建新的自定义活动或在构建定义中使用InvokeProcess活动来调用您在步骤2中创建的脚本.InvokeProcess Activity