PowerShell के साथ कुछ महीनों के अनुभव और कुछ वैज्ञानिक प्रयोग के बाद, मैंने जो कुछ भी घटाया है उसका सारांश यहां दिया गया है। मैं इस दस्तावेज़ में कभी नहीं मिला :(
[ अद्यतन: इसमें से बहुत कुछ अब बेहतर प्रलेखित प्रतीत होता है।]
पढ़ना और लिखना ताला
जबकि Out-Fileचल रहा है, किसी अन्य अनुप्रयोग लॉग फ़ाइल पढ़ सकते हैं।
जबकि Set-Contentचल रहा है, अन्य अनुप्रयोगों लॉग फ़ाइल नहीं पढ़ सकता। इस प्रकार लंबे चलने वाले कमांड को लॉग करने केSet-Content लिए कभी भी उपयोग न करें ।
एन्कोडिंग
Out-Fileडिफ़ॉल्ट रूप से Unicode( UTF-16LE) एन्कोडिंग में सहेजता है (हालांकि यह निर्दिष्ट किया जा सकता है), जबकि पावरस्ले 3+ में Set-Contentडिफॉल्ट ASCII( US-ASCII) यह भी निर्दिष्ट किया जा सकता है। पहले के PowerShell संस्करणों Set-Contentमें, Default(ANSI) एन्कोडिंग में सामग्री लिखी थी ।
संपादक का नोट : संस्करण 5.1 के रूप में पावरशेल अभी भी संस्कृति-विशिष्ट Default("एएनएसआई") एन्कोडिंग के लिए चूक है , दस्तावेज़ीकरण के दावे के बावजूद। यदि ASCII डिफ़ॉल्ट थे, तो गैर-ASCII वर्ण जैसे कि शाब्दिक मेंü बदल दिए जाएंगे , लेकिन ऐसा नहीं है: पैदावार । ?'ü' | Set-Content tmp.txt; (Get-Content tmp.txt) -eq '?'$False
PS > $null | out-file outed.txt
PS > $null | set-content set.txt
PS > md5sum *
f3b25701fe362ec84616a93a45ce9998 *outed.txt
d41d8cd98f00b204e9800998ecf8427e *set.txt
इसका मतलब है कि दो आदेशों की चूक असंगत हैं, और उन्हें मिश्रित करने से पाठ दूषित हो जाएगा, इसलिए हमेशा एन्कोडिंग निर्दिष्ट करें।
का प्रारूपण
जैसा कि बार्टेक ने समझाया, Out-Fileआउटपुट के फैंसी स्वरूपण को बचाता है, जैसा कि टर्मिनल में देखा गया है। इसलिए दो फ़ाइलों वाले फ़ोल्डर में, कमांड dir | out-file out.txt11 लाइनों के साथ एक फ़ाइल बनाता है।
जबकि Set-Contentएक सरल प्रतिनिधित्व बचाता है। दो फ़ाइलों के साथ उस फ़ोल्डर में, कमांड dir | set-content sc.txtदो लाइनों के साथ एक फ़ाइल बनाता है। टर्मिनल में आउटपुट का अनुकरण करने के लिए:
PS > dir | ForEach-Object {$_.ToString()}
out.txt
sc.txt
मेरा मानना है कि इस स्वरूपण का लाइन ब्रेक के लिए एक परिणाम है, लेकिन मैं अभी तक इसका वर्णन नहीं कर सकता।
फ़ाइल निर्माण
Set-Contentमज़बूती से जब कोई खाली फ़ाइल नहीं बनाता है Out-File:
खाली फ़ोल्डर में, कमांड dir | out-file out.txtएक फाइल बनाता है, जबकि dir | set-content sc.txtऐसा नहीं करता है।
पाइप लाइन चर
Set-Contentपाइपलाइन से फ़ाइल नाम लेता है; आपको कुछ निश्चित मान के लिए कई फ़ाइलों की सामग्री सेट करने की अनुमति देता है।
Out-Fileपाइप लाइन से डेटा लेता है; किसी एकल फ़ाइल की सामग्री को अद्यतन करना।
मापदंडों
Set-Content निम्नलिखित अतिरिक्त पैरामीटर शामिल हैं:
- निकालना
- फ़िल्टर
- शामिल
- से गुजरना
- धारा
- UseTransaction
Out-File निम्नलिखित अतिरिक्त पैरामीटर शामिल हैं:
उन मापदंडों के बारे में अधिक जानकारी के लिए, कृपया मदद करने के लिए देखें; उदा get-help out-file -parameter append।
Set-Contentडिफ़ॉल्ट एन्कोडिंग:(Get-Culture).Textinfo.ANSICodePage(Windows 8.1, Powershell 4.0, CurrentCulturecs-CZ, CurrentUICultureen-GB, ANSICodePage1250, OEMCodePage852, का अनुवाद'řž'उपर्युक्त कोड पृष्ठों में विभिन्न कोडों के साथ स्ट्रिंग का उपयोग करके किया गया )।