संभव डुप्लिकेट:
What does $_ mean in powershell?
मैं पहले से ही किसी और के question and answer एक ही विषय पर देखा है, लेकिन मेरे लिए यह सवाल का जवाब नहीं है।
मैं कैसे करें-वस्तु, कहाँ-वस्तु, foreach-वस्तु आदि का उपयोग करें और उदाहरण के लिए, में एक स्क्रिप्ट ब्लॉक पारित करने के लिए पता है:
dir | ForEach-Object { $_.Name }
जो मौजूदा निर्देशिका में सभी फ़ाइल नाम की एक सरणी देता है ।
यह सी # के एक्सटेंशन चुनें विधि के समान है:
Dir.Select(x => x.Name)
हालांकि, इसके बाद के संस्करण सी # आसानी से समझा जा सकता है क्योंकि हम पद्धति का चयन करें जो तब सूची में प्रत्येक तत्व के लिए यह कार्यान्वित करने के लिए एक समारोह से गुजर रहे हैं।
हालांकि, PowerShell में बराबर:
dir | ForEach-Object { param($x) $x.Name }
कुछ भी वापस नहीं करता है। हालांकि
& { param($x) $x.Name } (dir)[0]
अपेक्षा के अनुसार काम करता है।
क्या कोई व्यक्ति सी # से परिचित किसी व्यक्ति को $ _ के जादू को समझा सकता है लेकिन स्क्रिप्टिंग की दुनिया नहीं? यह एक विशेष खोजशब्द है? क्या इसका उपयोग केवल स्क्रिप्ट ब्लॉक में किया जा सकता है जो cmdlets में पारित हो जाते हैं? फॉरएच-ऑब्जेक्ट (या कोई अन्य cmdlet) में एक को पाइप किए बिना आप कैसे आते हैं? i.e:
& { $_.Name } (dir)[0]
?
के नीचे डेटा पास करने का एक तरीका है, यह किसी अन्य प्रश्न का सटीक डुप्लिकेट नहीं है (जिसे मैंने इस प्रश्न की पहली पंक्ति में कहा था)। * अन्य * प्रश्न अधिक या कम पूछता है कि * इसका उपयोग कैसे करें * नहीं, * मतलब * क्या है। आप बता सकते हैं कि डुप्लिकेट नहीं है क्योंकि स्वीकृत उत्तर अलग हैं। ज़दान के जवाब से पता चलता है कि फ़िल्टर को सीधे कुछ पिप करना संभव है जबकि जेरेडपार का जवाब कुछ के लिए ऑब्जेक्ट को पाइप किया जा रहा है। दोनों के बीच का अंतर सीधे फ़िल्टर को कॉल कर रहा है या फ़िल्टर को दूसरे फिल्टर में पास कर रहा है जो उसके बाद इसे निष्पादित करता है। –