c# - 在 TFS 构建后通过远程桌面连接自动执行 IISRESET

标签 c# powershell tfs iisreset

我想自动化一个过程,该过程在 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 远程运行您的命令。阅读以下链接:

PSEXEC

PowerShell Remote commands

没有内置的事件/进程可以帮助您在 TFS 构建工作流中的远程机器上运行脚本。

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

第 2 步,编写实际的脚本来完成工作、停止服务、安装 MSI 等。

第 3 步,编辑您当前的构建定义 - 创建一个新的自定义事件或使用构建定义中的 InvokeProcess 事件来调用您在第 2 步中创建的脚本。InvokeProcess 事件

关于c# - 在 TFS 构建后通过远程桌面连接自动执行 IISRESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19197072/

相关文章:

powershell - 如何解决 Add-PSSnapin Microsoft.TeamFoundation.PowerShell 和 Get-TfsChildItem 错误?

visual-studio - visual studio 扩展如何在引用 TFS 客户端 dll 时同时针对 2013 和 2015

c# - 从控制台中删除特殊字符以加载 txt 文件

c# - 当您必须同时拥有异步和同步版本的代码时,如何避免违反 DRY 原则?

c# - 如何将字节数组(MD5 哈希)转换为字符串(36 个字符)?

windows - 为什么 'Measure-Object -InputObject $foo' 与 PowerShell 中的 '$foo | Measure-Object' 不同?

sharepoint - 使用PowerShell取消多个SharePoint工作流

powershell - 如何使用变量名从对象访问属性?

git - 非常大的 TFS 存储库——来自子文件夹的 <git tfs branch>

c# - 在 View 中访问 session 变量