2012-03-01 13 views
7

मैं पावरहेल के लिए बिल्कुल नया हूं और कुछ बहुत बड़ी लिपियों यानी एक स्क्रिप्ट लिखी है जो अन्य स्क्रिप्ट्स को कॉल करती है जिनके कार्यों में अन्य कार्यों में घोंसला है। जब मैं इस स्क्रिप्ट को लॉन्च करता हूं तो मुझे कभी-कभी त्रुटियां मिलती हैं जिन्हें मैं नहीं जानता कि वे कहां से आए थे। क्या इस स्क्रिप्ट को समाप्त करने का कोई आसान तरीका है ताकि मैं त्रुटि का निवारण कर सकूं?स्क्रिप्ट प्रवाह का पता लगाने के लिए कैसे करें

उत्तर

12

आप Set-PsDebug उपयोग कर सकते हैं उत्पादन के लिए PowerShell प्राप्त करने के लिए लगभग हर लाइन इसे चलाता:

Set-PSDebug -Trace 1; 

केवल नकारात्मक पक्ष यह है कि आप शायद उत्पादन की खोजबीन करना बहुत से खत्म करेंगे ...

+0

यह वही है जो मैं ढूंढ रहा था। हालांकि, मुझे यह पता लगाने में बड़ा फायदा दिखाई देता है कि कैसे ठीक से डीबग करना है, इसलिए मैं इसे बाद में देखूंगा। –

0

आम तौर पर त्रुटि में कॉलिंग स्क्रिप्ट शामिल होती है।

विफल रहा है कि आप डीबग मोड में विंडो पावरशेल आईएसई की स्क्रिप्ट चलाने का प्रयास कर सकते हैं। यह आपको ब्रेक पॉइंट्स और कोड के माध्यम से कदम का उपयोग करने की अनुमति देता है। डिबगिंग के लिए आईएसई के प्रयोग पर

Artile:

ISE debugging

संबंध Arcass

4

डिबगिंग के लिए जहाँ मैं आईएसई साथ या PowerGUI साथ डिबगिंग का सुझाव से अपने त्रुटि आ रहे हैं के देखने के लिए।

आप Start-Transcript cmdlet का उपयोग करके अपनी स्क्रिप्ट का एक प्रतिलेख भी प्राप्त कर सकते हैं जो सभी कंसोल गतिविधि को फ़ाइल में लिख देगा। तो आप Write-Host "Doing XYZ" जैसे बयान डाल सकते हैं और वे ट्रांसक्रिप्ट लॉग में दिखाई देंगे।

आप एक कोशिश पकड़ के साथ अपवाद को पकड़ने या आप इस तरह लाइन नंबर और अपवाद के स्तंभ लिख सकते हैं एक जाल का उपयोग करते हैं:

$ErrorActionPreference = 'Stop' 

trap { 
    Write-Host "Error on line $($_.InvocationInfo.ScriptLineNumber)" 
    exit 1 
} 

try { 
    Get-Item DoesntExist 
} catch { 
    Write-Host ("Error occurred on line: " + $_.InvocationInfo.ScriptLineNumber) 
} 

$_.InvocationInfo अन्य विवरण के बारे थे त्रुटि से आ रही है है।

$ErrorActionPreference = "Stop" सेट करके आप सुनिश्चित करते हैं कि कोई भी त्रुटि trap{} ब्लॉक को ट्रिगर करती है, जो इस मामले में स्क्रिप्ट को प्राप्त करने और बाहर निकलने वाली रेखा लिखती है।

+0

जोड़ा गया 'जाल {}' त्रुटियों को संभालने के बारे में अधिक जानकारी, क्योंकि इससे किसी भी त्रुटि के सामान्य समस्या निवारण को बिना किसी कथन के 'प्रयास {} पकड़ {} 'रखने की आवश्यकता होती है। –

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