nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Tarixan, Unix tizimlaridagi buyruq satri yordamchi dasturlari avvalgilariga qaraganda ko'proq rivojlangan Windowsammo, yangi yechim paydo bo'lishi bilan vaziyat o'zgardi.

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

PowerShell klassik protsessual, ob'ektga yo'naltirilgan va hatto funktsional dasturlash elementlariga ega bo'lgan sharhlangan, ko'p paradigmali tilda yozilishi mumkin: shartli tarmoqlanish, tsikllar, o'zgaruvchilar, massivlar, xesh-jadvallar, sinflar, xatolarni qayta ishlash, shuningdek, funktsiyalar, cmdletlar va quvurlar. Predyushchaya statya muhitda ishlash asoslariga bag'ishlangan edi va endi biz o'quvchilarga dasturchilar uchun kichik qo'llanmani taklif qilamiz.

Oglavlenie:

Comments
O'zgaruvchilar va ularning turlari
Tizim o'zgaruvchilari
Qo'llash sohalari
Atrof-muhit o'zgaruvchilari (atrof-muhit)
Arifmetik va taqqoslash operatorlari
Belgilash operatorlari
Mantiqiy operatorlar
Shartli sakrash
Velosipedlar
Arrays
Xesh jadvallari
Xususiyatlari:
Qayta ishlashda xatolik

ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π² любом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠ»ΠΈ с использованиСм ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” ΠΏΡ€ΠΎΡ‰Π΅ всСго Π²Π·ΡΡ‚ΡŒ Windows PowerShell ISE ΠΈΠ· ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° поставки сСрвСрных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Microsoft. НуТно это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для достаточно слоТных скриптов: ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€ΠΎΡ‰Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Comments

Sharhlardan foydalanish to'g'ri chiziq va bo'sh joy bilan birga yaxshi dasturlash uslubining bir qismi hisoblanadi:

# Для строчных ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ β€” содСрТимоС строки ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚.

<# 

       Π’Π°ΠΊ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ коммСнтария. 
       Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ тСкст ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚.

#>

O'zgaruvchilar va ularning turlari

PowerShell-dagi o'zgaruvchilar nomli ob'ektlardir. Ularning nomlari pastki chiziq belgisini, shuningdek harflar va raqamlarni o'z ichiga olishi mumkin. $ belgisi har doim nomdan oldin ishlatiladi va o'zgaruvchini e'lon qilish uchun tarjimonga haqiqiy nom berish kifoya:

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

O'zgaruvchini ishga tushirish (unga qiymat berish) uchun tayinlash operatori (belgi =) ishlatiladi:

$test = 100

Siz oΚ»zgaruvchini nomi yoki qiymatidan oldin uning turini kvadrat qavs ichida (turi quyish operatori) belgilash orqali eΚΌlon qilishingiz mumkin:

[int]$test = 100

$test = [int]100

PowerShell-dagi o'zgaruvchilar .NET Core-dagilarga asoslangan xususiyatlar va usullarga ega to'liq huquqli ob'ektlar (sinflar) ekanligini tushunish muhimdir. Biz asosiylarini sanab o'tamiz:

Turi (.NET sinfi)

Tavsif

Kod misoli

[string]
System.String

Unicode qator 

$test = "test"
$test = 'test'

[char]
System.Char

Unicode belgisi (16 bit)

[char]$test = β€˜c’

[bool]
System.Boolean

mantiqiy turi (mantiqiy to'g'ri yoki noto'g'ri)

[bool]$test = $true

[int]
System.Int32

o'ttiz ikki bitli tamsayΔ± (32 bit)

[int]$test = 123456789

[long]
System.Int64

oltmish to'rt bitli tamsayΔ± (64 bit)

[long]$test = 12345678910

[single]
System.Single

suzuvchi nuqta raqami 32 bit uzunlikda

[single]$test = 12345.6789

[double]
System.Double

suzuvchi nuqta uzunligi 64 bit (8 bayt)

[double]$test = 123456789.101112

[decimal]
System.Decimal

128-bitli suzuvchi nuqta raqami (d bilan tugashi kerak)

[decimal]$test = 12345.6789d

[DateTime]
System.DateTime

sana va vaqt 

$test = GetDate

[array]
System.Object[]

element indeksi 0 dan boshlanadigan massiv

$test_massiv = 1, 2, "test", 3, 4

[hashtable]
System.Collections.Hashtable

xesh-jadvallar - bu quyidagi printsipga muvofiq tuzilgan kalitlarga ega assotsiativ massivlar: @{key = "qiymat"}

$test_hashtable = @{one="bir"; ikki = "ikki"; uch = "uch"}

PowerShell yashirin turdagi konvertatsiya qilishni qo'llab-quvvatlaydi, bundan tashqari, o'zgaruvchining turini tezda o'zgartirish mumkin (masalan, tayinlash operatori yordamida), agar u majburiy ko'rsatilmagan bo'lsa - bu holda tarjimon xato qiladi. Oldingi misoldagi o'zgaruvchining turini GetType() usulini chaqirish orqali aniqlashingiz mumkin:

$test.GetType().FullName

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

O'zgaruvchilarni manipulyatsiya qilish uchun bir qator cmdletlar mavjud. Ularning ro'yxati qulay shaklda buyruq yordamida ko'rsatiladi:

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

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

E'lon qilingan o'zgaruvchilar va ularning qiymatlarini ko'rish uchun siz maxsus cmdletdan foydalanishingiz mumkin:

Get-Variable | more

Bu usul haddan tashqari mashaqqatli ko'rinadi, operatorlar orqali yoki ularning xossalari va usullariga bevosita kirish orqali o'zgaruvchilar bilan ishlash ancha qulayroqdir. Biroq, cmdletlar mavjud bo'lish huquqiga ega, chunki ular ba'zi qo'shimcha parametrlarni o'rnatishga imkon beradi. Foydalanuvchi o'zgaruvchilari faqat joriy seans ichida aniqlanishini tushunish muhimdir. Konsol yopilganda yoki skript tugagach, ular o'chiriladi.

Tizim o'zgaruvchilari

Foydalanuvchi tomonidan e'lon qilinganlarga qo'shimcha ravishda, joriy sessiya tugaganidan keyin o'chirilmaydigan o'rnatilgan (tizim) o'zgaruvchilar mavjud. Ular ikki turga bo'linadi, PowerShell holati ma'lumotlari avtomatik o'zgaruvchilarda saqlanadi, ularga o'zboshimchalik bilan qiymatlarni belgilash mumkin emas. Bularga, masalan, $PWD kiradi:

$PWD.Path

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Afzallik o'zgaruvchilari foydalanuvchi imtiyozlarini saqlash uchun kerak bo'lib, ularning qiymatlari o'zgartirilishi mumkin. Misol uchun, $ErrorActionPreference dan foydalanib, buyruq tarjimonining halokatli bo'lmagan xatolar yuzaga kelishiga munosabati o'rnatiladi.

E'lon qilingan o'zgaruvchilarga kirish uchun operatorlar va cmdletlardan tashqari, o'zgaruvchi mavjud: pseudo-akkumulyator. Siz u bilan boshqa drayvlar bilan o'xshashlik bilan ishlashingiz mumkin va bu holda o'zgaruvchilar fayl tizimi ob'ektlariga o'xshaydi:

Get-ChildItem Variable: | more

yoki

ls Variable: | more

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Qo'llash sohalari

PowerShell'dagi o'zgaruvchilar uchun qamrov (Scope) tushunchasi mavjud. Global miqyosning harakati (Global) butun joriy sessiya uchun amal qiladi - u, masalan, tizim o'zgaruvchilarini o'z ichiga oladi. Mahalliy (mahalliy) o'zgaruvchilar faqat ular aniqlangan doirada mavjud: funksiya ichida ayting. Skript (skript) doirasi tushunchasi ham mavjud, ammo skript buyruqlari uchun u asosan mahalliydir. Odatiy bo'lib, o'zgaruvchilarni e'lon qilishda ularga mahalliy qamrov beriladi va buni o'zgartirish uchun sizga maxsus konstruktsiya kerak bo'ladi, masalan: $Global: o'zgaruvchi = qiymat.

Masalan, bu kabi:

$Global:test = 100

Atrof-muhit o'zgaruvchilari (atrof-muhit)

Boshqa psevdo-disk Env: PowerShell-dan mavjud va u muhit o'zgaruvchilariga kirish uchun ishlatilishi mumkin. Qobiq ishga tushganda, ular asosiy jarayondan (ya'ni joriy seansni boshlagan dasturdan) ko'chiriladi va odatda ularning boshlang'ich qiymatlari boshqaruv panelidagi qiymatlar bilan bir xil bo'ladi. Muhit o'zgaruvchilarini ko'rish uchun Get-ChildItem cmdletidan yoki uning taxalluslaridan (taxalluslaridan) foydalaning: ls va dir.

dir Env:

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Bu o'zgaruvchilar baytlar (yoki agar xohlasangiz, belgilar) ketma-ketligi bo'lib, ularning talqini faqat ulardan foydalanadigan dasturga bog'liq. *-Variable cmdletlari muhit o'zgaruvchilari bilan ishlamaydi. Ularga kirish uchun siz haydovchi prefiksidan foydalanishingiz kerak:

$env:TEST = "Hello, World!"

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Arifmetik va taqqoslash operatorlari

PowerShell quyidagi arifmetik operatorlarni taqdim etadi: + (qo'shish), - (ayirish), * (ko'paytirish), / (bo'lish) va % (modul yoki modul). Arifmetik ifodaning natijasi amallarning umumiy qabul qilingan tartibiga muvofiq chapdan oβ€˜ngga qarab baholanadi va ifoda qismlarini guruhlash uchun qavslardan foydalaniladi. Operatorlar orasidagi bo'shliqlar e'tiborga olinmaydi, ular faqat tushunish qulayligi uchun ishlatiladi. + operatori ham birlashtiradi, * operatori esa satrlarni takrorlaydi. Agar siz satrga raqam qo'shishga harakat qilsangiz, u satrga aylantiriladi. Bundan tashqari, PowerShell-da ikkita qiymat o'rtasidagi moslikni sinab ko'radigan va mantiqiy "True" yoki "False" qiymatini qaytaradigan ko'plab taqqoslash operatorlari mavjud:

Operator

Tavsif

Kod misoli

-eq

Teng / Teng (boshqa tillarda = yoki == ga o'xshash)

$test = 100
$test -ekv 123 

- bu

Teng emas / Teng emas (<> yoki != ga o'xshash)

$test = 100
$test -ne 123   

-gt

Kattaroq / Ko'proq (analog>)

$test = 100
$test -gt 123

-yosh

Kattaroq yoki teng / Kattaroq yoki teng (>= ga o'xshash)

$test = 100
$test -ge 123

-lt

Kamroq / Kamroq (<ga o'xshash)

$test = 100
$test -lt 123  

-

Kichik yoki teng / Kichik yoki teng (<= ga o'xshash)

$test = 100
$test -le 123

Boshqa shunga o'xshash operatorlar mavjud bo'lib, ular, masalan, joker belgiga asoslangan satrlarni solishtirish yoki naqshga mos kelish uchun oddiy iboralarni ishlatish imkonini beradi. Ularni keyingi maqolalarda batafsil yoritamiz. <, > va = belgilari taqqoslash uchun ishlatilmaydi, chunki ular boshqa maqsadlarda ishlatiladi.

Belgilash operatorlari

Eng keng tarqalgan = operatoridan tashqari, boshqa tayinlash operatorlari ham mavjud: +=, -=, *=, /= va %=. Ular tayinlashdan oldin qiymatni o'zgartiradilar. O'zgaruvchining qiymatini oshiruvchi yoki kamaytiruvchi ++ va - unar operatorlari xuddi shunday harakat qiladi - ular tayinlash operatorlariga ham tegishli.

Mantiqiy operatorlar

Murakkab sharoitlarni tavsiflash uchun faqat taqqoslashning o'zi etarli emas. Siz har qanday mantiqiy ifodalarni operatorlar yordamida yozishingiz mumkin: -and, -or, -xor, -not and! .. Ular boshqa dasturlash tillaridagi kabi ishlaydi, shu bilan birga siz baholash tartibini belgilash uchun qavslardan foydalanishingiz mumkin:

("ВСст" -eq "ВСст") -and (100 -eq 100)

-not (123 -gt 321) 

!(123 -gt 321)

Shartli sakrash

PowerShell-dagi filial operatorlari standartdir: IF(IF...ELSE, IF...ELSEIF...ELSE) va SWITCH. Keling, ulardan foydalanishni misollar bilan ko'rib chiqaylik:

[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 ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ"}
}

Velosipedlar

PowerShell-da bir necha turdagi tsikllar mavjud: WHILE, DO WHILE, DO UNTIL, FOR va FOREACH.

Old shartga ega bo'lgan tsikl, agar u to'g'ri bo'lsa, ishlaydi:

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

Postshartli tsikllar kamida bir marta ishlaydi, chunki shart takrorlashdan keyin tekshiriladi. Shu bilan birga, DO WHILE shart rost bo'lganda ishlaydi va DO UNTIL noto'g'ri bo'lganda ishlaydi:

[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 siklining iteratsiyalar soni oldindan ma'lum:

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

FOREACH siklida massiv yoki toβ€˜plam elementlarini takrorlaydi (xesh jadvali):

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

Arrays

PowerShell o'zgaruvchilari nafaqat bitta ob'ektni (raqam, satr va boshqalar), balki bir nechta ob'ektlarni ham saqlaydi. Bunday o'zgaruvchilarning eng oddiy turi massivlardir. Massiv bir nechta elementlardan, bitta elementdan iborat bo'lishi yoki bo'sh bo'lishi mumkin, ya'ni. elementlarni o'z ichiga olmaydi. U @() operatori yordamida e'lon qilinadi, bu bizga keyingi maqolada kerak bo'ladi - massivga boshqa massivlarni qo'shish (ko'p o'lchovli massivlarni yaratish), massivlarni argument sifatida funktsiyalarga o'tkazish va shunga o'xshash vazifalar uchun juda muhimdir:

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

Massiv ishga tushirilganda uning qiymatlari vergul bilan ajratiladi (maxsus operator ,):

$test_array = @(1, 2, 3, 4) # создаСм массив ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… элСмСнтов 

Ko'pgina hollarda @() operatori o'tkazib yuborilishi mumkin:

$test_array = 1, 2, 3, 4

Bu holda bitta elementdan iborat massiv quyidagicha inisializatsiya qilinadi

$test_array = , 1

Massiv elementlariga kirish nolga asoslangan butun son indeksi va indeks operatori (kvadrat qavs) yordamida amalga oshiriladi:

$test_array[0] = 1

Vergul bilan ajratilgan bir nechta indekslarni belgilashingiz mumkin, jumladan. takrorlanuvchi:

$test_array = "ΠΎΠ΄ΠΈΠ½", "Π΄Π²Π°", "Ρ‚Ρ€ΠΈ", "Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅"
$test_array[0,1,2,3]
$test_array[1,1,3,3,0]

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Operator .. (ikki nuqta - diapazon operatori) belgilangan yuqori va pastki chegaralar ichida butun sonlar qatorini qaytaradi. Masalan, 1..4 ifoda toβ€˜rt elementli @(1, 2, 3, 4) massivni, 8..5 ifodasi esa @(8, 7, 6, 5) massivni chiqaradi.

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Diapazon operatoridan foydalanib, siz massivni ishga tushirishingiz mumkin ($test_array = 1..4) yoki tilim (bo'lak) olishingiz mumkin, ya'ni. bir massivning boshqasi indekslari bilan elementlar ketma-ketligi. Bunday holda, salbiy raqam -1 massivning oxirgi elementini, -2 - oxirgidan oldingi elementni va hokazo.

$test_array = "ΠΎΠ΄ΠΈΠ½", "Π΄Π²Π°", "Ρ‚Ρ€ΠΈ", "Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅"
$test_array[0..2]
$test_array[2..0]
$test_array[-1..0]
$test_array[-2..1]

Esda tutingki, butun qator qiymatlari ma'lumotlar massivining maksimal indeks qiymatidan katta bo'lishi mumkin. Bunday holda, barcha qiymatlar oxirgisiga qaytariladi:

$test_array[0..100]

Agar bitta mavjud bo'lmagan massiv elementiga kirishga harakat qilsangiz, $null qaytariladi.

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

PowerShell-da massivlar har xil turdagi elementlarni o'z ichiga olishi yoki kuchli tarzda yozilishi mumkin:

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

Bu yerda $test_array.count xossasi massiv elementlari soni.

Kuchli yozilgan massivni yaratishga misol:

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

Xesh jadvallari

PowerShell tilidagi o'zgaruvchilarning yana bir asosiy turi bu assotsiativ massivlar sifatida ham tanilgan xesh-jadvallardir. Hashtablelar JSON obyektlariga o'xshaydi va kalit-qiymat asosida qurilgan. Oddiy massivlardan farqli o'laroq, ularning elementlariga ob'ektning xossalari bo'lgan nomli kalitlar orqali kirish mumkin (siz indeks operatoridan ham foydalanish mumkin - kvadrat qavslar).

Bo'sh xesh-jadval @ belgisi va operator qavslari yordamida e'lon qilinadi:

$test_hashtable = @{}

Deklaratsiya qilishda siz darhol kalitlarni yaratishingiz va ularga qiymatlarni belgilashingiz mumkin:

$test_hashtable = @{one="ΠΎΠ΄ΠΈΠ½"; two="Π΄Π²Π°"; three="Ρ‚Ρ€ΠΈ"; "some key"="some value"}

Xesh-jadvalga element qo'shish uchun siz unga hali mavjud bo'lmagan kalitni belgilashingiz yoki Add () usulidan foydalanishingiz kerak. Agar mavjud kalitga topshiriq berilsa, uning qiymati o'zgaradi. Remove() usuli xesh-jadvaldan elementni olib tashlash uchun ishlatiladi.

$test_hashtable."some key"
$test_hashtable["some key"]
$test_hashtable.Add("four", "Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅")
$test_hashtable.five = "ΠΏΡΡ‚ΡŒ"
$test_hashtable['five'] = "замСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅"
$test_hashtable.Remove("one")

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Ushbu turdagi o'zgaruvchilar funktsiyalar va cmdletlarga argument sifatida berilishi mumkin - keyingi maqolada biz bu qanday amalga oshirilishini o'rganamiz, shuningdek, shunga o'xshash boshqa turdagi - PSCustomObject ni ko'rib chiqamiz.

Xususiyatlari:

PowerShell protsessual dasturlash uchun kerak bo'lgan hamma narsaga, jumladan funktsiyalarga ega. Ularni tavsiflash uchun Function funktsiya so'zi qo'llaniladi, undan so'ng operator qavslari ichiga olingan funktsiya nomini va tanasini ko'rsatish kerak. Agar siz funktsiyaga argumentlarni yuborishingiz kerak bo'lsa, ularni darhol qavs ichidagi nomdan keyin ko'rsatishingiz mumkin.

function имя-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚1, ..., Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚N) 
{ 
        Ρ‚Π΅Π»ΠΎ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 
} 

Funktsiya har doim natijani qaytaradi - agar bir nechta bo'lsa, bu uning barcha bayonotlari natijalarining massivi. Agar faqat bitta bayonot bo'lsa, tegishli turdagi yagona qiymat qaytariladi. Qaytish $value konstruktsiyasi natija massiviga $value qiymatiga ega elementni qo'shadi va bayonotlar ro'yxatining bajarilishini to'xtatadi va bo'sh funksiya $null qiymatini qaytaradi.

Masalan, sonni kvadratga solish funksiyasini yaratamiz:

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

E'tibor bering, funktsiyaning tanasida siz uni chaqirishdan oldin e'lon qilingan har qanday o'zgaruvchilardan foydalanishingiz mumkin va PowerShell-da funksiyalarni chaqirish g'ayrioddiy ko'rinishi mumkin: argumentlar (agar mavjud bo'lsa) qavslar ichiga olinmaydi va bo'shliqlar bilan ajratiladi.

sqr 2

yoki shunga o'xshash:

sqr -number 2

Argumentlarni uzatish usuli tufayli funktsiyaning o'zi ba'zan qavs ichiga olinishi kerak:

function test_func ($n) {}
test_func -eq $null     # функция Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»Π°ΡΡŒ
(test_func) -eq $null   # Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния β€” $true

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Funktsiyani tavsiflashda siz argumentlarga standart qiymatlarni belgilashingiz mumkin:

function func ($arg = value) {
         #Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
}

Funktsiya argumentlarini tavsiflash uchun yana bir sintaksis mavjud, bunga qo'shimcha ravishda parametrlarni quvur liniyasidan o'qish mumkin - bularning barchasi keyingi maqolada, eksport qilingan modullarni ko'rib chiqishda va o'z cmdletlarimizni yaratishda foydali bo'ladi.

Qayta ishlashda xatolik

PowerShell-da istisnolarni boshqarish uchun Try...Catch...Nihoyat mexanizmi mavjud. Try blokida xatolik yuzaga kelishi mumkin bo'lgan kod, Catch blokida esa uning ishlov beruvchisi mavjud. Agar xato bo'lmasa, u bajarilmaydi. Finally bloki Try blokidan keyin, xatolik yuzaga kelishidan qat'iy nazar bajariladi va har xil turdagi istisnolar uchun bir nechta Catch bloklari bo'lishi mumkin. Istisnoning o'zi e'lon qilinmagan standart o'zgaruvchiga ($_) yoziladi va uni osongina olish mumkin. Quyidagi misolda biz noto'g'ri qiymat kiritishdan himoya qilamiz:

try {

        [int]$test = Read-Host "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число"
        100 / $test

} catch {

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

}

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Bu PowerShell tilida dasturlash asoslarini ko'rib chiqishni yakunlaydi. Keyingi maqolalarda biz har xil turdagi o'zgaruvchilar, to'plamlar, muntazam ifodalar bilan ishlash, funktsiyalar, modullar va moslashtirilgan cmdletlarni yaratish, shuningdek, ob'ektga yo'naltirilgan dasturlashni batafsil o'rganamiz.

nima Windows PowerShell va u bilan nima iste'mol qilish kerak? 2-qism: Dasturlash tiliga kirish

Manba: www.habr.com

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling πŸ”₯ DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster