PowerShell
स्वचालित चर
खोज…
परिचय
स्वचालित चर को Windows PowerShell द्वारा बनाया और बनाए रखा जाता है। एक पुस्तक में किसी भी नाम के बारे में एक चर को कॉल करने की क्षमता है; इसका एकमात्र अपवाद वे चर हैं जो पहले से ही PowerShell द्वारा प्रबंधित किए जा रहे हैं। ये चर, बिना किसी संदेह के, कार्यों के बगल में PowerShell में आपके द्वारा उपयोग की जाने वाली सबसे दोहरावदार वस्तुएं होंगी (जैसे $? - पिछले ऑपरेशन की सफलता / विफलता की स्थिति को इंगित करता है)
वाक्य - विन्यास
-
$$
- सत्र द्वारा प्राप्त अंतिम पंक्ति में अंतिम टोकन शामिल है। -
$^
- सत्र द्वारा प्राप्त अंतिम पंक्ति में पहला टोकन शामिल है। -
$?
- अंतिम ऑपरेशन की निष्पादन स्थिति शामिल है। -
$_
- पाइपलाइन में वर्तमान वस्तु को समाहित करता है
$ पीआईडी
वर्तमान होस्टिंग प्रक्रिया की प्रक्रिया आईडी शामिल है।
PS C:\> $pid
26080
बूलियन मूल्य
$true
और $false
दो चर हैं जो तार्किक TRUE और FALSE का प्रतिनिधित्व करते हैं।
ध्यान दें कि आपको पहले अक्षर के रूप में डॉलर चिह्न निर्दिष्ट करना होगा (जो कि सी # से अलग है)।
$boolExpr = "abc".Length -eq 3 # length of "abc" is 3, hence $boolExpr will be True
if($boolExpr -eq $true){
"Length is 3"
}
# result will be "Length is 3"
$boolExpr -ne $true
#result will be False
ध्यान दें कि जब आप अपने कोड में बूलियन ट्रू / गलत का उपयोग करते हैं, तो आप $true
या $false
लिखते हैं, लेकिन जब पॉवरशेल एक बूलियन देता है, तो यह True
या False
जैसा लगता है
$ अशक्त
$null
का उपयोग अनुपस्थित या अपरिभाषित मूल्य को दर्शाने के लिए किया जाता है।
$null
को सरणियों में रिक्त मान के लिए एक खाली प्लेसहोल्डर के रूप में इस्तेमाल किया जा सकता है:
PS C:\> $array = 1, "string", $null
PS C:\> $array.Count
3
जब हम ForEach-Object
के स्रोत के समान सरणी का उपयोग करते हैं, तो यह सभी तीन आइटम ($ null सहित) संसाधित करेगा:
PS C:\> $array | ForEach-Object {"Hello"}
Hello
Hello
Hello
सावधान रहे! इसका मतलब यह है कि ForEach-Object
WILL प्रक्रिया भी $null
को अपने आप में पूरा कर ForEach-Object
:
PS C:\> $null | ForEach-Object {"Hello"} # THIS WILL DO ONE ITERATION !!!
Hello
यदि आप क्लासिक foreach
लूप से इसकी तुलना करते हैं तो यह बहुत ही अप्रत्याशित परिणाम है:
PS C:\> foreach($i in $null) {"Hello"} # THIS WILL DO NO ITERATION
PS C:\>
$ ओएफएस
आउटपुट फ़ील्ड सेपरेटर नामक वैरिएबल में स्ट्रिंग मान होता है जो किसी सरणी को स्ट्रिंग में कनवर्ट करते समय उपयोग किया जाता है। डिफ़ॉल्ट रूप से $OFS = " "
( एक स्थान ), लेकिन इसे बदला जा सकता है:
PS C:\> $array = 1,2,3
PS C:\> "$array" # default OFS will be used
1 2 3
PS C:\> $OFS = ",." # we change OFS to comma and dot
PS C:\> "$array"
1,.2,.3
$ _ / $ PSItem
वर्तमान में पाइपलाइन द्वारा संसाधित की जा रही वस्तु / वस्तु शामिल है।
PS C:\> 1..5 | % { Write-Host "The current item is $_" }
The current item is 1
The current item is 2
The current item is 3
The current item is 4
The current item is 5
$PSItem
और $_
समान हैं और परस्पर विनिमय में उपयोग किए जा सकते हैं, लेकिन $_
अब तक सबसे अधिक उपयोग किया जाता है।
$?
अंतिम ऑपरेशन की स्थिति शामिल है। जब कोई त्रुटि नहीं होती है, तो यह True
सेट होता है:
PS C:\> Write-Host "Hello"
Hello
PS C:\> $?
True
यदि कुछ त्रुटि है, तो यह False
सेट है:
PS C:\> wrt-host
wrt-host : The term 'wrt-host' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ wrt-host
+ ~~~~~~~~
+ CategoryInfo : ObjectNotFound: (wrt-host:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\> $?
False
$ त्रुटि
सबसे हाल की त्रुटि वस्तुओं की सरणी। सरणी में पहला सबसे हाल का एक है:
PS C:\> throw "Error" # resulting output will be in red font
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Error:String) [], RuntimeException
+ FullyQualifiedErrorId : Error
PS C:\> $error[0] # resulting output will be normal string (not red )
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Error:String) [], RuntimeException
+ FullyQualifiedErrorId : Error
उपयोग संकेत: एक प्रारूप cmdlet (जैसे प्रारूप-सूची) में $error
चर का उपयोग करते समय, -Force
स्विच का उपयोग करने के लिए जागरूक -Force
। अन्यथा प्रारूप cmdlet ऊपर दिखाए गए तरीके से $error
सामग्री का उत्पादन करने जा रहा है।
त्रुटि प्रविष्टियों को $Error.Remove($Error[0])
माध्यम से हटाया जा सकता है।