【发布时间】:2013-10-12 09:17:55
【问题描述】:
我想自动化一个在 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) IISReset
我认为应该在 RDP 之后简单地调用“IISRESET”,但问题是,如何捕获运行 IISRESET 的结果。
可能适用的工具有:
1) Powershell - 我对 Powershell 了解不多,但如果需要,我愿意学习
2) C#
我的问题是如何实现它,任何代码示例和想法都会非常感激。
【问题讨论】:
-
为什么需要通过 RDP 连接到远程机器? iisreset 支持用于执行远程重置的计算机名参数。
-
如前所述,我需要调用一个 C# 应用程序,然后重置 iis。你能详细说明你所说的吗?是否返回重置状态?
-
我不确定需要详细说明什么。它会产生控制台输出,就好像你在目标机器上运行了 iisreset 一样,如果那是你所要求的。
-
C# 应用程序是做什么的?它是否连接到任何远程系统、网络共享等? RDP 在这里不是正确的工具。您想从命令行远程进入系统。 Powershell 远程处理是一个可能的选项,但是如果您希望在远程会话中连接到另一个远程系统,则存在一些证书委托问题。
-
C# 应用在测试服务器上,我需要远程连接。 C# 应用在测试服务器上进行数据设置,然后,我将在测试服务器上重置 iis。
标签: c# powershell tfs iisreset