2009-04-01 9 views
141

के लिए PowerShell में समतुल्य गूंज मैं झंडे को सेट करके और पूरे स्क्रिप्ट में डेटा मैट्रिकुलेट को देखकर PowerShell स्क्रिप्ट में चर और मान आउटपुट करना चाहता हूं।स्क्रिप्ट परीक्षण

मैं यह कैसे करूँगा?

उदाहरण के लिए, निम्न PHP कोड के बराबर PowerShell क्या होगा?

echo "filesizecounter: " . $filesizecounter 
+0

चेक कि [PowerGUI] के साथ आता है (http://www.powergui.org/index.jspa)। यह आपके लिए क्या हो रहा है के लिए उपयुक्त हो सकता है। मैं समझता हूं कि पावरहेल 2 भी एक डीबगर के साथ आता है (लेकिन मैंने कोशिश नहीं की है)। –

उत्तर

182

कई तरीके हैं::

echo "filesizecounter: $filesizecounter" 

इस तरह PowerShell कुछ में आपकी आवश्यकताओं के अनुरूप होना चाहिए

Write-Host: कंसोल पर सीधे लिखें, फ़ंक्शन/cmdlet आउटपुट में शामिल नहीं है। अग्रभूमि और पृष्ठभूमि रंग सेट करने की अनुमति देता है।

Write-Debug: $DebugPreference जारी रखने या रोकने के लिए सीधे कंसोल पर लिखें।

Write-Verbose: $VerbosePreference जारी रखने या रोकने के लिए सीधे कंसोल पर लिखें।

उत्तरार्द्ध अतिरिक्त वैकल्पिक जानकारी, Write-Debug डिबगिंग के लिए है (इसलिए इस मामले में फिट होना प्रतीत होता है)।

अतिरिक्त: PSH2 में (कम से कम) लिपियों cmdlet का उपयोग स्वचालित रूप से -Verbose और -Debug स्विच मानकों मिल जाएगा बंधन, स्थानीय स्तर पर Write-Verbose और Write-Debug सक्षम करने (अर्थात अधिभावी वरीयता चर) के रूप में संकलित cmdlets और प्रदाताओं से करते हैं। सिर्फ स्ट्रिंग वस्तु बनाने और पाइप लाइन उत्पादन यह जाने है powershell में प्रतिध्वनित करने के लिए सबसे आसान तरीका है

echo "filesizecounter : $filesizecounter"

+3

लिखित-डीबग और लिखित-वर्बोज़ के बारे में अच्छी बात यह है कि आप अपने कोड में अपने डीबग स्टेटमेंट छोड़ सकते हैं, और उपयुक्त वरीयता चर का उपयोग करते समय आउटपुट चालू कर सकते हैं। समय बचाता है और आपके कार्यों के अन्य उपयोगकर्ताओं के लिए एक अच्छी सुविधा है। – JasonMArcher

+4

आप आउट-स्ट्रिंग से भी परिचित होना चाहते हैं, क्योंकि किसी भी गैर-तुच्छ वस्तु के साथ, आपको उस तीन लिखें- * cmdlets में से किसी एक का उपयोग करने से पहले ऑब्जेक्ट को डिस्प्ले-सक्षम स्ट्रिंग में बदलने के लिए इसका उपयोग करना होगा। – Jaykul

20

PowerShell interpolates, करता है यह नहीं है?

PHP में

echo "filesizecounter: " . $filesizecounter 

के रूप में भी लिखा जा सकता है:

Write-Host "filesizecounter: $filesizecounter" 
60

Powershell Write-Output को एक उपनाम मानचित्रण गूंज है, तो:

$filesizecounter = 8096 
"filesizecounter : $filesizecounter" 

बेशक, आप लिखें- * विधियों का उपयोग न करने पर कुछ लचीलापन छोड़ देते हैं।

+2

'echo' माइक्रोसॉफ्ट के [टेकनेट] (https://technet.microsoft.com/en-us/library/hh849921.aspx) के अनुसार' लिखें-आउटपुट 'के लिए उपनाम है और [यहां] [http: // stackoverflow.com/a/17623902/857209) –

+0

धन्यवाद ग्लेन, ऐसा लगता है कि मैंने इसे पोस्ट करने के बाद 6 वर्षों में उपनाम को रीमेप कर दिया है। जो अच्छा है, वास्तव में लिखने वाले होस्ट का उपयोग नहीं करना चाहिए क्योंकि यह पाइपलाइन को छोड़ देता है। मैंने इसे इंगित करने के लिए अपना जवाब अपडेट कर दिया है। धन्यवाद! –

+0

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

2

Get-Content .\yourScript.PS1 आज़माएं और आप अपनी स्क्रिप्ट की सामग्री देखेंगे।

भी आप अपने शेयरों पर आधारित कोड में इस लाइन सम्मिलित कर सकते हैं:

get-content .\scriptname.PS1 
script code 
script code 

....

8

गूंज Write-Output पर उपनाम है हालांकि यह Write-Host जैसा दिखता है।

यह What is the difference between echo and Write-Host in PowerShell? नहीं है।

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

3

मैं अगर यह ऐसा करने के लिए बुद्धिमान है पता नहीं है, लेकिन तुम सिर्फ

"filesizecounter: " + $filesizecounter 

लिख सकते हैं और यह होना चाहिए उत्पादन:

filesizecounter: मूल्य

+0

'" फाइलइज काउंटर: $ filesizecounter "' भी छोटा है। – jiggunjer

2

लिखें - ठीक काम ठीक है। बाहर स्क्रिप्ट संपादक/डिबगर

$Filesize = (Get-Item $filepath).length; 
Write-Host "FileSize= $filesize"; 
संबंधित मुद्दे