खोज…


परिचय

वेरिएबल्स का उपयोग मूल्यों को संग्रहीत करने के लिए किया जाता है। मान किसी भी प्रकार का हो, हमें इसे कहीं स्टोर करने की आवश्यकता है ताकि हम इसे कंसोल / स्क्रिप्ट में उपयोग कर सकें। 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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow