2011-05-25 3 views
5

私はログファイルを監視し、興味深いビットをフィルタリングしてから、それらのビットをファイルに書き込まれるときに私に提示します。すばらしく動作します。関心のある行は次のとおりです:色分けされたコンテンツの取得結果

get-content "$logFile" -wait | where { select-string $searchTerm -inp $_ } 

今私はファンシーになりたいです!

特定の用語に遭遇するたびにフォントの色を変更したいと思います。私は十分に簡単にフォントの色を設定することができますが、あなたはどのように上記の声明でそれを行うでしょうか?

編集:それを解説しましたが、8時間回答を投稿できません。明日アップロードします。

答えて

3

あなたは選択カラーコードを提供し、何かを探しているなら、このような何かをしようと

Get-Content $logFile -Wait | 
    Select-String $searchTerm | 
    ForEach {write-host -ForegroundColor red $_.line} 
+0

イップを、1のthats。 Tnx –

4

を試してみてください。

function Get-LogColor { 
    Param([Parameter(Position=0)] 
    [String]$LogEntry) 

    process { 
     if ($LogEntry.Contains("DEBUG")) {Return "Green"} 
     elseif ($LogEntry.Contains("WARN")) {Return "Yellow"} 
     elseif ($LogEntry.Contains("ERROR")) {Return "Red"} 
     else {Return "White"} 
    } 
} 

は次に、このような行を実行します:

まず、適切な色を選択するために、ヘルパー関数を設定

gc -wait $logFile | ForEach {Write-Host -ForegroundColor (Get-LogColor $_) $_} 
+0

あなたの答えは、私が望むものに、より具体的です。それは動作しますが、次のエラーをランダムに出力しています: 'Get-LogColor:空の文字列であるため、引数 'LogEntry'に引数をバインドできません。ラインで :1文字:156 + ...(GET-LogColor $ _)$ _} + ~~ + CategoryInfo:InvalidData:(:)、ParameterBindingValidationException + FullyQualifiedErrorId [-LogColor取得]:ParameterArgumentValidationErrorEmptyStringNotAllowedを取得-LogColor' –

+0

私はあなたのソースデータを見たことがありませんが、私はあなたのログファイルに空白行があると仮定することができます。これは技術的に 'Mandatory = $ true'バインディングルールを破ります。私は私の答えでこれを削除しました。唯一の結果は、ブランクのログファイル行がコンソールに戻されますが、これはとにかくバニラの "Get-Content(gc)"ステートメントで起こったはずです。 – StevoInco

+0

thnkx、今すぐ動作します。 これが受け入れられる回答である必要があります –

関連する問題