2014-06-10 7 views
6

से पूर्ण स्टैक ट्रेस प्राप्त करें मैं दूरस्थ सत्र के तहत Invoke-Expression का उपयोग कर रहा हूं और जब अपवाद फेंकता है - यह किसी भी स्टैक ट्रेस जानकारी के बिना दूरस्थ रिसेप्शन देता है। उदाहरण:रिमोट सत्र

try 
{ 
    Invoke-Expression "$command 2>&1" 
}  
catch 
{ 
    Write-Host $_  
} 

मैं निर्गम (2>&1) करने के लिए त्रुटि अनुप्रेषित बाहर करते हैं - मैं उचित त्रुटि मिल रही है, लेकिन यह ($ आदेश से) अवांछित डिबग सांत्वना, जो छिपा पुनर्निर्देशन उपयोग कर रहा है कहते हैं।

Start-Process -NoNewWindow -FilePath $CmdExe -ArgumentList $Arguments 

स्टार्ट-प्रोसेस का उपयोग करके मैं पूर्ण स्टैक ट्रेस देख सकता हूं लेकिन अवांछित डीबग कंसोल भी देख सकता हूं।

रिमोट सत्र के तहत फेंकने वाले अपवाद से मुझे पूर्ण स्टैक ट्रेस और उचित अपवाद कैसे प्राप्त किया जा सकता है? धन्यवाद।

उत्तर

0

यदि आप दूरस्थ सत्र कर रहे हैं, तो लेखन-होस्ट का उपयोग न करें। इसे आज़माएं:

catch { 
    Write-Error ($_ | fl * -force | out-string) 
} 

दूसरा विकल्प अपवाद को पकड़ना नहीं है और चलो त्रुटि स्थानीय सत्र में वापस प्रसारित नहीं होती है। लेकिन मुझे संदेह है कि आप ठीक होने का प्रयास करना चाहते हैं?

+0

धन्यवाद कीथ, नहीं, मैं ठीक नहीं करना चाहता, मुझे बस सही कारण को परिभाषित करने में त्रुटि प्राप्त करने की आवश्यकता है। आपके उदाहरण में मैं दूरस्थ अपवाद के बारे में पूरी जानकारी और वास्तविक अपवाद के बारे में कुछ भी नहीं देखता (यह जानना चाहिए कि xml संरचना टूटा हुआ है) – Sergey

+0

'fl' को 'fc' (Format-custom) में बदलने का प्रयास करें। वह चार स्तरों की तरह घोंसला वाली वस्तुओं (जैसे अपवाद। इंजेक्शन अपवाद) का पालन करेगा। –

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