PowerShell में Write-Host और Write-Output में क्या अंतर है ?
पसंद...
Write-Host "Hello World ";
Write-Output "Hello World";
PowerShell में Write-Host और Write-Output में क्या अंतर है ?
पसंद...
Write-Host "Hello World ";
Write-Output "Hello World";
जवाबों:
संक्षेप में, Write-Host
कंसोल को ही लिखता है। इसे VBScript में MsgBox के रूप में सोचें । Write-Output
दूसरी ओर, पाइपलाइन को लिखता है, इसलिए अगला कमांड इसे इसके इनपुट के रूप में स्वीकार कर सकता है। आपको Write-Output
ऑब्जेक्ट लिखने के लिए उपयोग करने की आवश्यकता नहीं है , जैसा Write-Output
कि आपके लिए अनुमानित रूप से कहा जाता है।
PS> Get-Service
जैसा होगा:
PS> Get-Service | Write-Output
लिखो-आउटपुट पाइपलाइन को आउटपुट भेजता है। वहां से इसे दूसरे cmdlet पर पाइप किया जा सकता है या एक चर को सौंपा जा सकता है। राइट-होस्ट इसे सीधे कंसोल पर भेजता है।
$a = 'Testing Write-OutPut' | Write-Output
$b = 'Testing Write-Host' | Write-Host
Get-Variable a,b
आउटपुट:
Testing Write-Host
Name Value
---- -----
a Testing Write-OutPut
b
यदि आप पॉवर्सहेल को यह नहीं बताते हैं कि इसे आउटपुट के साथ क्या करना है, तो इसे वेरिएबल में असाइन करके या अनहेर कमांड को पाइप करके, तो इसे आउट-डिफॉल्ट में भेज दिया जाता है, जो कि आमतौर पर कंसोल होता है, इसलिए अंतिम परिणाम समान दिखाई देता है ।
Write-Output
पाइप लाइन के माध्यम से डेटा को ऑब्जेक्ट के रूप में भेजता है। सवालों के उदाहरण में यह सिर्फ एक स्ट्रिंग पास करेगा।
write-host
होस्ट निर्भर है कंसोल write-host
में अनिवार्य रूप से कर रहा है [console]::WriteLine
। अधिक जानकारी के लिए इसे देखें ।
Write-Ouput
वस्तुओं को भेजता है। इस बार यह एक तार था, लेकिन सामान्य तौर पर यह वस्तुओं को भेजेगा, और सामान्य रूप से उपयोग करने के लिए अनावश्यक है क्योंकि यह आउटपुट परिणाम / डेटा के लिए डिफ़ॉल्ट तरीका है :)
राइट-होस्ट और राइट-आउटपुट के बीच एक और अंतर:
राइट-होस्ट संदेश को स्क्रीन पर प्रदर्शित करता है, लेकिन यह उसे लॉग में नहीं लिखता है
राइट-आउटपुट लॉग को संदेश लिखता है, लेकिन यह इसे स्क्रीन पर प्रदर्शित नहीं करता है।
और राइट-होस्ट को हानिकारक माना जाता है। आप लिखो-होस्ट माना जाता हानिकारक में एक विस्तृत विवरण देख सकते हैं ।
Write-Output
है कि स्क्रीन पर संदेश प्रदर्शित होता है, यदि आप स्क्रिप्ट को स्वयं चला रहे हैं। इसलिए मुझे यकीन नहीं है कि आप "राइट-आउटपुट लॉग में एक संदेश लिखते हैं, लेकिन इसका स्क्रीन पर प्रदर्शन नहीं होता है।" ?
आप नीचे दिए गए उदाहरण के साथ दो सेमी के अंतर को समझ सकते हैं:
लिखो-होस्ट "msgtxt" | Get-Service ऊपर चलने पर, आपको "msgtxt" के रूप में आउटपुट मिलेगा
लिखो-आउटपुट "msgtxt" | Get-Service ऊपर चलने पर, आपको एक त्रुटि मिलेगी क्योंकि msgtxt किसी सेवा का नाम नहीं है। (आदर्श स्थिति में) (चूंकि आप इसे एक पाइपलाइन में लिख रहे हैं और इसे Get-Service के इनपुट के रूप में पारित किया जा रहा है)