Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TFS生成工作流-是否为SC.EXE调用流程?还是定制活动?_C#_.net_Tfs_Build Automation - Fatal编程技术网

C# TFS生成工作流-是否为SC.EXE调用流程?还是定制活动?

C# TFS生成工作流-是否为SC.EXE调用流程?还是定制活动?,c#,.net,tfs,build-automation,C#,.net,Tfs,Build Automation,我需要在构建工作流中运行命令。具体来说,它是sc.exe,具有如下某些参数: sc.exe \\computerName STOP "serviceName" 在构建工作流中,我是否可以使用InvokeProcess活动来执行此操作?我想避免批处理文件。我是否应该使用InvokeProcess,如果是,我是否必须提供SC.exe的路径。我不这么认为,因为不管工作目录是什么,它的路径都是可以识别的(我认为是因为它是windows系统的可执行文件) 或者我应该以另一种方式执行此操作?您应该能够使用

我需要在构建工作流中运行命令。具体来说,它是sc.exe,具有如下某些参数:

sc.exe \\computerName STOP "serviceName"
在构建工作流中,我是否可以使用InvokeProcess活动来执行此操作?我想避免批处理文件。我是否应该使用InvokeProcess,如果是,我是否必须提供SC.exe的路径。我不这么认为,因为不管工作目录是什么,它的路径都是可以识别的(我认为是因为它是windows系统的可执行文件)


或者我应该以另一种方式执行此操作?

您应该能够使用
InvokeProcess
活动。将
FileName
属性设置为“sc.exe”,并将
参数设置为

String.Format("\\{0} STOP ""{1}""", ComputerName, ServiceName)

假设作用域中有名为ComputerName和ServiceName的变量。

您应该将FileName属性设置为“cmd.exe”,然后将参数设置为
“/c sc.exe\\computerName STOP”+ServiceName

这是可行的,但您或任何人是否知道如何让命令等待服务实际停止。在知道服务已停止之前,我不想进入生成工作流的下一步。如果要停止服务并等待其停止,您可以创建一个
While
循环,该循环运行
sc query
并延迟循环,直到查询显示stopped为止。稍晚一点,但在Whle活动中,从InvokeProcess调用一个批处理,该批处理执行“sc.exe%1 query%2 | find/C/I”%3“,其中%1是服务器名称(带斜杠),%2是您要查找的ServiceKeyName(因此,如果它是W3SVC中的万维发布服务插件),最后%3是您要查找的唯一术语(如引号中的“已停止”或“正在运行”)。如果找到工作id,它将返回1,如果找不到,则返回0。HTH。