使用PsExec和C#运行远程批处理文件

时间:2014-02-07 16:18:09

标签: c# batch-file psexec

我正在尝试运行远程批处理文件 - 已经位于远程计算机上 - 使用PsExec,通过C#中的Process调用。我已经确认所有必需的文件已经存在,但我相信我的语法可能有问题,因为重定向的输出表明它无法找到指定的文件。

运行PsExec的机器是动态的,这是myArray [0] .MachineName值(这没有问题)。

wsStopProcess.StartInfo.FileName = @"C:\Windows\system32\PsExec.exe";
wsStopProcess.StartInfo.Arguments = @" \\" + myArray[0].MachineName + @"D:\stopprofile.bat";

wsStopProcess.StartInfo.UseShellExecute = false;
wsStopProcess.StartInfo.CreateNoWindow = true;
wsStopProcess.StartInfo.RedirectStandardOutput = true;
wsStopProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

wsStopProcess.Start(); 

关于看似格式错误的任何想法?我猜它在某个地方有太多的反斜杠(或者说不够!)。

2 个答案:

答案 0 :(得分:0)

我认为主要问题是你们两个论点之间没有空格。

试试这个:

wsStopProcess.StartInfo.Arguments = @"\\" + myArray[0].MachineName + @" D:\stopprofile.bat";

我还会警告你,尽管尝试了很多不同的事情,但我还是不能让psexec 100%工作。

答案 1 :(得分:-1)

试试这个:

wsStopProcess.StartInfo.Arguments = @"\\" + myArray[0].MachineName + @" D$\stopprofile.bat";

所以不要使用:尝试$符号。在调试时在上面的行上设置断点将帮助您查看确切的路径。