2012-05-23 12 views
12

यह एक अजीब बात है। आम तौर पर जब मैं powershell से एक बाहरी कमांड निष्पादित मैं इस तरह & ऑपरेटर का उपयोग करें:अवधि '।' क्या करती है ऑपरेटर शक्तियों में करते हैं?

.$env:systemdrive\chocolatey\chocolateyinstall\chocolatey.cmd install notepadplusplus 

अवधि क्या उद्देश्य पूरा करता है:

& somecommand.exe -p somearguments 

बहरहाल, आज मैं . ऑपरेटर इस तरह इस्तेमाल किया में आए इस परिदृश्य में? मुझे यह नहीं मिला।

+0

आपकी अवधि के बाद इसके बाद एक जगह की आवश्यकता है या अन्यथा यह नीचे वर्णित अनुसार "ऑब्जेक्ट गुणों के लिए पूर्ण रोक देगा"। – Vippy

उत्तर

6

डॉट एक फोन ऑपरेटर है:

$a = "Get-ChildItem" 
. $a # (executes Get-ChildItem in the current scope) 

आपके मामले में, हालांकि, मैं नहीं दिख रहा है कि वह क्या करता।

+5

माइक्रोसॉफ्ट शब्द इसके लिए बनाया गया है ["डॉट सोर्सिंग"] (http://technet.microsoft.com/en-us/library/ee176949.aspx#ECAA)। – Filburt

+4

। या किसी सीएमडी फ़ाइल के लिए कोई फर्क नहीं पड़ता क्योंकि यह एक अलग प्रक्रिया (cmd.exe) में निष्पादित होता है। –

+0

इस तरह डॉट सोर्सिंग का विचार दायरा को बदलना है ताकि स्क्रिप्ट में बनाए गए चर वैश्विक स्तर पर उपलब्ध हों। कीथ की तरह, हालांकि, cmd स्क्रिप्ट्स को वैसे भी चर के उस दायरे तक पहुंच नहीं है, इसलिए यह वास्तव में कुछ भी नहीं बदलता है। – Loophole

14

इस "।" कॉल ऑपरेटर आपके द्वारा बुलाए गए अन्य स्क्रिप्ट से चर भेज देगा और प्राप्त करेगा। "&" कॉल ऑपरेटर केवल चर भेज देगा।

उदाहरण के लिए निम्नलिखित पर विचार:

स्क्रिप्ट 1 (कॉल-operator.ps1):

clear 

$funny = "laughing" 

$scriptpath = split-path -parent $MyInvocation.MyCommand.Definition 
$filename = "laughing.ps1" 

"Example 1:" # Call another script. Variables are passed only forward. 

& $scriptpath\$filename 

"Example 2:" # Call another script. Variables are passed backwards and forwards. 

. $scriptpath\$filename 
$variableDefinedInOtherScript 

स्क्रिप्ट 2 (laughing.ps1):

# This is to test the passing of variables from call-operator.ps1 

"I am $funny so hard. Passing variables is so hilarious." 

$variableDefinedInOtherScript = "Hello World!" 

दोनों लिपियों बनाएं और केवल पहले भागो। आप देखेंगे कि "।" कॉल ऑपरेटर भेजता है और चर प्राप्त करता है।

दोनों के पास उनके उपयोग हैं, इसलिए रचनात्मक बनें। उदाहरण के लिए, "&" कॉल ऑपरेटर उपयोगी होगा यदि आप अपनी वर्तमान स्क्रिप्ट में मूल मान को संरक्षित करते समय किसी अन्य स्क्रिप्ट में चर के मान (मानों) को संशोधित करना चाहते हैं। किंडा एक सुरक्षा। ;)

+0

संक्षेप में, यह सब "स्कोप" के बारे में है। Google बॉक्स पर जाएं और "पावरहेल वैरिएबल स्कोप" खोजें। – Vippy

3

लघु: यह एक विशेष ऑपरेटर को प्राप्त करने के क्या नियमित ऑपरेटरों हासिल नहीं कर सकते इस्तेमाल किया है। यह विशेष ऑपरेटर . वास्तव में दो अलग-अलग अलग-अलग विशेष ऑपरेटर उपयोग के मामलों में है।

लांग:

किसी अन्य, पटकथा या भाषा अन्यथा के साथ के रूप में, PowerShell स्क्रिप्ट भी मूल्यों में हेरफेर करने में मदद करने ऑपरेटरों के विभिन्न प्रकार का समर्थन करता है।ये नियमित ऑपरेटरों में शामिल हैं:

  • अंकगणित
  • असाइनमेंट
  • तुलना
  • तार्किक
  • पुनर्निर्देशन
  • सूची आइटम
  • स्प्लिट और जुड़ें
  • प्रकार
  • एकल

हालांकि, PowerShell भी क्या विशेष ऑपरेटरों जो कार्यों कि ऑपरेटरों के अन्य प्रकार से नहीं किया जा सकता प्रदर्शन करने के लिए उपयोग किया जाता है के रूप में जाना का समर्थन करता है।

ये विशेष ऑपरेटरों को शामिल करें:

  • @() सरणी उपसूचक ऑपरेटर
  • & कॉल ऑपरेटर
  • [ ] कास्ट ऑपरेटर
  • , अल्पविराम ऑपरेटर
  • . डॉट सोर्सिंग ऑपरेटर
  • -f स्वरूप ऑपरेटर
  • [ ] सूचकांक ऑपरेटर
  • | पाइपलाइन ऑपरेटर
  • . संपत्ति भिन्नता ऑपरेटर
  • .. रेंज ऑपरेटर
  • :: स्टेटिक सदस्य ऑपरेटर
  • $() उपसूचक ऑपरेटर

.डॉट सोर्सिंग ऑपरेटर: इस संदर्भ में एक स्क्रिप्ट को मौजूदा स्कोप में चलाने की इजाजत देने के लिए प्रयोग किया जाता है, जो अनिवार्य रूप से किसी भी फ़ंक्शन, उपनाम और चर को अनुमति देता है जिसे स्क्रिप्ट द्वारा वर्तमान स्क्रिप्ट में जोड़ा जा सकता है।

उदाहरण:

. c:\scripts.sample.ps1 

नोट. विशेष ऑपरेटर के इस आवेदन (.) प्रतीक है कि वर्तमान निर्देशिका का प्रतिनिधित्व करता है से अलग करने के लिए एक जगह द्वारा पीछा किया जाता है कि

उदाहरण:

. .\sample.ps1 

.संपत्ति भिन्नता ऑपरेटर: गुण और एक वस्तु की के तरीकों जो यह दर्शाता है कि . चरित्र की बाईं ओर अभिव्यक्ति एक वस्तु और के दाईं ओर अभिव्यक्ति है द्वारा . इस प्रकार पर पहुंच की अनुमति एक वस्तु सदस्य (एक संपत्ति या विधि) है।

उदाहरण:

$myProcess.peakWorkingSet 
(get-process PowerShell).kill() 

अस्वीकरण & सूत्रों का कहना है:

मैं एक ही सवाल था, जबकि एक PowerShell स्क्रिप्ट है कि मैं अपनी सुविधा सेट पर विस्तार करने के लिए कोशिश कर रहा था पर देख रहे हैं और यहाँ जब उतरा उत्तर के लिए मेरा शोध कर रहा हूँ। हालांकि, this माइक्रोसॉफ्ट डेवलपमेंट नेटवर्क पर this के साथ पूरक आईटी प्रो से एक ही विचार के आगे विस्तार के साथ मेरा जवाब ढूंढने में कामयाब रहा।

चीयर्स।

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