2014-02-07 115 views
0

我想通過使用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(); 

對似乎格式不正確的任何想法?我猜測它的反斜槓太多(或者不夠)!

回答

0

我認爲最主要的問題是你在兩個參數之間沒有空格。

試試這個:

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

我還要提醒你,我不能讓PSEXEC工作100%,儘管嘗試很多不同的東西。

+0

感謝您的迴應!可悲的是,即使有空間,它也不完美。這是我的更新行:wsStopProcess.StartInfo.Arguments = @「\\」+ myArray [0] .MachineName + @「D:\ stopprofile.bat」; –

-1

試試這個:的

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

因此,而不是使用:嘗試$跡象。在調試時在上面的行上設置斷點將幫助您查看確切的路徑。