Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

تاريخي طور تي، يونڪس سسٽم تي ڪمانڊ لائين افاديتون ونڊوز جي ڀيٽ ۾ بهتر ترقي يافته آهن، پر هڪ نئين حل جي اچڻ سان، صورتحال تبديل ٿي وئي آهي.

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

PowerShell هڪ تفسير ڪيل، گھڻ-پيراڊيم ٻولي ۾ اسڪرپٽ ٿي سگهي ٿو جنهن ۾ کلاسک پروسيسنگ، اعتراض تي مبني، ۽ حتي فنڪشنل پروگرامنگ جا عنصر شامل آهن: مشروط برانچنگ، لوپس، متغير، صفون، هيش ٽيبل، ڪلاس، غلطي سنڀالڻ، گڏوگڏ افعال، cmdlets، ۽ پائپ لائنون. اڳيون مضمون ماحول ۾ ڪم ڪرڻ جي بنيادي ڳالهين ڏانهن وقف ڪيو ويو، ۽ هاڻي اسان پڙهندڙن کي پروگرامرز لاء هڪ ننڍڙو گائيڊ پيش ڪندا آهيون.

جواب:

تبصرا
متغير ۽ انهن جا قسم
سسٽم متغير
اسڪوپس
ماحولياتي متغير (ماحول)
رياضي ۽ موازنہ آپريٽرز
اسائنمينٽ آپريٽرز
منطقي آپريٽر
مشروط ٽپو
سائيڪلون
صفا
هيش ٽيبل
ڪارڪن
غلطي پروسيسنگ

توهان ڪوڊ لکي سگهو ٿا ڪنهن به ٽيڪسٽ ايڊيٽر ۾ يا هڪ مربوط ڊولپمينٽ ماحول استعمال ڪندي - سڀ کان آسان طريقو آهي Windows PowerShell ISE جيڪو Microsoft سرور آپريٽنگ سسٽم سان گڏ اچي ٿو. اهو صرف انتهائي پيچيده اسڪرپٽ لاءِ ضروري آهي: حڪمن جي مختصر سيٽن تي عمل ڪرڻ آسان آهي.

تبصرا

تبصرن کي استعمال ڪرڻ سٺو پروگرامنگ انداز جو حصو سمجهيو ويندو آهي مناسب انڊينٽيشن ۽ وائيٽ اسپيس سان.

# Для строчных комментариев используется символ решетки — содержимое строки интерпретатор не обрабатывает.

<# 

       Так обозначаются начало и конец блочного комментария. 
       Заключенный между ними текст интерпретатор игнорирует.

#>

متغير ۽ انهن جا قسم

PowerShell ۾ variables نالي شيون آهن. انهن جا نالا شامل ڪري سگهن ٿا هيٺيون ڪردار، گڏوگڏ اکر ۽ انگ. $ علامت هميشه نالي کان اڳ استعمال ڪيو ويندو آهي، ۽ متغير کي بيان ڪرڻ لاء، اهو ڪافي آهي ته مترجم کي صحيح نالو ڏيو:

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

هڪ متغير کي شروع ڪرڻ لاء (ان کي هڪ قدر تفويض ڪريو)، تفويض آپريٽر (علامت =) استعمال ڪيو ويندو آهي:

$test = 100

توھان ھڪڙي متغير جو اعلان ڪري سگھوٿا ان جي قسم کي اسڪوائر بریکٹس ۾ بيان ڪندي (قسم ڪاسٽنگ آپريٽر) نالي يا قدر کان اڳ:

[int]$test = 100

$test = [int]100

اھو سمجھڻ ضروري آھي ته PowerShell ۾ متغير مڪمل شيون (ڪلاس) آھن پراپرٽيز ۽ طريقن سان جن جا قسم انھن تي ٻڌل آھن جيڪي .NET ڪور ۾ آھن. اسان بنيادي فهرست ڏيون ٿا:

قسم (.NET ڪلاس)

بيان

ڪوڊ مثال

[string] سسٽم. اسٽرنگ

يونيڪوڊ تار 

$test = "ٽيسٽ"
$test = 'ٽيسٽ'

]صفت[ نظام.چار

يونيڪوڊ ڪردار (16 بٽ)

[چار] $ test = 'c'

[بول] نظام. بُولن

بوليان قسم (بولين صحيح يا غلط)

[bool]$test = $سچو

[int] System.Int32

ٻٽيهه بٽ انٽيجر (32 بٽ)

[int]$ ٽيسٽ = 123456789

[ڊگهو] System.Int64

چوويهه بٽ انٽيجر (64 بِٽ)

[ڊگهو]$ ٽيسٽ = 12345678910

[اڪيلو] نظام، اڪيلو

سچل پوائنٽ نمبر 32 بٽ ڊگهو

[اڪيلو] $ ٽيسٽ = 12345.6789

]ڊبل] نظام، ٻيڻو

فلوٽنگ پوائنٽ نمبر ڊگھائي 64 بٽ (8 بائيٽ)

[ڊبل]$ ٽيسٽ = 123456789.101112

]اصطلاح[ نظام. ڊيسيمل

128-bit سچل پوائنٽ نمبر (گھربل ختم ٿيڻ لاءِ ڊي)

ڊيسيمل $ ٽيسٽ = 12345.6789d

[تاريخ جو وقت]سسٽم.تاريخ جو وقت

تاريخ ۽ وقت 

$test = GetDate

[array] System.Object[]

هڪ صف جنهن جو عنصر انڊيڪس 0 تي شروع ٿئي ٿو

$test_array = 1، 2، "ٽيسٽ"، 3، 4

[hashtable] System.collections.Hashtable

هيش جدولن سان لاڳاپيل صفون آهن جن کي نامزد ڪيل چابيون آهن، اصول جي مطابق ٺهيل آهن: @{key = "value"}

$test_hashtable = @{one="one"؛ ٻه = ٻه"؛ ٽي = ٽي"}

پاور شيل ضمني قسم جي تبادلي کي سپورٽ ڪري ٿو، ان کان علاوه، متغير جو قسم اڏام تي تبديل ٿي سگھي ٿو (مثال طور، اسائنمينٽ آپريٽر استعمال ڪندي)، جيڪڏھن اھو زبردستي بيان نه ڪيو ويو آھي - ھن صورت ۾، مترجم غلطي ڏيندو. توھان مقرر ڪري سگھوٿا متغير جو قسم پوئين مثال مان ڪال ڪندي GetType() طريقو:

$test.GetType().FullName

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

متغيرن کي ترتيب ڏيڻ لاءِ ڪيترائي cmdlets آهن. انهن جي فهرست هڪ آسان فارم ۾ ڏيکاريل آهي حڪم استعمال ڪندي:

Get-Command -Noun Variable | ft -Property Name, Definition -AutoSize -Wrap

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

اعلان ڪيل متغير ۽ انهن جي قيمتن کي ڏسڻ لاء، توهان استعمال ڪري سگهو ٿا هڪ خاص cmdlet:

Get-Variable | more

اهو طريقو تمام گهڻو مشڪل لڳي ٿو، اهو آپريٽرز جي ذريعي متغير سان ڪم ڪرڻ يا انهن جي ملڪيتن ۽ طريقن کي سڌو سنئون حاصل ڪرڻ کان وڌيڪ آسان آهي. تنهن هوندي، cmdlets وٽ موجود هجڻ جو حق آهي ڇو ته اهي توهان کي ڪجهه اضافي پيرا ميٽر مقرر ڪرڻ جي اجازت ڏين ٿا. اهو سمجهڻ ضروري آهي ته صارف متغير صرف موجوده سيشن ۾ بيان ڪيا ويا آهن. جڏهن ڪنسول بند ٿئي ٿو يا اسڪرپٽ ختم ٿئي ٿي، اهي ختم ٿي ويا آهن.

سسٽم متغير

ان کان علاوه جيڪي صارف پاران اعلان ڪيا ويا آهن، اتي بلٽ ان (سسٽم) متغير آهن جيڪي موجوده سيشن ختم ٿيڻ کان پوءِ ختم نه ڪيا ويا آهن. انهن کي ٻن قسمن ۾ ورهايو ويو آهي، جڏهن ته PowerShell اسٽيٽ ڊيٽا پاڻمرادو متغيرن ۾ ذخيرو ٿيل آهي جيڪي پاڻمرادو قدر مقرر نٿا ڪري سگهن. انهن ۾ شامل آهن، مثال طور، $PWD:

$PWD.Path

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

ترجيحات متغيرن جي ضرورت آھي صارف جي ترجيحن کي ذخيرو ڪرڻ لاءِ، جن جا قدر تبديل ڪري سگھجن ٿا. مثال طور، $ErrorActionPreference استعمال ڪندي، ڪمانڊ مترجم جو رد عمل غير موتمار غلطين جي واقع ٿيڻ تي مقرر ڪيو ويو آهي.

اعلان ڪيل متغيرن تائين رسائي حاصل ڪرڻ لاءِ آپريٽرز ۽ cmdlets کان علاوه، اتي ھڪڙو متغير آھي: pseudo-accumulator. توھان ان سان گڏ ڪم ڪري سگھوٿا ٻين ڊرائيو سان قياس سان، ۽ ھن صورت ۾ متغير فائل سسٽم جي شين وانگر آھن:

Get-ChildItem Variable: | more

يا

ls Variable: | more

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

اسڪوپس

PowerShell ۾ متغيرن لاءِ، گنجائش (Scope) جو تصور آهي. عالمي دائري جو عمل (گلوبل) پوري موجوده سيشن تي لاڳو ٿئي ٿو - ان ۾ شامل آھي، مثال طور، سسٽم متغير. مقامي (مقامي) متغير صرف ان دائري ۾ موجود آهن جتي انهن جي وضاحت ڪئي وئي آهي: هڪ فنڪشن اندر چئو. لکت جي دائري (اسڪرپٽ) جو تصور پڻ آهي، پر اسڪرپٽ ڪمن لاء، اهو لازمي طور تي مقامي آهي. ڊفالٽ طور، جڏهن متغير جو اعلان ڪيو وڃي، انهن کي هڪ مقامي دائرو ڏنو وڃي ٿو، ۽ ان کي تبديل ڪرڻ لاءِ، توهان کي هڪ خاص تعمير جي ضرورت آهي جهڙوڪ: $Global: variable = value.

مثال طور، هن طرح:

$Global:test = 100

ماحولياتي متغير (ماحول)

هڪ ٻي pseudo-drive، Env:، PowerShell مان دستياب آهي ۽ ماحول جي متغيرن تائين رسائي حاصل ڪرڻ لاءِ استعمال ٿي سگهي ٿي. جڏهن شيل شروع ٿئي ٿي، اهي والدين جي عمل مان نقل ڪيا ويا آهن (اهو آهي، پروگرام مان جيڪو موجوده سيشن شروع ڪيو) ۽ عام طور تي انهن جي شروعاتي قيمتون ساڳيون آهن جيئن ڪنٽرول پينل ۾ قدر. ماحولياتي تبديلين کي ڏسڻ لاءِ، استعمال ڪريو Get-ChildItem cmdlet يا ان جا عرف (عرف): ls ۽ dir.

dir Env:

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

اهي متغير بائٽس (يا اکر، جيڪڏھن توھان چاھيو) جي ترتيب آھن، جن جي تشريح صرف انھن کي استعمال ڪندي پروگرام تي منحصر آھي. *-Variable cmdlets ماحول جي متغيرن سان ڪم نه ڪندا آھن. انھن تائين رسائي حاصل ڪرڻ لاء، توھان کي استعمال ڪرڻو پوندو ڊرائيو پريفڪس:

$env:TEST = "Hello, World!"

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

رياضي ۽ موازنہ آپريٽرز

PowerShell ھيٺ ڏنل رياضياتي آپريٽرز مهيا ڪري ٿو: + (اضافو)، - (ذيلي تقسيم)، * (ضرب)، / (ڊيشن)، ۽٪ (ماڊولو يا ماڊل). هڪ رياضياتي اظهار جو نتيجو کاٻي کان ساڄي تائين عملن جي عام طور تي قبول ٿيل ترتيب جي مطابق ڪيو ويندو آهي، ۽ قوس استعمال ڪيو ويندو آهي اظهار جي گروپن جي حصن کي. آپريٽرز جي وچ ۾ خالن کي نظرانداز ڪيو ويو آهي، اهي صرف پڙهڻ لاء آسان بڻائڻ لاء استعمال ڪيا ويا آهن. + آپريٽر پڻ ڳنڍي ٿو، ۽ * آپريٽر تارن کي ورجائي ٿو. جيڪڏھن توھان ھڪڙي نمبر کي ھڪڙي تار ۾ شامل ڪرڻ جي ڪوشش ڪندا، اھو ھڪڙي تار ۾ تبديل ڪيو ويندو. ان کان علاوه، PowerShell ٻولي ۾ ڪيترائي موازن آپريٽرز آھن جيڪي ٻن قدرن جي وچ ۾ ھڪڙي ميچ جي جانچ ڪن ٿا ۽ بولن کي درست يا غلط موٽائي ٿو:

آپريٽر

بيان

ڪوڊ مثال

- eq

برابر / برابر (جهڙوڪ = يا == ٻين ٻولين ۾)

$ ٽيسٽ = 100
$ test -eq 123 

-نه

برابر نه آهي / برابر نه آهي (جي برابر <> يا !=)

$ ٽيسٽ = 100
$ test -ne 123   

-جي تي

کان وڏو / وڌيڪ (اينالاگ >)

$ ٽيسٽ = 100
$test -gt 123

-جي

کان وڏو يا برابر / کان وڏو يا برابر (جي برابر >=)

$ ٽيسٽ = 100
$test -ge 123

-lt

کان گھٽ / گھٽ (ساڳي <)

$ ٽيسٽ = 100
$test -lt 123  

-لي

کان گھٽ يا برابر / کان گھٽ يا برابر (ساڳي <=)

$ ٽيسٽ = 100
$ test -le 123

ٻيا اهڙا آپريٽرز آهن جيڪي توهان کي اجازت ڏين ٿا، مثال طور، وائلڊ ڪارڊ جي بنياد تي تارن جو مقابلو ڪرڻ يا نموني سان ملائڻ لاءِ باقاعده اظهار استعمال ڪريو. اسان مستقبل جي مضمونن ۾ ان کي تفصيل سان ڍڪيندا سين. علامتون <، > ۽ = مقابلي لاءِ استعمال نه ڪيا ويا آهن ڇاڪاڻ ته اهي ٻين مقصدن لاءِ استعمال ڪيا ويندا آهن.

اسائنمينٽ آپريٽرز

سڀ کان وڌيڪ عام = آپريٽر کان علاوه، ٻيا اسائنمينٽ آپريٽر آهن: +=، -=، *=، /= ۽ %=. اهي تفويض کان اڳ قدر تبديل ڪن ٿا. يونيري آپريٽرز ++ ۽ -، جيڪي هڪ متغير جي قيمت کي وڌائي يا گھٽائيندا آهن، ساڳيو ئي عمل ڪن ٿا - اهي پڻ اسائنمينٽ آپريٽرز تي لاڳو ٿين ٿا.

منطقي آپريٽر

پيچيده حالتن کي بيان ڪرڻ لاءِ اڪيلو مقابلو ڪافي ناهي. توهان آپريٽر استعمال ڪندي ڪي به منطقي اظهار لکي سگهو ٿا: -and, -or, -xor, -not and! .. اهي ڪم ڪن ٿا جهڙوڪ ٻين پروگرامنگ ٻولين ۾، جڏهن ته توهان تشخيص جي ترتيب کي بيان ڪرڻ لاء قوس استعمال ڪري سگهو ٿا:

("Тест" -eq "Тест") -and (100 -eq 100)

-not (123 -gt 321) 

!(123 -gt 321)

مشروط ٽپو

PowerShell ۾ برانچ آپريٽرز معياري آهن: IF(IF…ELSE، IF…ELSEIF…ELSE) ۽ SWITCH. اچو ته مثالن سان انهن جي استعمال کي ڏسو:

[int]$test = 100
if ($test -eq 100) {
      Write-Host "test = 100"
}



[int]$test = 50
if ($test -eq 100) {
       Write-Host "test = 100"
}
else {
      Write-Host "test <> 100"
}



[int]$test = 10
if ($test -eq 100) {
      Write-Host "test = 100"
}
elseif ($test -gt 100) {
      Write-Host "test > 100"
}
else {
       Write-Host "test < 100"
}



[int]$test = 5
switch ($test) {
     0 {Write-Host "test = 0"}
     1 {Write-Host "test = 1"}
     2 {Write-Host "test = 2"}
     3 {Write-Host "test = 3"}
     4 {Write-Host "test = 4"}
     5 {Write-Host "test = 5"}
     default {Write-Host "test > 5 или значение не определено"}
}

سائيڪلون

PowerShell ۾ ڪيترائي قسم جا لوپ آھن: WHILE، DO WHILE، DO NTIL، FOR، ۽ FOREACH.

هڪ لوپ هڪ شرط سان ڪم ڪري ٿو جيڪڏهن/جيستائين اهو صحيح آهي:

[int]$test = 0
while ($test -lt 10) {
      Write-Host $test
      $test = $test + 1
}

پوسٽ جي حالت سان لوپ گهٽ ۾ گهٽ هڪ ڀيرو هلندا، ڇاڪاڻ ته حالت جي چڪاس ٿيڻ کان پوء. ساڳئي وقت، DO WHILE ڪم ڪري ٿو جڏهن شرط صحيح آهي، ۽ DO جيستائين ڪم ڪري ٿو جڏهن اهو غلط آهي:

[int]$test = 0
do {
      Write-Host $test
      $test = $test + 1 
}
while ($test -lt 10)



[int]$test = 0
do {
      Write-Host $test
      $test = $test + 1 
}
until ($test -gt 9)

FOR لوپ جي تکرارن جو تعداد اڳ ۾ ڄاڻايل آهي:

for ([int]$test = 0; $test -lt 10; $test++) {
       Write-Host $test
}

FOREACH لوپ ۾، هڪ صف يا جمع (هيش ٽيبل) جي عناصر مٿان ٻيهر ورجائي ٿو:

$test_collection = "item1", "item2", "item3"
foreach ($item in $test_collection)
{
        Write-Host $item
}

صفا

PowerShell متغير صرف هڪ شيون (نمبر، اسٽرنگ، وغيره) نه اسٽور ڪن ٿا، پر ڪيترن ئي شيون پڻ. اهڙي قسم جي variables جو آسان ترين قسم arrays آهن. هڪ صف ڪيترن ئي عنصرن تي مشتمل ٿي سگهي ٿي، هڪ عنصر، يا خالي هجي، يعني. عناصر تي مشتمل ناهي. اهو @() آپريٽر استعمال ڪندي اعلان ڪيو ويو آهي، جنهن جي اسان کي ايندڙ آرٽيڪل ۾ ضرورت پوندي - اهو تمام ضروري آهي ته ٻين اررن کي هڪ صف ۾ شامل ڪرڻ لاءِ (گهڻائي عمدي صفن کي ٺاهڻ)، آريز کي هڪ دليل جي طور تي افعال ڏانهن منتقل ڪرڻ، ۽ ساڳيا ڪم:

$test_array = @() #создаем пустой массив

جڏهن هڪ صف جي شروعات ڪئي وئي آهي، ان جي قيمتن کي ڪاما (خاص آپريٽر، ):

$test_array = @(1, 2, 3, 4) # создаем массив из четырех элементов 

اڪثر ڪيسن ۾، @() آپريٽر کي ختم ڪري سگھجي ٿو:

$test_array = 1, 2, 3, 4

انهي حالت ۾، هڪ عنصر جو هڪ صف شروع ڪيو ويو آهي جيئن هيٺ ڏنل آهي

$test_array = , 1

صفن جي عناصرن تائين رسائي حاصل ڪئي وئي آھي صفر جي بنياد تي انٽيجر انڊيڪس ۽ انڊيڪس آپريٽر (مربع بریکٹ):

$test_array[0] = 1

توھان وضاحت ڪري سگھو ٿا ڪيترن ئي انڊيڪسز کي ڪاما سان الڳ ڪيو ويو، بشمول. بار بار:

$test_array = "один", "два", "три", "четыре"
$test_array[0,1,2,3]
$test_array[1,1,3,3,0]

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

آپريٽر .. (ٻه نقطا - رينج آپريٽر) بيان ڪيل مٿئين ۽ هيٺين حدن اندر انٽيجرز جي هڪ صف کي واپس ڪري ٿو. مثال طور، ايڪسپريشن 1..4 چار عنصرن جو هڪ صف ڪڍي ٿو @(1, 2, 3, 4)، ۽ ايڪسپريشن 8..5 هڪ ايري @(8, 7, 6, 5) ڪڍي ٿو.

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

رينج آپريٽر کي استعمال ڪندي، توهان هڪ صف کي شروع ڪري سگهو ٿا ($test_array = 1..4) يا هڪ سلائس (سلائس) حاصل ڪري سگهو ٿا، يعني. عنصرن جو هڪ سلسلو هڪ صف کان ٻئي جي اشارن سان. انهي حالت ۾، هڪ منفي نمبر -1 صف جي آخري عنصر کي ظاهر ڪري ٿو، -2 - آخري عنصر، ۽ انهي تي.

$test_array = "один", "два", "три", "четыре"
$test_array[0..2]
$test_array[2..0]
$test_array[-1..0]
$test_array[-2..1]

نوٽ ڪريو ته integer array Values ​​ٿي سگھي ٿو وڌ ۾ وڌ انڊيڪس قدر کان وڌيڪ ڊيٽا جي صف جي. انهي حالت ۾، سڀ قدر واپس ڪيا ويا آهن آخري هڪ تائين:

$test_array[0..100]

جيڪڏهن توهان هڪ واحد غير موجود صف جي عنصر تائين رسائي حاصل ڪرڻ جي ڪوشش ڪئي، $null واپس ڪيو ويندو.

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

PowerShell ۾، صفن ۾ مختلف قسمن جا عنصر شامل ٿي سگھن ٿا يا مضبوطيءَ سان ٽائپ ڪيا وڃن:

$test_array = 1, 2, "тест", 3, 4
for ([int]$i = 0; $i -lt $test_array.count; $i++)
{
          Write-Host $test_array[$i]
}

جتي $test_array.count ملڪيت صف عناصر جو تعداد آھي.

هڪ مضبوط ٽائپ ڪيل صف ٺاهڻ جو هڪ مثال:

[int[]]$test_array = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

هيش ٽيبل

PowerShell ٻوليءَ ۾ متغيرن جو ٻيو بنيادي قسم هيش ٽيبل آهن، جن کي ايسوسيئيٽو ايريز پڻ چيو ويندو آهي. Hashtables JSON شين سان ملندڙ جلندڙ آهن ۽ هڪ اهم قدر جي بنياد تي ٺهيل آهن. عام صفن جي برعڪس، انهن جا عنصر نامزد ڪيل چاٻين جي ذريعي پهچندا آهن، جيڪي اعتراض جا خاصيتون آهن (توهان پڻ استعمال ڪري سگهو ٿا انڊيڪس آپريٽر - چورس بریکٹ).

هڪ خالي هيش ٽيبل کي @ علامت ۽ آپريٽر بریکٹ استعمال ڪندي قرار ڏنو ويو آهي:

$test_hashtable = @{}

جڏهن اعلان ڪيو وڃي، توهان فوري طور تي چابيون ٺاهي سگهو ٿا ۽ انهن کي قدر تفويض ڪري سگهو ٿا:

$test_hashtable = @{one="один"; two="два"; three="три"; "some key"="some value"}

هيش ٽيبل ۾ هڪ عنصر شامل ڪرڻ لاءِ، توهان کي لازمي طور تي هڪ ڪنجي تفويض ڪرڻ گهرجي جيڪا اڃا تائين موجود ناهي، يا استعمال ڪريو Add () طريقو. جيڪڏهن هڪ تفويض هڪ موجوده چاٻي تي ڪيو ويو آهي، ان جي قيمت تبديل ٿي ويندي. هٽايو () طريقو استعمال ڪيو ويندو آهي هڪ عنصر کي هٽائڻ لاء هيش ٽيبل مان.

$test_hashtable."some key"
$test_hashtable["some key"]
$test_hashtable.Add("four", "четыре")
$test_hashtable.five = "пять"
$test_hashtable['five'] = "заменяем значение"
$test_hashtable.Remove("one")

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

هن قسم جا متغير فنکشنز ۽ cmdlets ڏانهن دليلن جي طور تي منظور ڪري سگھجن ٿا - ايندڙ مضمون ۾ اسين پڙهنداسين ته اهو ڪيئن ٿئي ٿو، ۽ هڪ ٻئي ساڳئي قسم تي پڻ غور ڪنداسين - PSCustomObject.

ڪارڪن

PowerShell ۾ هر شيءِ آهي جيڪا توهان کي گهربل پروگرامنگ لاءِ گهربل آهي، بشمول افعال. انھن کي بيان ڪرڻ لاءِ، فعل جو لفظ Function استعمال ڪيو ويندو آھي، جنھن کان پوءِ توھان کي فعل جو نالو ۽ آپريٽر بریکٹس ۾ بند ٿيل جسم کي بيان ڪرڻو پوندو. جيڪڏهن توهان کي فنڪشن ڏانهن دليلن کي منتقل ڪرڻ جي ضرورت آهي، توهان انهن کي فوري طور تي قوس ۾ نالو کان پوء بيان ڪري سگهو ٿا.

function имя-функции (аргумент1, ..., аргументN) 
{ 
        тело-функции 
} 

فنڪشن هميشه نتيجو ڏئي ٿو - اهو ان جي سڀني بيانن جي نتيجن جو هڪ صف آهي، جيڪڏهن هڪ کان وڌيڪ آهن. جيڪڏهن صرف هڪ بيان آهي، صرف ساڳئي قسم جي قيمت واپس ڪئي وئي آهي. واپسي $value construct هڪ عنصر شامل ڪري ٿو قدر سان $value نتيجي جي صف ۾ ۽ بيان جي فهرست جي عمل کي ختم ڪري ٿو، ۽ خالي فنڪشن واپسي $null.

مثال طور، اچو ته ھڪڙي عدد کي اسڪوائر ڪرڻ لاءِ فنڪشن ٺاھيون:

function sqr ($number)
{
      return $number * $number
}

نوٽ ڪريو ته ڪنهن فنڪشن جي باڊي ۾، توهان ان کي ڪال ڪرڻ کان اڳ بيان ڪيل ڪي به متغير استعمال ڪري سگهو ٿا، ۽ PowerShell ۾ ڪالنگ فنڪشن شايد غير معمولي لڳي سگهن ٿا: دليل (جيڪڏهن ڪو به) قوس ۾ بند ٿيل نه آهن ۽ اسپيس سان ورهايل آهن.

sqr 2

يا ته:

sqr -number 2

ڇاڪاڻ ته طريقي سان دليلن کي منظور ڪيو ويو آهي، فنڪشن پاڻ کي ڪڏهن ڪڏهن قوس ۾ بند ٿيڻ جي ضرورت آهي:

function test_func ($n) {}
test_func -eq $null     # функция не вызывалась
(test_func) -eq $null   # результат выражения — $true

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

جڏهن هڪ فنڪشن کي بيان ڪندي، توهان دليلن کي ڊفالٽ قدر تفويض ڪري سگهو ٿا:

function func ($arg = value) {
         #тело функции
}

فنڪشن جي دليلن کي بيان ڪرڻ لاء هڪ ٻيو نحو آهي، اضافي طور تي، پيٽرولر پائپ لائن مان پڙهي سگهجي ٿو - اهو سڀ ڪجهه ايندڙ مضمون ۾ ڪم ايندو، جڏهن اسان برآمد ٿيل ماڊلز کي ڏسو ۽ اسان جي پنهنجي cmdlets ٺاهي.

غلطي پروسيسنگ

PowerShell آھي ھڪ ڪوشش... پڪڙيو... آخر ۾ ميڪانيزم کي ھٿ ڪرڻ لاءِ استثنا. ڪوشش بلاڪ ۾ ڪوڊ شامل آهي جنهن ۾ هڪ غلطي ٿي سگهي ٿي، ۽ ڪيچ بلاڪ ان جي سنڀاليندڙ تي مشتمل آهي. جيڪڏهن ڪا غلطي نه هئي، اهو عمل نه ڪيو ويو آهي. آخر ۾ بلاڪ تي عمل ڪيو ويندو آهي ڪوشش بلاڪ کان پوءِ، ڪنهن غلطي جي واقع ٿيڻ کان سواءِ، ۽ مختلف قسم جي استثنان لاءِ ڪيترائي ڪيچ بلاڪ ٿي سگهن ٿا. استثنا خود هڪ اڻ اعلانيل ڊفالٽ متغير ($_) ڏانهن لکيو ويو آهي ۽ آساني سان حاصل ڪري سگهجي ٿو. هيٺ ڏنل مثال ۾، اسان هڪ غلط قدر داخل ڪرڻ جي خلاف تحفظ لاڳو ڪريون ٿا:

try {

        [int]$test = Read-Host "Введите число"
        100 / $test

} catch {

         Write-Warning "Некорректное число"
         Write-Host $_

}

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

هي پاور شيل ٻولي ۾ پروگرامنگ جي بنيادي ڳالهين جو جائزو وٺي ٿو. هيٺين مضمونن ۾، اسان وڌيڪ تفصيل سان اڀياس ڪنداسين مختلف قسمن جي متغيرن سان ڪم ڪرڻ، گڏ ڪرڻ، ريگيولر ايڪسپريشنز، ٺاھڻ جا ڪم، ماڊلز ۽ ڪسٽم cmdlets، گڏوگڏ اعتراض تي مبني پروگرامنگ.

Windows PowerShell ڇا آھي ۽ ان سان ڪھڙي شيءِ کائي ويندي آھي؟ حصو 2: پروگرامنگ ٻولي جو تعارف

جو ذريعو: www.habr.com

تبصرو شامل ڪريو