次のようにmsbuildを実行するとします。
function Clean-Sln {
param($sln)
MSBuild.exe $sln /target:Clean
}
Clean-Sln c:\temp\SO.sln
Poshコンソールでは、出力はカラーで表示されます。これは非常に便利です。出力を見るだけで色を見つけることができます。そして、例えば重要ではないメッセージは灰色です。
質問
次のような場所にリダイレクトする機能を追加したいと思います(簡略化した例):
function Clean-Sln {
param($sln)
MSBuild.exe $sln /target:Clean | Redirect-AccordingToRedirectionVariable
}
$global:Redirection = 'Console'
Clean-Sln c:\temp\SO.sln
$global:Redirection = 'TempFile'
Clean-Sln c:\temp\Another.sln
- 'Console'を使用すると、コマンドレット/関数
Redirect-AccordingToRedirectionVariable
は、出力がパイプされなかったのと同じ方法で、msbuildメッセージを色で出力する必要があります。つまり、出力はそのままにしておく必要があります。 - 'TempFile'を使用する
Redirect-AccordingToRedirectionVariable
と、出力が一時ファイルに保存されます。
それも可能ですか?そうではないと思います:| それとも、目標を達成するためのアドバイスはありますか?
考えられる解決策:
if ($Redirection -eq 'Console) {
MSBuild.exe $sln /target:Clean | Redirect-AccordingToRedirectionVariable
} else {
MSBuild.exe $sln /target:Clean | Out-File c:\temp.txt
}
しかし、多くのmsbuild呼び出しが存在する可能性があると想像する場合、それは理想的ではありません。
恥ずかしがらずに、それに対処するための新しい提案を教えてください;)
リダイレクト/カラーリング/アウトプに関する背景情報も歓迎します。
(問題はmsbuild固有ではなく、色付きの出力を書き込むすべてのアプリケーションに影響します)