apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Sacara historis, utilitas baris perintah ing sistem Unix luwih maju tinimbang ing WindowsNanging, kanthi anane solusi anyar, kahanane owah.

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

PowerShell ngijini sampeyan nulis skrip ing basa multi-paradigma sing diinterpretasikake sing nduweni unsur prosedural klasik, berorientasi obyek, lan malah program fungsional: percabangan 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
Lingkup visibilitas
Variabel lingkungan
Operator aritmetika lan perbandingan
Operator tugas
Operator logika
Langsung kondisional
Siklus
Susunan
Tabel hash
Fungsi
Kasalahan pangolahan

Sampeyan bisa nulis kode ing editor teks apa wae utawa nggunakake lingkungan pangembangan terintegrasi - cara paling gampang yaiku njupuk Windows PowerShell ISE, sing digabungake karo sistem operasi server Microsoft. Iki mung perlu kanggo skrip sing cukup rumit: set printah cendhak luwih gampang dieksekusi kanthi interaktif.

komentar

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

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

<# 

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

#>

Variabel lan jinise

Variabel ing PowerShell diarani obyek. Jeneng kasebut bisa kalebu garis ngisor, uga huruf lan angka. Jeneng kasebut tansah didhisiki simbol $, lan kanggo mratelakake variabel, sampeyan mung kudu menehi jeneng sing bener marang juru:

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Kanggo miwiti variabel (menehi nilai), operator penugasan (simbol =) digunakake:

$test = 100

Sampeyan bisa ngumumake variabel kanthi nemtokake jinise ing tanda kurung (operator jinis casting) 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, jinise adhedhasar sing ana ing .NET Core. Ayo dhaptar sing utama:

Tipe (kelas .NET)

Description

Tuladha kode

[senar]
Sistem.String

String Unicode 

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

[karakter]
Karakter Sistem

Karakter Unicode (16 bit)

[char]$test = 'c'

[bool]
Sistem.Boolean

jinis boolean (nilai logis True or False)

[bool]$test = $true

[int]
Sistem.Int32

telung puluh loro-bit integer (32 bit)

[int]$test = 123456789

[dawa]
Sistem.Int64

sewidak papat-bit integer (64 bit)

[long]$test = 12345678910

[tunggal]
Sistem.Tunggal

Nomer floating point 32-bit

[siji]$test = 12345.6789

[dobel]
Sistem.Dobel

Nomer floating point 64-bit (8-byte).

[pindho]$test = 123456789.101112

[desimal]
Sistem.Desimal

Nomer floating point 128-bit (mbutuhake d ing pungkasan)

[desimal]$test = 12345.6789d

[TanggalWektu]
Sistem.TanggalWektu

tanggal lan wektu 

$test = Get-Date

[susunan]
Sistem.Objek[]

array sing indeks unsur diwiwiti saka 0

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

[tabel hash]
Koleksi.Sistem.Hashtable.

tabel hash minangka susunan asosiatif kanthi tombol sing dijenengi, dibangun miturut prinsip: @{key = "nilai"}

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

PowerShell ndhukung konversi jinis implisit, lan jinis variabel bisa diganti kanthi cepet (contone, nggunakake operator penugasan) yen ora ditemtokake kanthi paksa - ing kasus iki, juru bakal ngasilake kesalahan. Sampeyan bisa nemtokake jinis variabel saka conto sadurunge kanthi nelpon metode GetType():

$test.GetType().FullName

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka 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 Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

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

Get-Variable | more

Cara iki katon banget rumit; luwih trep kanggo nggarap variabel liwat operator utawa kanthi ngakses properti lan cara langsung. Nanging, cmdlet duwe hak kanggo ana, amarga ngidini sampeyan nyetel sawetara paramèter tambahan. Penting kanggo mangerteni yen variabel pangguna ditetepake mung ing sesi saiki. Sawise nutup console utawa ngrampungake script, 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 Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Variabel preferensi dibutuhake kanggo nyimpen setelan pangguna, nilai sing bisa diganti. Contone, $ErrorActionPreference digunakake kanggo nyetel reaksi interpreter printah kanggo kasalahan non-kritis.

Saliyane operator lan cmdlet kanggo ngakses variabel sing diumumake, ana Variabel pseudo-drive:. Sampeyan bisa nggarap kanthi cara sing padha 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 Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Lingkup visibilitas

Ana konsep ruang lingkup kanggo variabel ing PowerShell. 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 script, nanging kanggo printah script iku ateges lokal. Kanthi gawan, nalika variabel ngumumaké, padha diutus orane katrangan lokal, lan kanggo ngganti iki, sampeyan kudu construction khusus saka wangun: $ Global: variabel = Nilai.

Contone, kaya iki:

$Global:test = 100

Variabel lingkungan

Driver pseudo liyane, Env:, kasedhiya saka PowerShell, sing ngidini sampeyan ngakses variabel lingkungan. Nalika cangkang diwiwiti, disalin saka proses induk (yaiku, saka program sing miwiti sesi saiki) lan biasane nilai awal padha karo nilai ing panel kontrol. Kanggo ndeleng variabel lingkungan, gunakake cmdlet Get-ChildItem utawa alias: ls lan dir.

dir Env:

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Variabel kasebut minangka urutan bita (utawa karakter, yen sampeyan seneng) sing interpretasi gumantung saka program sing digunakake. Cmdlet *-Variabel ora bisa digunakake karo variabel lingkungan. Kanggo ngakses, sampeyan kudu nggunakake awalan drive:

$env:TEST = "Hello, World!"

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Operator aritmetika lan perbandingan

PowerShell nduweni operator aritmatika ing ngisor iki: + (tambahan), - (pengurangan), * (perkalian), / (divisi), lan % (modulus, utawa sisa). Asil ekspresi aritmatika dievaluasi saka kiwa menyang tengen miturut urutan operasi konvensional, lan kurung digunakake kanggo ngelompokake bagean saka ekspresi kasebut. Spasi ing antarane operator ora digatekake lan mung digunakake kanggo maca. Operator + uga nggabungake, lan operator * mbaleni senar. Yen sampeyan nyoba kanggo nambah nomer kanggo senar, iku bakal diowahi kanggo senar. PowerShell uga duwe macem-macem operator perbandingan sing mbandhingake rong nilai lan ngasilake True utawa False logis:

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 / Большое (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 (analog <=)

$test = 100
$test -le 123

Ana operator liyane padha sing ngidini, contone, mbandhingaké strings njupuk menyang akun karakter wildcard utawa nggunakake ekspresi biasa kanggo nelusuri match pola. Kita bakal nimbang 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; padha uga dadi operator assignment.

Operator logika

Kanggo njlèntrèhaké kahanan rumit, comparison mung ora cukup. Ekspresi logis bisa ditulis nganggo operator: -lan, -utawa, -xor, -ora lan!.

("Тест" -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

Ana sawetara jinis puteran ing PowerShell: WHILE, DO WHILE, DO UNTIL, FOR, lan FOREACH.

Daur ulang kanthi prasyarat bisa digunakake yen / nalika prasyarat bener:

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

Loops karo postcondition bakal bisa 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
}

The FOREACH loop iterates 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, yaiku ora ana unsur. Kanggo ngumumake, operator @() digunakake, sing bakal dibutuhake ing artikel sabanjure - penting banget kanggo nambah array liyane menyang array (nggawe array multidimensi), ngliwati array menyang fungsi minangka argumen, lan tugas sing padha:

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

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

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

Umume kasus, operator @() bisa diilangi:

$test_array = 1, 2, 3, 4

Ing kasus iki, array saka siji unsur 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 sing mbaleni:

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

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

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

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Nggunakake operator kisaran, sampeyan bisa miwiti array ($test_array = 1..4) utawa entuk irisan, yaiku urutan unsur saka siji array kanthi indeks saka liyane. Ing kasus iki, angka negatif -1 nuduhake unsur pungkasan saka array, -2 - penultimate, etc.

$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 tunggal sing ora ana ing array, nilai $ null bali.

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka 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 ing Uploaded.

Conto nggawe array sing diketik banget:

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

Tabel hash

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

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 menyang tabel hash, sampeyan kudu nemtokake tombol sing durung ana utawa nggunakake Add () cara. Yen tugas digawe nganggo 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 Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

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

Fungsi

PowerShell nduweni kabeh unsur sing dibutuhake kanggo program prosedural, kalebu fungsi. Kanggo njlèntrèhaké, gunakake tembung layanan Fungsi, banjur jeneng fungsi lan awak sing ana 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, yaiku array saka asil kabeh statement yen ana luwih saka siji. Yen mung ana siji statement, nilai siji saka jinis cocog bali. Wangun $value bali nambahake unsur kanthi nilai $nilai menyang array asil lan mungkasi eksekusi dhaptar statement, lan fungsi kosong ngasilake $ null.

Minangka conto, ayo nggawe fungsi kanggo kuadrat nomer:

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

Elinga yen sampeyan bisa nggunakake variabel apa wae sing diumumake sadurunge nelpon fungsi kasebut ing awak fungsi, lan fungsi nelpon ing PowerShell bisa uga katon ora biasa: argumen (yen ana) ora diapit ing kurung lan dipisahake dening 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 Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka 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 bisa diwaca saka pipa - kabeh iki bakal migunani ing artikel sabanjure, nalika ndeleng modul sing diekspor lan nggawe cmdlet dhewe.

Kasalahan pangolahan

PowerShell duwe mekanisme Coba…Catch…Pungkasane sing ngidini sampeyan nangani kahanan sing luar biasa. Blok Coba ngemot kode sing bisa nyebabake kesalahan, 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 pangecualian saka macem-macem jinis. Pangecualian kasebut dhewe ditulis ing variabel standar ($_) sing ora mbutuhake deklarasi 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 Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Iki mungkasi diskusi kita babagan dhasar pemrograman ing PowerShell. Ing artikel ing ngisor iki, kita bakal nliti babagan nggarap variabel saka macem-macem jinis, koleksi, ekspresi reguler, nggawe fungsi, modul, lan cmdlet khusus, uga pemrograman berorientasi obyek.

apa Windows PowerShell lan Apa sing Kudu Dipangan karo PowerShell? Bagean 2: Pambuka Basa Pemrograman

Source: www.habr.com

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster