ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

تاریخی طور پر، یونکس سسٹمز پر کمانڈ لائن یوٹیلیٹیز ونڈوز کے مقابلے بہتر طریقے سے تیار کی گئی ہیں، لیکن ایک نئے حل کی آمد کے ساتھ، صورتحال بدل گئی ہے۔

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

پاور شیل کو ایک تشریح شدہ، کثیر تمثیل والی زبان میں اسکرپٹ کیا جا سکتا ہے جس میں کلاسک طریقہ کار، آبجیکٹ پر مبنی، اور یہاں تک کہ فنکشنل پروگرامنگ کے عناصر ہوتے ہیں: مشروط برانچنگ، لوپس، متغیرات، صفوں، ہیش ٹیبلز، کلاسز، ایرر ہینڈلنگ، نیز فنکشنز، cmdlets، اور پائپ لائنز۔ پچھلا مضمون ماحول میں کام کرنے کی بنیادی باتوں کے لیے وقف تھا، اور اب ہم اپنے قارئین کو پروگرامرز کے لیے ایک چھوٹی سی حوالہ جاتی کتاب پیش کرتے ہیں۔

فہرست کا خانہ:

تبصرے
متغیرات اور ان کی اقسام
سسٹم متغیرات
دائرہ کار
ماحولیاتی متغیرات (ماحول)
ریاضی اور موازنہ آپریٹرز
اسائنمنٹ آپریٹرز
منطقی آپریٹرز۔
مشروط چھلانگ
سائیکل
صفیں
ہیش ٹیبلز
افعال
سنبھلنے میں خرابی۔

آپ کسی بھی ٹیکسٹ ایڈیٹر میں یا مربوط ترقیاتی ماحول کا استعمال کرتے ہوئے کوڈ لکھ سکتے ہیں - سب سے آسان طریقہ یہ ہے کہ Windows PowerShell ISE جو Microsoft سرور آپریٹنگ سسٹم کے ساتھ آتا ہے۔ یہ صرف کافی پیچیدہ اسکرپٹس کے لیے ضروری ہے: کمانڈز کے مختصر سیٹوں کو انٹرایکٹو طریقے سے انجام دینا آسان ہے۔

تبصرے

مناسب انڈینٹیشن اور وائٹ اسپیس کے ساتھ کمنٹس کا استعمال اچھے پروگرامنگ اسٹائل کا حصہ سمجھا جاتا ہے۔

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

<# 

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

#>

متغیرات اور ان کی اقسام

پاور شیل میں متغیرات کو آبجیکٹ کا نام دیا گیا ہے۔ ان کے ناموں میں انڈر سکور کریکٹر کے ساتھ ساتھ حروف اور نمبر بھی شامل ہو سکتے ہیں۔ $ علامت ہمیشہ نام سے پہلے استعمال ہوتی ہے، اور متغیر کا اعلان کرنے کے لیے، مترجم کو ایک درست نام دینا کافی ہے:

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

کسی متغیر کو شروع کرنے کے لیے (اس کی قدر تفویض کریں)، اسائنمنٹ آپریٹر (علامت =) استعمال کیا جاتا ہے:

$test = 100

آپ نام یا قدر سے پہلے مربع بریکٹ (ٹائپ کاسٹنگ آپریٹر) میں اس کی قسم کی وضاحت کرکے متغیر کا اعلان کر سکتے ہیں:

[int]$test = 100

$test = [int]100

یہ سمجھنا ضروری ہے کہ پاور شیل میں متغیرات مکمل آبجیکٹ (کلاسز) ہیں جن کی خصوصیات اور طریقے ہیں جن کی اقسام .NET کور میں موجود ہیں۔ ہم اہم کی فہرست دیتے ہیں:

قسم (.NET کلاس)

تفصیل

کوڈ کی مثال

[string] System.String

یونیکوڈ سٹرنگ 

$test = "ٹیسٹ"
$test = 'ٹیسٹ'

[char]نظام۔چار

یونیکوڈ کریکٹر (16 بٹس)

[char]$test = 'c'

[bool] سسٹم۔بولین

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

[bool]$test = $true

[int] System.Int32

بتیس بٹ انٹیجر (32 بٹس)

$ٹیسٹ = 123456789

[لمبی] System.Int64

چونسٹھ بٹ انٹیجر (64 بٹس)

[long]$test = 12345678910

[سنگل] سسٹم۔سنگل

فلوٹنگ پوائنٹ نمبر 32 بٹ لمبا

[سنگل]$ٹیسٹ = 12345.6789

[ڈبل] سسٹم۔ ڈبل

فلوٹنگ پوائنٹ نمبر لمبائی 64 بٹس (8 بائٹس)

[ڈبل]$ٹیسٹ = 123456789.101112

[اعشاریہ] نظام۔ اعشاریہ

128 بٹ فلوٹنگ پوائنٹ نمبر (d کے ساتھ ختم ہونا ضروری ہے)

[اعشاریہ]$ٹیسٹ = 12345.6789d

[DateTime]سسٹم۔DateTime

تاریخ اور وقت 

$test = GetDate

[array] System.Object[]

ایک صف جس کا عنصر انڈیکس 0 سے شروع ہوتا ہے۔

$test_array = 1، 2، "ٹیسٹ"، 3، 4

[hashtable] System.collections.Hashtable

ہیش ٹیبلز نام کی کلیدوں کے ساتھ ملحقہ صفیں ہیں، جو اصول کے مطابق بنائی گئی ہیں: @{key = "value"}

$test_hashtable = @{one="one"؛ two="دو"؛ three="three"}

پاور شیل مضمر قسم کے تبادلوں کو سپورٹ کرتا ہے، اس کے علاوہ، متغیر کی قسم کو فلائی پر تبدیل کیا جا سکتا ہے (مثال کے طور پر، اسائنمنٹ آپریٹر کا استعمال کرتے ہوئے)، اگر اس کی زبردستی وضاحت نہیں کی گئی ہے - اس صورت میں، ترجمان غلطی دے گا۔ آپ GetType() طریقہ کو کال کرکے پچھلی مثال سے متغیر کی قسم کا تعین کرسکتے ہیں۔

$test.GetType().FullName

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

متغیرات میں ہیرا پھیری کے لیے متعدد cmdlets ہیں۔ ان کی فہرست ایک آسان شکل میں کمانڈ کا استعمال کرتے ہوئے ظاہر کی جاتی ہے:

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

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

اعلان شدہ متغیرات اور ان کی قدروں کو دیکھنے کے لیے، آپ ایک خاص cmdlet استعمال کر سکتے ہیں:

Get-Variable | more

یہ طریقہ حد سے زیادہ بوجھل لگتا ہے، آپریٹرز کے ذریعے متغیر کے ساتھ کام کرنا یا ان کی خصوصیات اور طریقوں تک براہ راست رسائی حاصل کرنا زیادہ آسان ہے۔ تاہم، cmdlets کو موجود رہنے کا حق ہے کیونکہ وہ آپ کو کچھ اضافی پیرامیٹرز سیٹ کرنے کی اجازت دیتے ہیں۔ یہ سمجھنا ضروری ہے کہ صارف کے متغیرات کی وضاحت صرف موجودہ سیشن میں کی گئی ہے۔ جب کنسول بند ہوجاتا ہے یا اسکرپٹ ختم ہوجاتا ہے، تو وہ حذف ہوجاتے ہیں۔

سسٹم متغیرات

صارف کے ذریعہ اعلان کردہ ان کے علاوہ، بلٹ ان (سسٹم) متغیرات ہیں جو موجودہ سیشن کے ختم ہونے کے بعد حذف نہیں ہوتے ہیں۔ انہیں دو قسموں میں تقسیم کیا گیا ہے، جب کہ پاور شیل اسٹیٹ ڈیٹا خودکار متغیرات میں محفوظ کیا جاتا ہے جنہیں خود بخود صوابدیدی اقدار تفویض نہیں کی جا سکتیں۔ ان میں شامل ہیں، مثال کے طور پر، $PWD:

$PWD.Path

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

صارف کی ترجیحات کو ذخیرہ کرنے کے لیے ترجیحی متغیرات کی ضرورت ہوتی ہے، جن کی قدروں کو تبدیل کیا جا سکتا ہے۔ مثال کے طور پر، $ErrorActionPreference استعمال کرتے ہوئے، غیر مہلک غلطیوں کی موجودگی پر کمانڈ انٹرپریٹر کا ردعمل سیٹ کیا جاتا ہے۔

اعلان شدہ متغیرات تک رسائی کے لیے آپریٹرز اور cmdlets کے علاوہ، ایک متغیر ہے: pseudo-acumulator۔ آپ دوسری ڈرائیوز کے ساتھ مشابہت کے ساتھ اس کے ساتھ کام کر سکتے ہیں، اور اس معاملے میں متغیر فائل سسٹم آبجیکٹ سے مشابہت رکھتے ہیں:

Get-ChildItem Variable: | more

یا

ls Variable: | more

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

دائرہ کار

پاور شیل میں متغیرات کے لیے دائرہ کار (Scope) کا تصور موجود ہے۔ عالمی دائرہ کار (عالمی) کی کارروائی پورے موجودہ سیشن پر لاگو ہوتی ہے - اس میں، مثال کے طور پر، سسٹم کے متغیرات شامل ہیں۔ مقامی (مقامی) متغیرات صرف اس دائرہ کار میں دستیاب ہیں جہاں ان کی تعریف کی گئی تھی: کسی فنکشن کے اندر کہیں۔ اسکرپٹ (اسکرپٹ) کے دائرہ کار کا تصور بھی ہے، لیکن اسکرپٹ کمانڈز کے لیے یہ بنیادی طور پر مقامی ہے۔ پہلے سے طے شدہ طور پر، متغیرات کا اعلان کرتے وقت، انہیں ایک مقامی دائرہ کار دیا جاتا ہے، اور اسے تبدیل کرنے کے لیے، آپ کو ایک خاص تعمیر کی ضرورت ہوتی ہے جیسے: $Global: variable = value۔

مثال کے طور پر، اس طرح:

$Global:test = 100

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

PowerShell، Env: سے ایک اور سیڈو ڈرائیو دستیاب ہے، جسے آپ ماحولیاتی متغیرات تک رسائی کے لیے استعمال کر سکتے ہیں۔ جب شیل شروع ہوتا ہے، تو وہ پیرنٹ پروسیس سے کاپی کیے جاتے ہیں (یعنی اس پروگرام سے جس نے موجودہ سیشن شروع کیا تھا) اور عام طور پر ان کی ابتدائی قدریں کنٹرول پینل میں موجود اقدار سے ملتی ہیں۔ ماحولیاتی متغیرات کو دیکھنے کے لیے، Get-ChildItem cmdlet یا اس کے عرفی نام: ls اور dir استعمال کریں۔

dir Env:

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

یہ متغیرات بائٹس (یا حروف، اگر آپ چاہیں) کی ترتیب ہیں، جس کی تشریح صرف ان کے استعمال کرنے والے پروگرام پر منحصر ہے۔ *-Variable cmdlets ماحولیاتی متغیرات کے ساتھ کام نہیں کرتے ہیں۔ ان تک رسائی کے لیے، آپ کو ڈرائیو کا سابقہ ​​استعمال کرنا ہوگا:

$env:TEST = "Hello, World!"

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

ریاضی اور موازنہ آپریٹرز

پاور شیل درج ذیل ریاضی کے آپریٹرز فراہم کرتا ہے: + (اضافہ)، - (گھواؤ)، * (ضرب)، / (تقسیم)، اور % (موڈولو یا ماڈیولو)۔ ریاضی کے اظہار کے نتیجے کا اندازہ بائیں سے دائیں تک عمل کے عام طور پر قبول کردہ ترتیب کے مطابق کیا جاتا ہے، اور قوسین کا استعمال اظہار کے حصوں کو گروپ کرنے کے لیے کیا جاتا ہے۔ آپریٹرز کے درمیان خالی جگہوں کو نظر انداز کر دیا جاتا ہے، انہیں صرف پڑھنے میں آسانی پیدا کرنے کے لیے استعمال کیا جاتا ہے۔ + آپریٹر بھی جوڑتا ہے، اور * آپریٹر تاروں کو دہراتا ہے۔ اگر آپ سٹرنگ میں نمبر شامل کرنے کی کوشش کرتے ہیں، تو یہ سٹرنگ میں تبدیل ہو جائے گی۔ اس کے علاوہ، 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)

مشروط چھلانگ

پاور شیل میں برانچ آپریٹرز معیاری ہیں: IF(IF…ELSE, IF…ELSEIF…ELSE) اور سوئچ۔ آئیے مثالوں کے ساتھ ان کے استعمال کو دیکھتے ہیں:

[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 или значение не определено"}
}

سائیکل

پاور شیل میں کئی قسم کے لوپس ہیں: WHILE، DO WHILE، DO NTIL، FOR، اور FOREACH۔

پیشگی شرط کے ساتھ ایک لوپ کام کرتا ہے اگر/جب تک یہ سچ ہے:

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

پوسٹ کنڈیشن والے لوپس کم از کم ایک بار چلیں گے، کیونکہ کنڈیشن کو تکرار کے بعد چیک کیا جاتا ہے۔ ایک ہی وقت میں، حالت درست ہونے پر DO WHILE کام کرتا ہے، اور DO UTIL کام کرتا ہے جبکہ یہ غلط ہے:

[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
}

صفیں

پاور شیل متغیرات نہ صرف ایک اشیاء (نمبر، سٹرنگ، وغیرہ) بلکہ متعدد اشیاء کو بھی محفوظ کرتے ہیں۔ اس طرح کے متغیرات کی سب سے آسان قسم 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]

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

آپریٹر۔ .. (دو نقطے - رینج آپریٹر) مخصوص اوپری اور نچلی حدود کے اندر عدد کی ایک صف لوٹاتا ہے۔ مثال کے طور پر، اظہار 1..4 چار عناصر @(1, 2, 3, 4) کی ایک صف کو نکالتا ہے، اور اظہار 8..5 ایک صف @(8, 7, 6, 5) کو آؤٹ پٹ کرتا ہے۔

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 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]

نوٹ کریں کہ عددی صف کی قدریں ڈیٹا اری کی زیادہ سے زیادہ انڈیکس ویلیو سے زیادہ ہو سکتی ہیں۔ اس صورت میں، تمام اقدار آخری تک واپس آ جاتی ہیں:

$test_array[0..100]

اگر آپ ایک غیر موجود سرنی عنصر تک رسائی حاصل کرنے کی کوشش کرتے ہیں تو، $null واپس آ جاتا ہے۔

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

پاور شیل میں، صفوں میں مختلف اقسام کے عناصر شامل ہو سکتے ہیں یا سختی سے ٹائپ کیے جا سکتے ہیں:

$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 زبان میں متغیرات کی ایک اور بنیادی قسم ہیش ٹیبلز ہیں، جنہیں associative arrays بھی کہا جاتا ہے۔ ہیش ٹیبلز JSON آبجیکٹ سے ملتے جلتے ہیں اور کلیدی قدر کی بنیاد پر بنائے گئے ہیں۔ عام صفوں کے برعکس، ان کے عناصر کو نامزد کیز کے ذریعے حاصل کیا جاتا ہے، جو آبجیکٹ کی خصوصیات ہیں (آپ انڈیکس آپریٹر - مربع بریکٹ بھی استعمال کر سکتے ہیں)۔

@ علامت اور آپریٹر بریکٹ کا استعمال کرتے ہوئے ایک خالی ہیش ٹیبل کا اعلان کیا جاتا ہے:

$test_hashtable = @{}

اعلان کرتے وقت، آپ فوری طور پر چابیاں بنا سکتے ہیں اور انہیں قدریں تفویض کر سکتے ہیں:

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

ہیش ٹیبل میں کسی عنصر کو شامل کرنے کے لیے، آپ کو ایک کلید تفویض کرنی ہوگی جو ابھی اس میں موجود نہیں ہے، یا Add () طریقہ استعمال کریں۔ اگر کسی موجودہ کلید کو تفویض کیا جاتا ہے، تو اس کی قدر بدل جائے گی۔ Remove() طریقہ ہیش ٹیبل سے کسی عنصر کو ہٹانے کے لیے استعمال کیا جاتا ہے۔

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

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

اس قسم کے متغیرات کو فنکشنز اور cmdlets کے دلائل کے طور پر منتقل کیا جا سکتا ہے - اگلے مضمون میں ہم مطالعہ کریں گے کہ یہ کیسے کیا جاتا ہے، اور اسی طرح کی ایک اور قسم - PSCustomObject پر بھی غور کریں گے۔

افعال

پاور شیل میں وہ سب کچھ ہے جس کی آپ کو طریقہ کار پروگرامنگ کے لیے درکار ہے، بشمول فنکشنز۔ ان کو بیان کرنے کے لیے، فنکشن کا لفظ فنکشن استعمال کیا جاتا ہے، جس کے بعد آپ کو فنکشن کا نام اور آپریٹر بریکٹ میں بند باڈی کی وضاحت کرنی ہوگی۔ اگر آپ کو فنکشن میں دلائل دینے کی ضرورت ہے، تو آپ قوسین میں نام کے فوراً بعد ان کی وضاحت کر سکتے ہیں۔

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

فنکشن ہمیشہ نتیجہ واپس کرتا ہے - یہ اس کے تمام بیانات کے نتائج کی ایک صف ہے، اگر ایک سے زیادہ ہوں۔ اگر صرف ایک ہی بیان ہے تو، متعلقہ قسم کی واحد قدر لوٹائی جاتی ہے۔ واپسی $value construct نتیجہ کی صف میں قدر $value کے ساتھ ایک عنصر کا اضافہ کرتا ہے اور بیان کی فہرست کے عمل کو روکتا ہے، اور خالی فنکشن $null لوٹاتا ہے۔

مثال کے طور پر، آئیے نمبر کو مربع کرنے کے لیے ایک فنکشن بنائیں:

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

نوٹ کریں کہ کسی فنکشن کے باڈی میں، آپ اسے کال کرنے سے پہلے اعلان کردہ کوئی بھی متغیر استعمال کر سکتے ہیں، اور پاور شیل میں کالنگ فنکشنز غیر معمولی معلوم ہو سکتے ہیں: دلائل (اگر کوئی ہیں) قوسین میں بند نہیں ہوتے ہیں اور خالی جگہوں سے الگ ہوتے ہیں۔

sqr 2

یا اس طرح:

sqr -number 2

دلائل کے گزرنے کے طریقے کی وجہ سے، فنکشن کو بعض اوقات قوسین میں بند کرنے کی ضرورت ہوتی ہے:

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

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

کسی فنکشن کی وضاحت کرتے وقت، آپ دلائل کو ڈیفالٹ ویلیوز تفویض کر سکتے ہیں:

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

فنکشن آرگیومینٹس کو بیان کرنے کے لیے ایک اور نحو بھی ہے، اس کے علاوہ، پائپ لائن سے پیرامیٹرز کو پڑھا جا سکتا ہے - یہ سب اگلے آرٹیکل میں کام آئے گا، جب ہم ایکسپورٹ شدہ ماڈیولز کو دیکھیں گے اور اپنے cmdlets بنائیں گے۔

سنبھلنے میں خرابی۔

پاور شیل کے پاس ایک کوشش ہے...کیچ...آخر میں ایسا طریقہ کار ہے جو آپ کو استثنائی حالات سے نمٹنے کی اجازت دیتا ہے۔ ٹرائی بلاک میں کوڈ ہوتا ہے جس میں غلطی ہو سکتی ہے، اور کیچ بلاک میں اس کا ہینڈلر ہوتا ہے۔ اگر کوئی غلطی نہیں تھی تو اس پر عمل نہیں کیا جاتا۔ فائنل بلاک کو ٹرائی بلاک کے بعد عمل میں لایا جاتا ہے، قطع نظر اس سے کہ کوئی خرابی واقع ہوئی ہے، اور مختلف قسم کے مستثنیات کے لیے کئی کیچ بلاکس ہوسکتے ہیں۔ استثناء خود ایک غیر اعلان شدہ ڈیفالٹ متغیر ($_) پر لکھا جاتا ہے اور اسے آسانی سے بازیافت کیا جاسکتا ہے۔ ذیل کی مثال میں ہم غلط قدر درج کرنے کے خلاف تحفظ کو نافذ کرتے ہیں:

try {

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

} catch {

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

}

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

یہ پاور شیل زبان میں پروگرامنگ کی بنیادی باتوں کے جائزے کو ختم کرتا ہے۔ مندرجہ ذیل مضامین میں، ہم مختلف اقسام کے متغیرات، مجموعوں، ریگولر ایکسپریشنز، فنکشنز، ماڈیولز اور حسب ضرورت cmdlets کے ساتھ ساتھ آبجیکٹ پر مبنی پروگرامنگ کے ساتھ کام کرنے کا مزید تفصیل سے مطالعہ کریں گے۔

ونڈوز پاور شیل کیا ہے اور اسے کس چیز کے ساتھ کھایا جاتا ہے؟ حصہ 2: پروگرامنگ زبان کا تعارف

ماخذ: www.habr.com

نیا تبصرہ شامل کریں