2008-12-15 14 views

उत्तर

13

हाँ और हाँ।

आप अंतर्निहित $host ऑब्जेक्ट का उपयोग कर सकते हैं यदि आप जो करना चाहते हैं वह टेक्स्ट रंग बदलना है। हालांकि, आप त्रुटि संदेश को स्वयं नहीं बदल सकते - यह हार्डकोडेड है।

आप क्या कर सकते हैं (ए) त्रुटि संदेशों को दबाना है, और इसके बजाय (बी) त्रुटियों को जाल और अपना खुद का प्रदर्शित करें।

$ErrorActionPreference = "SilentlyContinue" सेट करके (ए) पूरा करें - यह त्रुटि को रोक नहीं पाएगा, लेकिन यह संदेशों को दबा देता है।

समापन (बी) थोड़ा और काम की आवश्यकता है। डिफ़ॉल्ट रूप से, अधिकांश PowerShell आदेश एक trappable अपवाद नहीं उत्पन्न करते हैं। इसलिए आपको कुछ रन गलत होने पर एक ट्रैपबल अपवाद उत्पन्न करने के लिए आदेश चलाने और -EA "रोकें" पैरामीटर जोड़ने के लिए सीखना होगा। एक बार जब आप यह है कि किया है, तो आप टाइप करके खोल में एक जाल बना सकते हैं:

trap { 
# handle the error here 
} 

आप इसे हर बार लिखने की अपेक्षा अपनी प्रोफ़ाइल लिपि में इस डाल सकता है। जाल के अंदर, आप लिखने-त्रुटि cmdlet का उपयोग करके जो भी त्रुटि पाठ पसंद करते हैं उसे आउटपुट कर सकते हैं।

संभवतः आप जो काम करना चाहते थे उससे अधिक काम करते हैं, लेकिन मूल रूप से आप जो करते हैं वह आप करेंगे।

7

यहां सामानों का एक समूह है जो आपको अपने कंसोल आउटपुट को अनुकूलित करने देगा। आप अपनी सेटिंग्स में इन सेटिंग्स को सेट कर सकते हैं, या विभिन्न उद्देश्यों के लिए उन्हें बदलने के लिए फ़ंक्शंस/स्क्रिप्ट बना सकते हैं। हो सकता है कि आप कभी-कभी "मुझे बग न करें" मोड चाहते हैं, या "मुझे सब कुछ गलत चल रहा है" दिखाएं। आप उन लोगों के बीच बदलने के लिए एक समारोह/स्क्रिप्ट बना सकते हैं।

## Change colors of regular text 
$Host.UI.RawUI.BackGroundColor = "DarkMagenta" 
$Host.UI.RawUI.ForeGroundColor = "DarkYellow" 

## Change colors of special messages (defaults shown) 
$Host.PrivateData.DebugBackgroundColor = "Black" 
$Host.PrivateData.DebugForegroundColor = "Yellow" 
$Host.PrivateData.ErrorBackgroundColor = "Black" 
$Host.PrivateData.ErrorForegroundColor = "Red" 
$Host.PrivateData.ProgressBackgroundColor = "DarkCyan" 
$Host.PrivateData.ProgressForegroundColor = "Yellow" 
$Host.PrivateData.VerboseBackgroundColor = "Black" 
$Host.PrivateData.VerboseForegroundColor = "Yellow" 
$Host.PrivateData.WarningBackgroundColor = "Black" 
$Host.PrivateData.WarningForegroundColor = "Yellow" 

## Set the format for displaying Exceptions (default shown) 
## Set this to "CategoryView" to get less verbose, more structured output 
## http://blogs.msdn.com/powershell/archive/2006/06/21/641010.aspx 
$ErrorView = "NormalView" 

## NOTE: This section is only for PowerShell 1.0, it is not used in PowerShell 2.0 and later 
## More control over display of Exceptions (defaults shown), if you want more output 
$ReportErrorShowExceptionClass = 0 
$ReportErrorShowInnerException = 0 
$ReportErrorShowSource = 1 
$ReportErrorShowStackTrace = 0 

## Set display of special messages (defaults shown) 
## http://blogs.msdn.com/powershell/archive/2006/07/04/Use-of-Preference-Variables-to-control-behavior-of-streams.aspx 
## http://blogs.msdn.com/powershell/archive/2006/12/15/confirmpreference.aspx 
$ConfirmPreference = "High" 
$DebugPreference = "SilentlyContinue" 
$ErrorActionPreference = "Continue" 
$ProgressPreference = "Continue" 
$VerbosePreference = "SilentlyContinue" 
$WarningPreference = "Continue" 
$WhatIfPreference = 0 

तुम भी केवल कि cmdlet कॉल को प्रभावित करने के cmdlets पर -ErrorAction और -ErrorVariable पैरामीटर का उपयोग कर सकते हैं। दूसरा डिफ़ॉल्ट डिफ़ॉल्ट त्रुटि के बजाय निर्दिष्ट चर में त्रुटियां भेजेगा।

+0

ध्यान दें कि $ ReportErrorShow * चर का वास्तव में PowerShell 2.0 में कोई प्रभाव नहीं पड़ता है। Http://technet.microsoft.com/en-us/library/dd347675.aspx – Timbo

+0

अच्छा बिंदु देखें, पीएस v2.0 में अब एक अलग सिस्टम है। मैं अपना जवाब अपडेट करूंगा। – JasonMArcher

1

इसके अलावा, आप यह कर सकते हैं त्रुटि पाठ की एक विशेष लाइन लिखने के लिए:

1

यह या नहीं हो सकता है हो सकता है कि आप क्या चाहते

$Host.UI.WriteErrorLine("This is an error") 

(इस उत्तर के लिए क्रिस सियर्स को रंगमंच की सामग्री), लेकिन

$ErrorView = "CategoryView" 

यह एक छोटी एक-पंक्ति त्रुटि संदेश देता है, उदाहरण के लिए:: वहाँ एक $ ErrorView वरीयता चर है कि आप निर्धारित कर सकते हैं

[PS]> get-item D:\blah 
ObjectNotFound: (D:\blah:String) [Get-Item], ItemNotFoundException 
संबंधित मुद्दे