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

问题描述:

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

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(); 

对似乎格式不正确的任何想法?我猜测它的反斜杠太多(或者不够)!

我认为最主要的问题是你在两个参数之间没有空格。

试试这个:

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

我还要提醒你,我不能让PSEXEC工作100%,尽管尝试很多不同的东西。

+0

感谢您的回应!可悲的是,即使有空间,它也不完美。这是我的更新行:wsStopProcess.StartInfo.Arguments = @“\\”+ myArray [0] .MachineName + @“D:\ stopprofile.bat”; –

试试这个:的

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

因此,而不是使用:尝试$迹象。在调试时在上面的行上设置断点将帮助您查看确切的路径。