我需要在远程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.txt和2> 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}";因此,包含空格的路径是双引号,斜杠不是转义,而是具有相同的结果。
有人知道另一种方式来调试这个或检索新创建的进程的输出吗?
发布于 2016-11-13 22:08:16
我也有过类似的问题,我的问题是命令外壳需要运行得更高。SEFA在给出好的错误消息方面有点愚蠢,并且默默地失败了。
https://stackoverflow.com/questions/40265655
复制相似问题