जवाबों:
PowerShell वास्तव में किसी अल्पविराम से अलग की गई सूची को एक सरणी के रूप में मानेगा:
"server1","server2"
तो @ उन मामलों में वैकल्पिक है। हालांकि, साहचर्य सरणियों के लिए, @ की आवश्यकता है:
@{"Key"="Value";"Key2"="Value2"}
आधिकारिक तौर पर, @ "सरणी ऑपरेटर" है। आप इसके बारे में और अधिक पढ़ सकते हैं, जो पॉवरशेल के साथ, या "विंडोज पॉवरशेल: टीएफएम" जैसी किताब में स्थापित है, जिसे मैंने सह-लेखक बनाया है।
PowerShell V2 में, @ भी Splat ऑपरेटर है ।
PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true
हालांकि उपरोक्त प्रतिक्रियाएं अधिकांश उत्तर प्रदान करती हैं, यह उपयोगी है - यहां तक कि इस सवाल के देर से - पूर्ण उत्तर देने के लिए, बुद्धि के लिए:
ऐरे सब-एक्सप्रेशन ( about_arrays देखें )
मूल्य एक सरणी होने के लिए मजबूर करता है, भले ही एक सिंगलटन या अशक्त, जैसे $a = @(ps | where name -like 'foo')
हैश इनिशलाइज़र ( about_hash_tables देखें )
कुंजी-मूल्य जोड़े के साथ हैश तालिका को आरम्भ करता है, जैसे
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }
Splatting (देखें about_splatting )
मान लें कि आप किसी सरणी या हैश-टेबल से मापदंडों के साथ एक cmdlet को आमंत्रित करते हैं, बजाय अधिक प्रथागत रूप से प्रगणित मापदंडों के, जैसे ऊपर दी गई हैश तालिका का उपयोग करके Copy-Item @HashArguments
यहाँ स्ट्रिंग्स ( देखें__oting_rules )
आइए आप आसानी से एम्बेडेड उद्धरणों के साथ तार बनाते हैं, आमतौर पर बहु-पंक्ति तार के लिए उपयोग किया जाता है, जैसे:
$data = @"
line one
line two
something "quoted" here
"@
क्योंकि इस प्रकार के प्रश्न ( पावरस्लाइड में 'x' संकेतन का क्या अर्थ है? ) StackOverflow पर और साथ ही कई पाठक टिप्पणियों में यहाँ आम है, मैंने एक साथ PowerShell विराम चिह्न का एक शब्दांश लगाया, जिसे सिर्फ़ Simple-GSM.com पर प्रकाशित किया गया था। सभी के बारे में पढ़ें @ साथ ही% और # और $ _ और? और PowerShell विराम चिह्न के लिए पूरी गाइड पर अधिक । लेख के लिए संलग्न यह चारदीवारी है जो आपको एक ही शीट पर सब कुछ देती है:
आप यह @()
सुनिश्चित करने के लिए कि आप क्या प्राप्त कर सकते हैं एक cmdlet (या पाइपलाइन) के आउटपुट को एक आइटम के बजाय एक सरणी में लपेट सकते हैं ।
उदाहरण के लिए, डीआईआर आमतौर पर एक सूची देता है, लेकिन विकल्पों के आधार पर, यह एक एकल वस्तु लौटा सकता है। यदि आप फ़ॉर्च-ऑब्जेक्ट के साथ परिणामों के माध्यम से पुनरावृत्ति करने की योजना बना रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि आपको एक सूची वापस मिल जाए। यहां एक उदाहरण दिया गया है:
$results = @( dir c:\autoexec.bat)
एक और बात ... एक खाली सरणी (जैसे एक वैरिएबल को इनिशियलाइज़ करना) को दर्शाया जाता है @()
।
स्प्लैटिंग ऑपरेटर
एक सरणी बनाने के लिए, हम एक चर बनाते हैं और सरणी असाइन करते हैं। Arrays को "@" प्रतीक द्वारा नोट किया जाता है। आइए ऊपर चर्चा लेते हैं और कई दूरस्थ कंप्यूटरों से जुड़ने के लिए एक सरणी का उपयोग करते हैं:
$strComputers = @("Server1", "Server2", "Server3")<enter>
वे arrays और hashes के लिए उपयोग किया जाता है।
PowerShell ट्यूटोरियल 7: डेटा को संकलित करें, याद करें और संशोधित करें