0

我需要在我们的远程 Skype 服务器上执行这个命令:

SEFAUtil.exe /server:lyncserver.domain1.co.uk sip:MySelf@domain.com /addteammember:sip:OtherUser@domain.com /delayringteam:10

这将一位同事添加到我的团队呼叫组中。

我能够在服务器本身上运行命令,并且在向该服务器发送其他命令时,下面的代码可以工作:

var processToRun = new[] { process };
var connection = new ConnectionOptions();
var wmiScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", LyncServer), connection);
var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
var reason = wmiProcess.InvokeMethod("Create", processToRun);

但是,什么时候process是字符串:

"cmd /c cd /d C:\\Program Files\\Microsoft Lync Server 2013\\ResKit && SEFAUtil.exe /server:lyncserver.domain1.co.uk sip:MySelf@domain.com /addteammember:sip:OtherUser@domain.com /delayringteam:10"

然后用户不会添加到团队呼叫组。


我可以看到它reason包含uint 0,这通常表示成功 - 但实际命令显然失败了。

我也尝试在命令末尾添加> C:\users\user.name\desktop\output.txt2> C:\users\user.name\desktop\output.txt,但他们只是创建了空文本文件,所以不是很有用!

更新

我尝试将命令更改为以下内容:

const string LyncServer = "server.domain1.co.uk";
const string ResKitPath = @"C:\Program Files\Microsoft Lync Server 2013\ResKit";

var command = "SEFAUtil.exe /server:{LyncServer} sip:MySelf@domain.com /addteammember:sip:OtherUser@domain.com /delayringteam:10"; 
var process = $"cmd /c cd /d \"{ResKitPath}\" && {command}";

这样包含空格的路径就会被双引号引起来,并且斜杠不会被转义,但结果相同。

有谁知道调试这个或检索新创建进程的输出的另一种方法?

4

1 回答 1

1

我有一个类似的问题,我的问题是命令 shell 需要运行提升。SEFA 在提供良好的错误消息方面有点笨拙,并且默默地失败了。

于 2016-11-13T22:08:16.210 回答