我想自动化一个过程,该过程在 TFS 上成功构建后调用。该过程将 RDP 连接到测试服务器,然后调用该服务器上的 C# 应用程序,并重置该服务器上的 IIS。每一步都会返回结果,所以是否调用下一步取决于上一步。
实现它有一些障碍。以下是我想知道是否可行,以及如何编码。
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) IIS重置
我认为应该在 RDP 之后简单地调用“IISRESET
”,但问题是,如何捕获运行 IISRESET 的结果。
可能适合的工具有:
1) Powershell - 我对 Powershell 了解不多,但如果需要我愿意学习
2) C#
我的问题是如何实现它,任何代码示例和想法将不胜感激。
最佳答案
在这里查看我的答案,这有点相关:Answer
如果在构建服务器上运行 TFSBuild 服务的用户在测试服务器上拥有足够的权限,那么您可以使用 psexec 或 powershell 远程运行您的命令。阅读以下链接:
没有内置的事件/进程可以帮助您在 TFS 构建工作流中的远程机器上运行脚本。
第 1 步是确定您将如何在远程计算机上运行脚本,如上所述,您可以使用 PSEXEC 或 Powershell(尽管在远程计算机上运行 PowerShell 的设置可能稍微复杂一些)。
第 2 步,编写实际的脚本来完成工作、停止服务、安装 MSI 等。
第 3 步,编辑您当前的构建定义 - 创建一个新的自定义事件或使用构建定义中的 InvokeProcess 事件来调用您在第 2 步中创建的脚本。InvokeProcess 事件
关于c# - 在 TFS 构建后通过远程桌面连接自动执行 IISRESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19197072/