0

これを行うコンソールアプリケーションがあります

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("out");
        Console.Error.WriteLine("err");
        Environment.ExitCode = 5;
    }
}

上記をcmdプロンプトで実行すると、次のようになります

C:\>C:\pstools\test\outnerr.exe >C:\pstools\test\out1.log 2>C:\pstools\test\err1.log
C:\>echo %errorlevel%
5
C:\>type C:\pstools\test\out1.log
out
C:\>type C:\pstools\test\err1.log
err
C:\>

これは期待されるものです。

これを実行ウィンドウで実行すると

cmd /c C:\pstools\test\outnerr.exe >C:\pstools\test\out2.log 2>C:\pstools\test\err2.log

これも機能し、out2.log と err2.log が作成されます。

psexec を使用して同じことを実行するとします。ログファイルを作成したい。ローカル マシンまたはリモート マシンで作成されているかどうかは関係ありません。だから私はこのコマンドを実行します

C:\pstools\test\psexec.exe \\127.0.0.1 cmd /c C:\pstools\test\outnerr.exe >C:\pstools\test\out3.log 2>C:\pstools\test\err3.log

これは、実行ウィンドウから実行されたときにログ ファイルを作成しません。ただし、コマンドプロンプトから実行しても同じように機能します。

Run Window からログファイルを作成するには、上記で何を変更する必要がありますか?

PS PsExecのリダイレクトの問題について、こことインターネットで多くのスレッドを読みました。PsExec がストリームを操作してリモート操作をインタラクティブにするという事実を認識しています。多分それがこの単純なことがうまくいかない理由です。

4

2 に答える 2

0

-loオプションを使用して、PSExec 出力をファイルに書き込むことができます

あらすじ:

psexec \\<machine_ip_address> -u <username> -p <password> -lo <log_filename> <some_command>

例:

psexec \\192.10.10.69 -u admin -p 12345 -lo paexec.log ipconfig
于 2015-09-09T04:07:11.923 に答える
0

コードを実行しているローカル コンソールにリモート出力をリダイレクトする psexec の代替である xCmd.exe を使用してみてください。JAVA + PSEXEC を混在させようとしましたが、非常に悪い組み合わせです。しかし、xcmd.exe を使用して良い結果が得られましたが、1 つの問題は、2k8 までの 32 ビット OS でうまく動作することです。win7以降、これはうまく機能しません。

于 2012-06-06T20:15:48.600 に答える