はじめに PowerShell上で Start-Process コマンドを使って起動したアプリケーションは -RedirectStandardOutput や RedirectStandardError オプションを指定することで、ログを ファイルに出力 できます(コンソールには出力できないので注意)。 このログを同時にコンソールにも表示させたかったのですが、思いのほか苦戦したので備忘録として共有します。 できた方法 結局出力されたログファイルを、別起動したプロセスでTailするという方法を採用しました。 下記はsomethig.logに書き込みつつ同時にコンソールにもログの内容を出力するPowerShellの例です。 try { $logJobObj = Start-Job - ScriptBlock { Get-Content - Path ".\something.log" - Wait } $mainProcessObj = Start-Process - PassThru - FilePath process . exe - ArgumentList "-something_argument... -RedirectStandardOutput " . \something . log " RedirectStandardError " . \something . log" / / アプリケーションが終了するまで待つ While ( ! $mainProcessObj . HasExited ) { / / ログをTailしているJobの出力を受け取る Receive-Job $logJobObj / / 適当な秒数待つ Start-Sleep - Seconds 1 } Receive-Job $logJobObj } finally { if ( $logJobObj ) { Receive-Job $logJobObj / / ログをTailしているJobを終了 Stop-Job $logJobObj Re...
IT関連の技術やプログラミングを中心に記事を書いています。ハードウェアも好きなので、日々のちょっとしたお役立ち情報も投稿しています。