如何调试远程命令

本文关键字:命令 程命令 调试 何调试 | 更新日期: 2023-09-27 18:14:58

我需要在我们的远程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}";

使包含空格的路径被双引号括起来,斜杠不被转义,但结果相同。

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

如何调试远程命令

我也遇到过类似的问题,我的问题是命令shell需要高架运行。SEFA在给出良好的错误消息方面有点笨拙,并且静默失败。