2011-04-13 193 views
1

基本上,我試圖運行在遠程機器上覆制的批處理文件,順便說一句,這是我第一次嘗試編碼,所以請好好但如果你願意的話,可以批評它,但我仍然在學習這門語言,不得不花上3個小時才能得到這樣的結果,感謝上帝給Google,LOL。C#在PsExec啓動後在遠程機器上運行批處理文件

代碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void cleanerBtn_Click(object sender, EventArgs e) 
     { 
      //Copying Batch File to Remote Host 
      string fileToCopy = "C:\\Clean.bat"; 
      string newLocation = hostName.Text; 
      string newFile = (newLocation + "\\clean.bat"); 

      System.IO.File.Copy(fileToCopy, newLocation); 

      //Run PsExec 
      string psExec = "psexec -s "+newLocation+" cmd"; 
      System.Diagnostics.Process.Start("CMD.exe", psExec); 

      //Run Batch File using PsExec 


      //Removing Batch File from Remote Host 
      System.IO.File.Delete(newFile); 

     } 

    } 
} 

在此先感謝。

+0

+1一個良好的心態。希望我知道psexec,所以我可以幫助你。 – 2011-04-13 03:27:32

+0

風格建議:您可以在頂部添加'使用SystemDiagnostics;'和'使用System.IO;'並使用'Process.Start(「CMD.exe」,psExec);'''File.Copy(fileToCopy, newLocation);''File.Delete(newFile);'事後。 – joce 2011-04-13 03:38:50

+0

有關它的任何解決方案? – Kiquenet 2012-01-09 14:05:25

回答

2

從PSEXEC幫助:

-c指定的程序複製到遠程系統 執行。如果省略此選項,應用程序 必須位於遠程系統的系統路徑中。

使用該標誌使PSExec將要執行的批處理文件複製到遠程系統並運行。您不必編寫額外的代碼來完成此操作。

基本上你想做的事:

psexec \\server cmd.exe /c file_you_want_to_run.bat 
+0

這是正確的。您可能必須使用psexec的用戶名/密碼標誌,但不需要編寫任何自己的代碼來實現此目的。 – coffeetocode 2011-04-13 23:29:11

0

嘗試使用/ C運行CMD.exe。從cmd.exe的幫助:

/C執行字符串指定的命令,然後終止

的/ C需要被附加到PSEXEC的內容:

System.Diagnostics.Process.Start("CMD.exe", "/C " + psExec); 

我相信你會得到預期的結果。如果不是,您可能需要確保psexec.exe位於PATH環境變量中的目錄中。

此外,您可能有興趣查看ProcessStartInfo以指定可以爲流程的執行設置的其他參數。

+0

我真的很感激你的答案,對於\\使用psexec部分運行批處理文件,我將如何獲得它來執行復制到遠程機器(字符串hostName)的批處理文件? – user704614 2011-04-13 11:48:47

+0

我不認爲你可以在外國機器上執行代碼。你可以在你的網絡機器上執行批處理文件,但不能反其道而行。這將是一個嚴重的安全缺陷。 – joce 2011-04-13 22:51:36

相關問題