質問: あるbatファイルから、powershellコマンドを使用して他バッチを呼び出す処理を作成しており、その他バッチの実行結果を標準出力(エラー出力もリダイレクト)させようと思って下記のように記述しました。 ``` powershell.exe -Command Start-Process """"%~dp0Delcomn.bat"" -Verb Runas > C:\tmp\delcom\result.log 2>&1 ``` 実行すると、result.logファイルは作成されましたが、 標準出力もエラー出力もされておらず0バイトのファイルのみ作成されている状態です。 実行ログとしてファイルを出力させたいのですが、 なぜ出力されないのでしょうか?? ご教授いただけると嬉しいです。
回答: `Start-Process`コマンドレットに`-Verb Runas`オプションを指定すると別ウィンドウとしてコンソールウィンドウが開いてそこでバッチファイルが実行されるわけですが、ご質問のような書き方だとリダイレクトはpowershell.exeの出力に対して行われるため、別ウィンドウでの出力は反映されないことになります。そのため、「リダイレクトも含めて」`Start-Process`コマンドレットに渡さないといけません。 このような感じで「コマンドライン引数」としてリダイレクトを渡すと、バッチファイル名とともに`cmd.exe`に渡されるため、別ウィンドウで実行される`cmd.exe`がリダイレクトを処理してくれます。 ``` powershell.exe -Command Start-Process """バッチファイル名""" -Verb runas -ArgumentList """> ログファイル名 2>&1""" ```