Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Sacara historis, utilitas baris perintah ing sistem Unix luwih dikembangake tinimbang ing Windows, nanging kanthi anane solusi anyar, kahanan kasebut wis owah.

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

PowerShell ngidini sampeyan nulis skrip ing basa multi-paradigma sing diinterpretasikake sing ngemot unsur-unsur prosedural klasik, berorientasi obyek, lan uga program fungsional: cabang kondisional, loop, variabel, array, tabel hash, kelas, penanganan kesalahan, uga fungsi, cmdlet, lan pipa. Artikel sadurunge iki pengabdian kanggo dhasar makarya ing lingkungan, lan saiki kita kurban maca buku referensi cilik kanggo programer.

Gamelan:

komentar
Variabel lan jinise
Variabel sistem
Cakupan
Variabel lingkungan
Operator aritmetika lan perbandingan
Operator Tugas
Operator logis
Langsung kondisional
Siklus
Susunan
Tabel hash
Fungsi
Kasalahan pangolahan

Sampeyan bisa nulis kode ing editor teks apa wae utawa nggunakake lingkungan pangembangan terpadu - cara paling gampang yaiku njupuk Windows PowerShell ISE sing dilengkapi sistem operasi server Microsoft. Iki mung dibutuhake kanggo skrip sing cukup rumit: prentah sing cendhak luwih gampang dieksekusi kanthi interaktif.

komentar

Panggunaan komentar dianggep minangka bagéan saka gaya pemrograman sing apik, bebarengan karo indentasi lan spasi putih sing tepat:

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

<# 

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

#>

Variabel lan jinise

Variabel ing PowerShell diarani obyek. Jeneng kasebut bisa kalebu karakter garis ngisor, uga huruf lan angka. Simbol $ tansah digunakake sadurunge jeneng, lan kanggo mratelakake variabel, iku cukup kanggo menehi interpreter jeneng bener:

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Kanggo miwiti variabel (nemtokake nilai kasebut), gunakake operator penugasan (simbol =):

$test = 100

Sampeyan bisa ngumumake variabel kanthi nuduhake jinise ing kurung kotak (jenis operator cast) sadurunge jeneng utawa nilai:

[int]$test = 100

$test = [int]100

Penting kanggo mangerteni yen variabel ing PowerShell minangka obyek lengkap (kelas) kanthi sifat lan metode sing jinis adhedhasar ing .NET Core. Ayo dhaptar sing utama:

Tipe (kelas .NET)

Description

Tuladha kode

[string] System.String

String Unicode 

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

[char]System.Char

Karakter Unicode (16 bit)

[char]$test = 'c'

[bool] System.Boolean

jinis boolean (Nilai Boolean True utawa False)

[bool]$test = $true

[int] Sistem.Int32

telung puluh loro-bit integer (32 bit)

[int]$test = 123456789

[long] System.Int64

sewidak papat-bit integer (64 bit)

[long]$test = 12345678910

[single] System.Single

floating point angka 32 bit

[siji]$test = 12345.6789

[double]Sistem.Double

angka floating point dawane 64 bit (8 byte)

[pindho]$test = 123456789.101112

[desimal] Sistem.Desimal

Nomer floating point 128-bit (dibutuhake kanggo mungkasi d)

[desimal]$test = 12345.6789d

[DateTime] System.DateTime

tanggal lan wektu 

$test = GetDate

[array]System.Object[]

array sing indeks unsur diwiwiti ing 0

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

[hashtable] System.Collections.Hashtable

tabel hash minangka array asosiatif kanthi jeneng tombol, dibangun miturut prinsip: @{key = "nilai"}

$test_hashtable = @{one="siji"; loro = "loro"; telu = "telu"}

PowerShell ndhukung konversi jinis implisit, lan jinis variabel bisa diganti on the fly (contone, nggunakake operator assignment) kajaba dipeksa, ing kasus iki juru bakal uncalan kesalahan. Sampeyan bisa nemtokake jinis variabel saka conto sadurunge kanthi nelpon metode GetType():

$test.GetType().FullName

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Ana sawetara cmdlet kanggo ngatur variabel. Dhaptar kasebut ing wangun sing trep ditampilake kanthi nggunakake printah:

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

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Kanggo ndeleng variabel sing diumumake lan nilai, sampeyan bisa nggunakake cmdlet khusus:

Get-Variable | more

Cara iki katon rumit banget; luwih trep kanggo nggarap variabel liwat operator utawa kanthi langsung ngakses properti lan metode kasebut. Nanging, cmdlet duwe panggonan amarga ngidini sampeyan nyetel sawetara paramèter tambahan. Penting kanggo mangerteni yen variabel pangguna ditetepake mung ing sesi saiki. Nalika console ditutup utawa script ends, padha dibusak.

Variabel sistem

Saliyane sing diumumake dening pangguna, ana variabel dibangun (sistem) sing ora dibusak sawise sesi saiki rampung. Iki dipérang dadi rong jinis, kanthi data negara PowerShell sing disimpen ing variabel otomatis sing ora bisa diwenehi nilai sewenang-wenang. Iki kalebu, contone, $PWD:

$PWD.Path

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Kanggo nyimpen preferensi pangguna, variabel preferensi dibutuhake sing nilai bisa diganti. Contone, nggunakake $ErrorActionPreference sampeyan bisa nyetel reaksi interpreter printah kanggo kasalahan non-kritis.

Saliyane operator lan cmdlet kanggo ngakses variabel sing diumumake, ana Variabel: pseudo-accumulator. Sampeyan bisa nggarap kanthi analogi karo drive liyane, lan variabel ing kasus iki meh padha karo obyek sistem file:

Get-ChildItem Variable: | more

utawa

ls Variable: | more

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Cakupan

Variabel ing PowerShell duwe konsep sing diarani Scope. Ruang lingkup global ditrapake kanggo kabeh sesi saiki - kalebu, contone, variabel sistem. Variabel lokal mung kasedhiya ing orane katrangan ngendi padha ditetepake: ngomong, nang fungsi. Ana uga konsep ruang lingkup skrip (Script), nanging kanggo printah skrip iku ateges lokal. Kanthi gawan, nalika mratelakake variabel, padha diwenehi orane katrangan lokal, lan kanggo ngganti iki, sampeyan kudu construction khusus kaya: $ Global: variabel = nilai.

Contone, kaya iki:

$Global:test = 100

Variabel lingkungan

Ana pseudo-drive liyane sing kasedhiya saka PowerShell, Env:, sing bisa digunakake kanggo ngakses variabel lingkungan. Nalika cangkang diwiwiti, disalin saka proses induk (yaiku, saka program sing miwiti sesi saiki) lan biasane nilai awale cocog karo nilai ing panel kontrol. Kanggo ndeleng variabel lingkungan, gunakake cmdlet Get-ChildItem utawa alias: ls lan dir.

dir Env:

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Variabel kasebut minangka urutan bita (utawa karakter, yen sampeyan seneng), interpretasi mung gumantung ing program sing digunakake. *-Cmdlet variabel karo variabel lingkungan ora bisa digunakake. Kanggo ngrujuk, sampeyan kudu nggunakake prefiks disk:

$env:TEST = "Hello, World!"

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Operator aritmetika lan perbandingan

PowerShell nyedhiyakake operator aritmatika ing ngisor iki: + (tambahan), - (pengurangan), * (multiply), / (divisi), lan % (modulo utawa modulo). Asil saka ekspresi aritmetika dievaluasi saka kiwa menyang tengen miturut urutan operasi sing ditampa umum, lan kurung digunakake kanggo ngelompokake bagean saka ekspresi kasebut. Spasi antarane operator ora digatèkaké, padha digunakake mung kanggo wis luwih gampang kanggo maca. Operator + uga nggabungake, lan operator * mbaleni senar. Yen sampeyan nyoba kanggo nambah nomer kanggo senar, iku bakal diowahi kanggo senar. Kajaba iku, basa PowerShell duwe akeh operator perbandingan sing mriksa kecocokan antarane rong nilai lan ngasilake boolean True utawa False:

Operator

Description

Tuladha kode

-eq

Equal / Equal (analog karo = utawa == ing basa liya)

$test = 100
$test -eq 123 

- punika

Ora padha / Ora padha (analog karo <> utawa !=)

$test = 100
$test -ne 123   

-gt

Luwih saka / Luwih (analog >)

$test = 100
$test -gt 123

-ge

Luwih saka utawa padha / Luwih saka utawa padha (analog >=)

$test = 100
$test -ge 123

-lt

Kurang saka / Kurang (analog <)

$test = 100
$test -lt 123  

-sing

Kurang saka utawa padha / Kurang saka utawa padha (padha karo <=)

$test = 100
$test -le 123

Ana operator liyane padha sing ngijini sampeyan kanggo, contone, mbandhingaké strings nggunakake wildcards utawa nggunakake ekspresi biasa kanggo cocog pola. Kita bakal nliti kanthi rinci ing artikel ing ngisor iki. Simbol <, > lan = ora digunakake kanggo mbandhingake amarga digunakake kanggo tujuan liyane.

Operator Tugas

Saliyane operator paling umum =, ana operator penugasan liyane: +=, -=, *=, /=, lan %=. Padha ngganti nilai sadurunge assignment. Operator unary ++ lan -, sing nambah utawa nyuda nilai variabel, tumindak sing padha - uga dadi operator penugasan.

Operator logis

Bandhingan mung ora cukup kanggo njlèntrèhaké kahanan rumit. Sampeyan bisa nulis ekspresi logis apa wae nggunakake operator: -lan, -utawa, -xor, -ora lan!.. Padha bisa digunakake kaya ing basa program liyane, nanging sampeyan bisa nggunakake kurung kanggo nemtokake urutan pitungan:

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

-not (123 -gt 321) 

!(123 -gt 321)

Langsung kondisional

Operator cabang ing PowerShell standar: IF(IF…ELSE, IF…ELSEIF…ELSE) lan SWITCH. Ayo goleki panggunaane kanthi conto:

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

Siklus

PowerShell duwe sawetara jinis loop: WHILE, DO WHILE, DO UNTIL, FOR, lan FOREACH.

A loop karo prasyarat mlaku yen / nalika iku bener:

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

Loops karo postcondition bakal mbukak ing paling sapisan, amarga kondisi wis dicenthang sawise iterasi rampung. Ing kasus iki, DO WHILE dianggo nalika kondisi bener, lan DO UNTIL dianggo nalika iku salah:

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

Jumlah iterasi saka loop FOR dikenal luwih dhisik:

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

Ing daur ulang FOREACH, iterasi liwat unsur array utawa koleksi (tabel hash):

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

Susunan

Variabel PowerShell ora mung nyimpen obyek siji (nomer, string, lsp), nanging uga akeh obyek. Jinis paling gampang saka variabel kasebut yaiku array. Array bisa dumadi saka sawetara unsur, siji unsur, utawa kosong, i.e. ora ngemot unsur. Kanggo ngumumake, kita nggunakake operator @(), sing bakal dibutuhake ing artikel sabanjure - penting banget kanggo nambah array liyane menyang array (nggawe array multidimensi), ngirim array menyang fungsi minangka argumen, lan tugas sing padha:

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

Nalika nginisialisasi array, nilai-nilai kasebut kadhaptar kanthi dipisahake karo koma (operator khusus ,):

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

Umume kasus, operator @() bisa diilangi:

$test_array = 1, 2, 3, 4

Ing kasus iki, array unsur siji diinisialisasi kaya ing ngisor iki

$test_array = , 1

Kanggo ngakses elemen array, gunakake indeks integer basis nol lan operator indeks (kurung persegi):

$test_array[0] = 1

Sampeyan bisa nemtokake sawetara indeks sing dipisahake karo koma, kalebu. mbaleni:

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

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Operator .. (loro titik - operator jangkoan) ngasilake array integer ing wates ndhuwur lan ngisor sing ditemtokake. Contone, ekspresi 1..4 ngasilake array saka papat unsur @(1, 2, 3, 4), lan ekspresi 8..5 ngasilake array @(8, 7, 6, 5).

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Nggunakake operator sawetara, sampeyan bisa miwiti array ($ test_array = 1..4) utawa entuk irisan (irisan), i.e. urutan unsur siji larik karo indeks saka liyane. Ing kasus iki, nomer negatif -1 nuduhake unsur pungkasan saka Uploaded, -2 - penultimate, lan ing.

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

Elinga yen nilai array integer bisa luwih gedhe tinimbang nilai indeks maksimum array data. Ing kasus iki, kabeh nilai nganti pungkasan bakal bali:

$test_array[0..100]

Yen sampeyan nyoba ngakses unsur array sing ora ana, $ null bali.

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Ing PowerShell, array bisa ngemot unsur saka macem-macem jinis utawa diketik banget:

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

Where $ test_array.count property nomer unsur Uploaded.

Conto nggawe array sing diketik banget:

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

Tabel hash

Jinis dhasar variabel liyane ing basa PowerShell yaiku tabel hash, uga dikenal minangka array asosiatif. Hashtables padha karo obyek JSON lan dibangun kanthi basis nilai kunci. Boten kados susunan biasa, unsur-unsuripun dipunakses kanthi tombol ingkang dipunsebat, inggih punika sifat-sifat obyek (sampeyan uga bisa nggunakake operator indeks - kurung kurung).

Tabel hash kosong diumumake nggunakake simbol @ lan kurung operator:

$test_hashtable = @{}

Nalika ngumumake, sampeyan bisa langsung nggawe kunci lan nemtokake nilai kasebut:

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

Kanggo nambah unsur kanggo tabel hash, sampeyan kudu nemtokake tombol sing durung ana utawa nggunakake Add () cara. Yen tugas digawe menyang kunci sing wis ana, regane bakal diganti. Kanggo mbusak unsur saka tabel hash, nggunakake Copot () cara.

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

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Variabel saka jinis iki bisa diterusake minangka argumen kanggo fungsi lan cmdlet - ing artikel sabanjure kita bakal sinau carane iki rampung, lan uga ndeleng jinis liyane sing padha - PSCustomObject.

Fungsi

PowerShell duwe kabeh sing dibutuhake kanggo program prosedural, kalebu fungsi. Kanggo njlèntrèhaké wong-wong mau, tembung fungsi Fungsi digunakake, sawise sampeyan kudu nemtokake jeneng fungsi lan awak sing dilampirake ing kurung operator. Yen sampeyan kudu ngirim argumen menyang fungsi kasebut, sampeyan bisa nemtokake langsung sawise jeneng ing kurung.

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

Fungsi kasebut tansah ngasilake asil - iki minangka susunan asil kabeh statement, yen ana luwih saka siji. Yen mung ana siji statement, nilai siji saka jinis cocog bali. Konstruksi $value bali nambahake unsur kanthi nilai $nilai menyang array asil lan mbatalake eksekusi dhaptar statement, nalika fungsi kosong ngasilake $ null.

Contone, ayo nggawe fungsi kanggo kuadrat nomer:

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

Elinga yen ing awak fungsi, sampeyan bisa nggunakake variabel apa wae sing diumumake sadurunge nelpon, lan fungsi nelpon ing PowerShell bisa uga katon ora biasa: argumen (yen ana) ora dikurung ing kurung lan dipisahake spasi.

sqr 2

utawa supaya:

sqr -number 2

Amarga cara argumen diterusake, fungsi kasebut kadhangkala kudu dilampirake ing kurung:

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

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Nalika njlentrehake fungsi, sampeyan bisa nemtokake nilai standar kanggo argumen:

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

Ana uga sintaks liyane kanggo njlentrehake argumen fungsi, lan paramèter uga bisa diwaca saka pipa - kabeh iki bakal migunani ing artikel sabanjure, nalika kita ndeleng modul ngekspor lan nggawe cmdlet dhewe.

Kasalahan pangolahan

PowerShell duwe mekanisme Coba ... Nyekel ... Akhire sing ngidini sampeyan nangani kahanan sing ora dikarepake. Blok Coba ngemot kode sing bisa kedadeyan, lan blok Catch ngemot panangane. Yen ora ana kesalahan, ora dieksekusi. Pamblokiran Akhire dileksanakake sawise pamblokiran Coba, preduli saka apa ana kesalahan, lan ana bisa sawetara pamblokiran Catch kanggo macem-macem jinis pangecualian. Pangecualian kasebut dhewe ditulis ing variabel standar sing ora dideklarasi ($_) lan bisa gampang dijupuk. Ing conto ing ngisor iki, kita ngetrapake proteksi supaya ora nglebokake nilai sing salah:

try {

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

} catch {

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

}

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Ing kene kita kudu mungkasi review babagan dhasar pemrograman ing PowerShell. Ing artikel ing ngisor iki, kita bakal sinau kanthi luwih rinci nggarap variabel saka macem-macem jinis, koleksi, ekspresi reguler, nggawe fungsi, modul lan cmdlet khusus, uga pemrograman berorientasi obyek.

Apa Windows PowerShell lan kanggo apa? Part 2: Pambuka kanggo Basa Pemrograman

Source: www.habr.com

Add a comment