0

基本的には、リモート マシンにコピーされたバッチ ファイルを実行しようとしています。ちなみに、コーディングはこれが初めての試みです。よろしければ、お手柔らかにお願いしますが、必要に応じて批評してください。私はまだ言語を学んでおり、ここまで来るのに 3 時間もかかりました。Google のおかげです。LOL。

コード:

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

        }

    }
}

前もって感謝します。

4

2 に答える 2

2

PSExecヘルプから:

-c指定したプログラムをリモートシステムにコピーして実行します。このオプションを省略する場合、アプリケーションはリモートシステムのシステムパスに存在する必要があります。

そのフラグを使用して、実行するバッチファイルをPSExecにリモートシステムにコピーさせて実行させます。そのために余分なコードを書く必要はありません。

基本的にあなたがしたい:

psexec \\server cmd.exe /c file_you_want_to_run.bat
于 2011-04-13T23:16:03.960 に答える
0

/C を指定して CMD.exe を実行してみてください。cmd.exe ヘルプから:

/C 文字列で指定されたコマンドを実行し、終了します

/C を psExec の内容に追加する必要があります。

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

そうすれば、期待通りの結果が得られると思います。そうでない場合は、psexec.exeが PATH 環境変数にあるディレクトリにあることを確認してください。

また、 ProcessStartInfoを調べて、プロセスの実行用に設定できる他のさまざまなパラメーターを指定することに興味があるかもしれません。

于 2011-04-13T03:32:16.010 に答える