2016-08-31 18 views
3

私は、各行の先頭に数字を付ける非常にシンプルなpowershellスクリプトを用意しています。パイプ出力の色を維持する

function number 
{  
    $i = 0; 
    foreach($line in $input) 
    { 
     [string]$i + ":" + $line 
     ++$i 
    } 
} 

この機能は、入力の色を維持したいと思います。

git status -s 

は私に素敵な色の出力を提供します実行中

git status -s | number 

:たとえば、私は色が失われ、次のコマンドを実行している場合。これを達成するために私のpowershell関数で何を変更できますか?

注意gitには、回答の情報が常にthis questionに出力されるように、すでに私は色を無視していると私は思っています。

これは、これが現在リンクされている質問と重複していません。

私は、実際にMSBuildが標準出力ではなく標準エラーに書き込むのを防ぐ方法について、そのような場合に色が表示されないようにするという質問を見ました。その質問とこれに似た唯一の事柄はタイトルです。それ以外の答え(HTML変換あり)は、データがコンソールに書き込まれ、パイプされないように要求されるため、ここでは適用されません。

答えて

2

私が知っている限り、git status -s、またはStdIn経由でPowerShellにパイプされている他のコマンド出力によって出力される色を保存することはできません。 StdInを介してPowerShell関数にパイプされているテキストの色情報は '失われています'。

色を追加する唯一の方法は、色付きセクションごとに複数のWrite-Host "line section" -ForegroundColor COLOR -NoNewlineを使用して、RegEx一致または位置ベースの色付けを行うことです。

コンソールは、System.IO.StreamReaderを使用してStdIn経由で入力を受け入れます。 PowerShell/ISEの[Console]::In | Get-Memberコマンドを試してください。

+0

残念ながら、そのように思われます。あまりにも悪いことに、私は可能な限り他のシェル(bash)に対する答えを見つけました。 –

0

o/pを[ホスト - 正確にする]コンソールに書き込んでいる場合。 Write-Hostコマンドレットを使用できます。このコマンドレットは、選択した色を設定するために使用できる「フォアグラウンド」と「バックグラウンド」プロパティを提供します。

+0

私自身の色しか設定できませんが、Gitによって出力されたものを再利用しません。 –

関連する問題