PowerShell
PowerShell में चर
खोज…
परिचय
वेरिएबल्स का उपयोग मूल्यों को संग्रहीत करने के लिए किया जाता है। मान किसी भी प्रकार का हो, हमें इसे कहीं स्टोर करने की आवश्यकता है ताकि हम इसे कंसोल / स्क्रिप्ट में उपयोग कर सकें। PowerShell में चर नाम $ में शुरू होते हैं, जैसा कि $ Variable1 में है , और मान = = का उपयोग करके असाइन किए गए हैं, जैसे $ Variable1 = "Value 1"। PowerShell बड़ी संख्या में परिवर्तनीय प्रकारों का समर्थन करता है; जैसे टेक्स्ट स्ट्रिंग्स, पूर्णांक, दशमलव, सरणियाँ और यहां तक कि उन्नत प्रकार जैसे संस्करण संख्या या आईपी पते।
सरल चर
पावरशेल में सभी चर अमेरिकी डॉलर ( $
) के संकेत के साथ शुरू होते हैं। इसका सबसे सरल उदाहरण है:
$foo = "bar"
यह कथन "बार" के स्ट्रिंग मान के साथ foo
नामक एक चर आवंटित करता है।
एक चर को हटाना
मेमोरी से एक वेरिएबल को हटाने के लिए, व्यक्ति Remove-Item
cmdlet का उपयोग कर सकता है। नोट: चर नाम में $
शामिल नहीं है।
Remove-Item Variable:\foo
Variable
में एक प्रदाता है जो अधिकांश * -आईटीएम cmdlets को फाइल सिस्टम की तरह काम करने की अनुमति देता है।
चर को हटाने के लिए एक अन्य विधि निकालें-परिवर्तनीय cmdlet और इसके उपनाम rv का उपयोग करना है
$var = "Some Variable" #Define variable 'var' containing the string 'Some Variable'
$var #For test and show string 'Some Variable' on the console
Remove-Variable -Name var
$var
#also can use alias 'rv'
rv var
क्षेत्र
एक चर के लिए डिफ़ॉल्ट गुंजाइश संलग्न कंटेनर है। अगर कोई स्क्रिप्ट, या अन्य कंटेनर के बाहर है तो स्कोप Global
। कोई स्कोप निर्दिष्ट करने के लिए, इसे वेरिएबल नाम $scope:varname
में उपसर्ग किया जाता है $scope:varname
like:
$foo = "Global Scope"
function myFunc {
$foo = "Function (local) scope"
Write-Host $global:foo
Write-Host $local:foo
Write-Host $foo
}
myFunc
Write-Host $local:foo
Write-Host $foo
आउटपुट:
Global Scope Function (local) scope Function (local) scope Global Scope Global Scope
एक CmdLet आउटपुट पढ़ना
डिफ़ॉल्ट रूप से, पॉवरशेल कॉलिंग एंटिटी को आउटपुट लौटा देगा। नीचे उदाहरण पर विचार करें,
Get-Process -Name excel
यह बस, रनिंग प्रक्रिया को लौटाता है, जो एक्सेल से, कॉलिंग एंटिटी से मेल खाता है। इस मामले में, PowerShell होस्ट। यह कुछ ऐसा प्रिंट करता है,
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
1037 54 67632 62544 617 5.23 4544 1 EXCEL
अब अगर आप आउटपुट को वेरिएबल में असाइन करते हैं, तो यह कुछ भी प्रिंट नहीं करेगा। और निश्चित रूप से चर आउटपुट रखता है। (यह एक स्ट्रिंग है, वस्तु - उस मामले के लिए किसी भी प्रकार)
$allExcel = Get-Process -Name excel
तो, आपको यह बताने का अवसर देता है कि आप डायनामिक नाम से एक चर कैसे निर्दिष्ट करना चाहते हैं, आप -OutVariable
पैरामीटर का उपयोग कर सकते हैं
Get-Process -Name excel -OutVariable AllRunningExcel
ध्यान दें कि यहां '$' गायब है। इन दो असाइनमेंट के बीच एक बड़ा अंतर यह है कि, यह आउटपुट को प्रिंट करने के अलावा वेरिएबल AllRunningExcel पर भी प्रिंट करता है। आप इसे किसी अन्य चर में निर्दिष्ट करने का विकल्प भी चुन सकते हैं।
$VarOne = Get-Process -Name excel -OutVariable VarTwo
हालांकि, उपरोक्त परिदृश्य बहुत दुर्लभ है, दोनों चर $ वरोएन और $ वरटोव का समान मूल्य होगा।
अब इस पर विचार करें,
Get-Process -Name EXCEL -OutVariable MSOFFICE
Get-Process -Name WINWORD -OutVariable +MSOFFICE
पहला कथन केवल एक्सेल प्रक्रिया प्राप्त करेगा और इसे MSOFFICE वैरिएबल पर असाइन करेगा, और इसके बाद MS शब्द प्रक्रिया चल रही होगी और इसे MSOFFICE के मौजूदा मान में "जोड़" देगा। यह कुछ इस तरह दिखेगा,
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
1047 54 67720 64448 618 5.70 4544 1 EXCEL
1172 70 50052 81780 584 1.83 14968 1 WINWORD
एकाधिक चर की सूची असाइनमेंट
पॉवर्सशेल वेरिएबल्स के कई असाइनमेंट की अनुमति देता है और एक सरणी या सूची की तरह लगभग सब कुछ व्यवहार करता है। इसका मतलब यह है कि इस तरह से कुछ करने के बजाय:
$input = "foo.bar.baz"
$parts = $input.Split(".")
$foo = $parts[0]
$bar = $parts[1]
$baz = $parts[2]
आप बस यह कर सकते हैं:
$foo, $bar, $baz = $input.Split(".")
चूँकि Powershell इस तरह सूचियों में असाइनमेंट्स का व्यवहार करता है, यदि सूची में आपके द्वारा असाइन किए जाने वाले चर की सूची में आइटमों की तुलना में सूची में अधिक मान हैं, तो अंतिम चर शेष मानों की एक सरणी बन जाता है। इसका मतलब है कि आप इस तरह की चीजें भी कर सकते हैं:
$foo, $leftover = $input.Split(".") #Sets $foo = "foo", $leftover = ["bar","baz"]
$bar = $leftover[0] # $bar = "bar"
$baz = $leftover[1] # $baz = "baz"
Arrays
पॉवरशेल में ऐरे का ऐलान लगभग किसी अन्य वैरिएबल को इंस्टैंट करने जैसा ही है, यानी आप $name =
वाक्य रचना का उपयोग करते हैं। सरणी में आइटम अल्पविराम ( ,
) द्वारा उन्हें अलग करके घोषित किए जाते हैं:
$myArrayOfInts = 1,2,3,4
$myArrayOfStrings = "1","2","3","4"
एक मेहराब में जोड़ना
एक सरणी में जोड़ना +
ऑपरेटर के उपयोग की तरह सरल है:
$myArrayOfInts = $myArrayOfInts + 5
//now contains 1,2,3,4 & 5!
एक साथ सरणियों का संयोजन
फिर से यह +
ऑपरेटर के उपयोग की तरह सरल है
$myArrayOfInts = 1,2,3,4
$myOtherArrayOfInts = 5,6,7
$myArrayOfInts = $myArrayOfInts + $myOtherArrayOfInts
//now 1,2,3,4,5,6,7