我正在尝试运行远程批处理文件 - 已经位于远程计算机上 - 使用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();
关于看似格式错误的任何想法?我猜它在某个地方有太多的反斜杠(或者说不够!)。
答案 0 :(得分:0)
我认为主要问题是你们两个论点之间没有空格。
试试这个:
wsStopProcess.StartInfo.Arguments = @"\\" + myArray[0].MachineName + @" D:\stopprofile.bat";
我还会警告你,尽管尝试了很多不同的事情,但我还是不能让psexec 100%工作。
答案 1 :(得分:-1)
试试这个:
wsStopProcess.StartInfo.Arguments = @"\\" + myArray[0].MachineName + @" D$\stopprofile.bat";
所以不要使用:
尝试$
符号。在调试时在上面的行上设置断点将帮助您查看确切的路径。