[英]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.