【问题标题】:Using the WMI Build Activity to call a remote Command Line command使用 WMI Build Activity 调用远程命令行命令
【发布时间】:2014-04-11 02:07:34
【问题描述】:

所以我在 TFS 构建定义中工作,在一个自定义构建过程中,它将根据用户选择的配置执行一些逻辑。我这样做是为了更全面地自动化测试实验室并使其更加自助。

具体来说,我需要让用户选择在测试运行之前重新启动 SQL Server 的服务,从而允许清除所有缓存并为所有测试测量保持稳定的起点。

为了使用不是手写的东西,并且比我可以使用ServiceController 调用一起破解的东西更全面测试,我想使用WMI 和来自TFSBuildExtensions 项目的WMI Build Activity在 Codeplex 上。使用此活动而不是编写我自己的自定义活动也允许我访问一些日志记录和错误处理,否则我必须自己编写代码。此外,使用 WMI 活动允许我将所有逻辑保留在 .XAML 层,这与构建过程中其他所有操作的完成方式一致。

问题在于WMI 活动的代码内文档有点不清楚。例如,我没有看到它在哪里引用它在Properties 中要求的MachineName agrument,而且我不太确定我应该如何传递 MethodParameters 以在远程机器上使用。我是否只输入以下内容:

CommandLine#~#Net Stop "MSSQLServer" /y

或者什么?我在该特定行看到的错误是:

'String' cannot be converted to 'System.Collections.Generic.IEnumerable(Of String)' because 'Char' is not derived from 'String' as required for the 'Out' generic parameter 'T' in 'Interface IEnumerable(Of Out T)'.

我已经阅读了一些关于 WMI 的内容,但我可能遗漏了一些关于使其连接到 Win32 进程以启动的内容。

【问题讨论】:

    标签: c# tfs wmi build-process tfsbuild


    【解决方案1】:

    为什么不执行 powershell 脚本或.command?这样,当您迁移到 2013 构建模板时,工作量会很小。

    Powershell 内置了用于管理 win 服务的 cmdlet,甚至可以远程管理。

    【讨论】:

    • 考虑到我正在从事的项目的要求,这对我来说并不是一个真正的选择,但我确实考虑过先这样做并将其作为一种选择。在某些方面它实际上会更简单,更有效率。
    • 然后考虑使用 SC.EXE 命令来管理本地和远程 Windows 服务。它可以使用 InvokeProcess 活动调用,并且比 WMI 选项简单得多。
    • 这是否能够处理停止具有依赖关系的服务?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2018-05-27
    相关资源
    最近更新 更多