1

簡単に言えば...

これは機能しません:

Process p = new Process();
p.StartInfo.FileName = @"External\PsExec.exe";
string file = String.Concat(Path.Combine(Environment.CurrentDirectory,"temp"),@"\iisreset",DateTime.Now.ToString("ddMMyyyy-hhmmssss"),".txt");
p.StartInfo.Arguments = String.Format("-s -u {0}\\{1} -p {2} \\\\{3} iisreset > \"{4}\"", Domain,UserName, Password, machineIP, file);
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit();

RPC Unavailable メッセージが表示されます。

しかし、プログラムフォルダーのコマンドラインにアクセスすると、ファイル名/引数で指定したのとまったく同じように、(正しいパラメーターを使用して)これを実行します...

External\PsExec.exe -s -u [user] -p [password] \\[ip] iisreset > "[path]"

できます!C# Process で他に何か指定する必要はありますか? 何が起こっている可能性がありますか?

前もって感謝します!

EDITcmd : FileName として/c PsExec.exe引数の前に置くと機能します。問題は、このように常にウィンドウを表示することです。

4

3 に答える 3

1

このように引数を使用して標準出力をリダイレクトすることはできません。それは物事が実際にどのように機能するかではありません。

コマンド ラインでは、コマンド インタープリターが > を認識すると引数が終了し、標準出力をファイル名にリダイレクトするプロセスが開始されます。

C# でこれを行うには、クラスのRedirectStandardOutputプロパティを使用し、ストリームから読み取り、ファイルに書き込む必要があります。StartInfoProcess.StandardOutput

RedirectStandardOutputの MSDN ドキュメントには、開始するために使用できる短い例があります。

于 2011-11-09T15:39:57.447 に答える