これを行うコンソールアプリケーションがあります
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 がストリームを操作してリモート操作をインタラクティブにするという事実を認識しています。多分それがこの単純なことがうまくいかない理由です。