2011-05-25 13 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

यिप, एक thats। टीएनएक्स –

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

आपका उत्तर अधिक विशिष्ट है, जो मैं चाहता हूं। यह काम करता है, लेकिन यह निम्न त्रुटि को यादृच्छिक रूप से प्रिंट कर रहा है: 'गेट-लॉगकॉलर: पैरामीटर' लॉगइन्ट्री 'पर तर्क बाध्य नहीं कर सकता क्योंकि यह एक खाली स्ट्रिंग है। लाइन में: 1 वर्ण: 156 + ... (Get-LogColor $ _) $ _} + ~~ + CategoryInfo: InvalidData: (:) [Get-LogColor], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationErrorEmptyStringNotAllowed, जाओ -LogColor' –

+0

मैंने आपका स्रोत डेटा नहीं देखा है, लेकिन मैं केवल यह मान सकता हूं कि आपकी लॉग फ़ाइल में खाली रेखाएं हैं, जो तकनीकी रूप से 'अनिवार्य = $ सत्य' बाध्यकारी नियम तोड़ देती हैं। मैंने इसे अपने जवाब में हटा दिया है; एकमात्र परिणाम यह है कि आपकी खाली लॉग फ़ाइल लाइनों को कंसोल पर वापस भेज दिया जाएगा, लेकिन यह वनीला "गेट-कंटेंट (जीसी)" कथन के साथ हुआ होगा। – StevoInco

+0

thnkx, अब यह ठीक काम कर रहा है। यह स्वीकार्य उत्तर होना चाहिए –

संबंधित मुद्दे