Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Keeb kwm, cov kab lus hais kom siv hauv Unix systems tau tsim zoo dua li hauv Windows, tab sis nrog rau qhov kev daws teeb meem tshiab qhov xwm txheej tau hloov pauv.

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

PowerShell tso cai rau koj los sau cov ntawv sau ua lus txhais, ntau lub ntsiab lus uas muaj cov txheej txheem ntawm cov txheej txheem classic, hom khoom siv, thiab txawm tias ua haujlwm tau zoo: ceg ntoo, voj, sib txawv, arrays, hash tables, chav kawm, kev ua yuam kev, nrog rau functions, cmdlets, thiab pipelines. Kab lus dhau los tau mob siab rau lub hauv paus ntawm kev ua haujlwm hauv ib puag ncig, thiab tam sim no peb muab peb cov neeg nyeem ib phau ntawv me me rau cov programmers.

Cov ntsiab lus:

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ
Variables thiab lawv hom
System variables
Scope
Environment variables
Arithmetic thiab Comparison Operator
Cov Neeg Ua Haujlwm
Cov neeg ua haujlwm zajlus kom
xwm yeem dhia
Kev voj voog
Arrays
Hash rooj
Zog
Tuav yuam kev

Koj tuaj yeem sau cov lej hauv cov ntawv nyeem lossis siv ib puag ncig kev txhim kho kev sib koom ua ke - txoj hauv kev yooj yim tshaj plaws yog coj Windows PowerShell ISE uas los nrog Microsoft server operating systems. Qhov no tsuas yog xav tau rau cov ntawv sau yooj yooj yim: luv luv ntawm cov lus txib yooj yim dua los ua kev sib tham sib.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Kev siv cov lus pom tau suav hais tias yog ib feem ntawm kev ua haujlwm zoo, nrog rau qhov zoo thiab qhov chaw dawb:

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

<# 

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

#>

Variables thiab lawv hom

Cov hloov pauv hauv PowerShell yog cov khoom muaj npe. Lawv cov npe yuav suav nrog cov cim hauv qab, nrog rau cov tsiaj ntawv thiab tus lej. Lub npe yeej ib txwm ua ntej los ntawm $ cim, thiab tshaj tawm qhov sib txawv, koj tsuas yog yuav tsum muab tus neeg txhais lus nrog lub npe siv tau:

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Txhawm rau pib qhov sib txawv (muab tus nqi rau nws), siv tus neeg ua haujlwm ua haujlwm (tus = cim):

$test = 100

Koj tuaj yeem tshaj tawm qhov sib txawv los ntawm kev qhia nws hom hauv square brackets (type cast operator) ua ntej lub npe lossis tus nqi:

[int]$test = 100

$test = [int]100

Nws yog ib qho tseem ceeb kom nkag siab tias cov kev hloov pauv hauv PowerShell yog cov khoom siv tag nrho (cov chav kawm) nrog cov khoom thiab cov txheej txheem, cov hom uas yog raws li nyob rau hauv .NET Core. Cia peb sau cov tseem ceeb:

Hom (.NET chav kawm)

piav qhia

Code piv txwv

[txoj hlua] System.String

Unicode kab 

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

[char]System.Char

Unicode cim (16 ntsis)

[char]$test = 'c'

[bool] System.Boolean

Hom boolean (Boolean tus nqi tseeb lossis cuav)

[bool]$test = $tau

[int]System.Int32

peb caug-ob-ntsis integer (32 ntsis)

[int]$test = 123456789

[long] System.Int64

rau caum-plaub-ntsis integer (64-ntsis)

[long]$test = 12345678910

[single]System.Single

floating point tooj 32 ntsis ntev

[ib] $test = 12345.6789

[ob npaug]System.Double

floating point tooj 64 me ntsis ntev (8 bytes)

[ob npaug]$test = 123456789.101112

[decimal] System.Decimal

floating point naj npawb 128 ntsis ntev (yuav tsum suav nrog d thaum kawg)

[decimal]$test = 12345.6789d

[DateTime] System.DateTime

hnub thiab sijhawm 

$test = Tau-Date

[array]System.Object[]

ib qho array uas nws lub ntsiab index pib ntawm 0

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

[hashtable] System.Collections.Hashtable

hash tables yog associative arrays nrog lub npe yuam sij, ua raws li lub hauv paus ntsiab lus: @{key = "value"}

$test_hashtable = @{ib="one"; ob = "ob"; three="three"}

PowerShell txhawb kev hloov pauv yam tsis raug cai, thiab hom kev hloov pauv tuaj yeem hloov pauv ntawm yoov (piv txwv li, siv tus neeg ua haujlwm ua haujlwm) tshwj tsis yog nws raug yuam, qhov twg tus neeg txhais lus yuav cuam tshuam qhov yuam kev. Koj tuaj yeem txiav txim siab hom kev sib txawv ntawm qhov piv txwv dhau los los ntawm kev hu rau GetType() txoj kev:

$test.GetType().FullName

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Muaj ntau tus lej cmdlets rau kev tswj cov hloov pauv. Ib daim ntawv teev npe ntawm lawv nyob rau hauv ib daim ntawv yooj yim yog tshwm sim siv cov lus txib:

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

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Txhawm rau saib cov ntawv tshaj tawm thiab lawv cov txiaj ntsig, koj tuaj yeem siv cmdlet tshwj xeeb:

Get-Variable | more

Txoj kev no zoo nkaus li cumbersome; nws yooj yim dua rau kev ua haujlwm nrog cov hloov pauv los ntawm cov tswv lag luam lossis los ntawm kev nkag mus rau lawv cov khoom thiab cov txheej txheem ncaj qha. Txawm li cas los xij, cmdlets muaj lawv qhov chaw vim lawv tso cai rau koj los teeb tsa qee qhov kev txwv ntxiv. Nws yog ib qho tseem ceeb kom nkag siab tias cov neeg siv hloov pauv tau txhais tsuas yog nyob rau hauv qhov kev sib kho tam sim no. Thaum lub console raug kaw lossis tsab ntawv ua tiav, lawv raug tshem tawm.

System variables

Ntxiv rau cov uas tau tshaj tawm los ntawm tus neeg siv, muaj cov kab ke ua ke (system) uas tsis raug tshem tawm tom qab qhov kev sib kho tam sim no xaus. Lawv tau muab faib ua ob hom, nrog PowerShell lub xeev cov ntaub ntawv khaws cia hauv cov hloov pauv tsis siv neeg uas tsis tuaj yeem muab cov txiaj ntsig tsis raug. Cov no suav nrog, piv txwv li, $PWD:

$PWD.Path

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Txhawm rau khaws cov neeg siv khoom nyiam, qhov kev nyiam hloov pauv yog xav tau uas nws cov txiaj ntsig tuaj yeem hloov pauv. Piv txwv li, siv $ErrorActionPreference koj tuaj yeem teeb tsa tus neeg txhais lus cov lus teb rau qhov tsis tseem ceeb.

Ntxiv rau cov neeg teb xov tooj thiab cmdlets rau kev nkag mus rau qhov hloov pauv tau tshaj tawm, muaj qhov sib txawv: pseudo-accumulator. Koj tuaj yeem ua haujlwm nrog nws los ntawm kev sib piv nrog lwm cov drives, thiab qhov sib txawv hauv qhov no zoo ib yam li cov khoom siv hauv cov ntaub ntawv:

Get-ChildItem Variable: | more

los yog

ls Variable: | more

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Scope

Cov hloov pauv hauv PowerShell muaj lub tswv yim hu ua Scope. Lub ntiaj teb no tau siv rau tag nrho cov kev sib tham tam sim no - nws suav nrog, piv txwv li, cov kev hloov pauv hauv lub cev. Cov kev hloov hauv zos tsuas yog muaj nyob rau hauv qhov uas lawv tau hais tseg: hais, hauv ib txoj haujlwm. Kuj tseem muaj lub tswv yim ntawm cov ntawv sau (Script), tab sis rau cov lus txib nws yog qhov tseem ceeb hauv zos. Los ntawm lub neej ntawd, thaum tshaj tawm cov kev hloov pauv, lawv tau muab rau hauv cheeb tsam, thiab hloov qhov no, koj xav tau kev tsim kho tshwj xeeb xws li: $ Ntiaj Teb: sib txawv = tus nqi.

Piv txwv li, zoo li no:

$Global:test = 100

Environment variables

Muaj lwm qhov pseudo-tsav muaj los ntawm PowerShell, Env:, uas koj tuaj yeem siv nkag mus rau qhov hloov pauv ib puag ncig. Thaum lub plhaub pib, lawv tau theej los ntawm cov txheej txheem niam txiv (uas yog, los ntawm qhov kev zov me nyuam uas pib qhov kev sib tham tam sim no) thiab feem ntau lawv cov nqi pib sib xws nrog cov txiaj ntsig hauv pawg tswj hwm. Txhawm rau saib qhov hloov pauv ib puag ncig, siv Get-ChildItem cmdlet lossis nws lub npe: ls thiab dir.

dir Env:

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Cov kev hloov pauv no yog cov kab ke ntawm bytes (lossis cov cim, yog tias koj nyiam), kev txhais lus ntawm qhov tsuas yog nyob ntawm qhov program siv lawv. *-Variable cmdlets nrog ib puag ncig hloov pauv tsis ua haujlwm. Txhawm rau xa mus rau lawv, koj yuav tsum siv lub disk ua ntej:

$env:TEST = "Hello, World!"

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Arithmetic thiab Comparison Operator

PowerShell muaj cov lej lej hauv qab no: + (ntxiv), - (subtraction), * (multiplication), / (division), thiab % (modulo lossis seem ntawm kev faib). Qhov tshwm sim ntawm tus lej lej yog ntsuas los ntawm sab laug mus rau sab xis raws li kev lees paub feem ntau ntawm kev ua haujlwm, thiab cov kab lus yog siv rau pawg ntawm cov lus qhia. Qhov chaw nruab nrab ntawm cov neeg ua haujlwm tsis quav ntsej thiab tsuas yog siv los ua kom yooj yim nyeem ntawv. Tus neeg teb xov tooj + kuj tseem sib txuas, thiab tus neeg teb xov tooj * rov ua cov hlua. Yog tias koj sim ntxiv tus lej rau ib txoj hlua, nws yuav hloov mus rau ib txoj hlua. Tsis tas li ntawd, PowerShell muaj ntau tus neeg ua haujlwm sib piv uas sib piv ob qhov txiaj ntsig thiab xa rov qab Boolean True lossis False:

Neeg teb xov tooj

piav qhia

Code piv txwv

-eq

Sib npaug / Sib npaug (analogous rau = lossis == hauv lwm yam lus)

$test = 100
$test -eq 123 

- yog

Tsis sib npaug / Tsis sib npaug (analogous rau <> lossis !=)

$test = 100
$test -ne 123   

-gt

Ntau tshaj / Ntau (analog>)

$test = 100
$test -gt 123

-ntuj

Ntau dua lossis sib npaug / Ntau dua lossis sib npaug (analogue>=)

$test = 100
$test -ge 123

-lt

Tsawg dua / Tsawg (analogue <)

$test = 100
$test -lt 123  

-cov

Tsawg dua lossis sib npaug / Tsawg dua lossis sib npaug (analogue <=)

$test = 100
$test -le 123

Muaj lwm tus neeg ua haujlwm zoo sib xws uas tso cai rau koj, piv txwv li, sib piv cov hlua siv cov ntawv cim lossis siv cov lus qhia tsis tu ncua kom phim tus qauv. Peb yuav saib lawv hauv kev nthuav dav hauv cov lus hauv qab no. Cov cim <,> thiab = tsis siv rau kev sib piv vim lawv siv rau lwm lub hom phiaj.

Cov Neeg Ua Haujlwm

Ntxiv rau cov neeg siv ntau tshaj =, muaj lwm tus neeg ua haujlwm ua haujlwm: +=, -=, *=, /=, thiab %=. Lawv hloov tus nqi ua ntej ua haujlwm. Cov neeg ua haujlwm tsis muaj npe ++ thiab -, uas nce lossis txo tus nqi ntawm qhov sib txawv, coj zoo ib yam - lawv kuj yog cov neeg ua haujlwm ua haujlwm.

Cov neeg ua haujlwm zajlus kom

Kev sib piv ib leeg tsis txaus los piav txog cov xwm txheej nyuaj. Koj tuaj yeem sau cov lus piav qhia uas siv cov neeg ua haujlwm: -and, -or, -xor, -not thiab !.. Lawv ua haujlwm zoo li lwm yam lus programming, tab sis koj tuaj yeem siv cov kab lus los qhia qhov kev txiav txim ntawm kev suav:

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

-not (123 -gt 321) 

!(123 -gt 321)

xwm yeem dhia

Branching operators hauv PowerShell yog tus qauv: IF(IF...ELSE, IF...ELSEIF...ELSE) thiab SWITCH. Cia peb saib lawv siv nrog piv txwv:

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

Kev voj voog

PowerShell muaj ntau hom kev voj voog: THAUM, TAM SIM NO, UA TSAUG, RAU, thiab FOREACH.

Ib lub voj nrog qhov ua ntej ua haujlwm yog / thaum nws muaj tseeb:

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

Loops nrog lub postcondition yuav khiav tsawg kawg ib zaug, vim hais tias tus mob yog kuaj tom qab iteration tiav. Hauv qhov no, TSIS TXAUS SIAB ua haujlwm thaum qhov xwm txheej muaj tseeb, thiab YUAV TSUM ua haujlwm thaum nws tsis tseeb:

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

Tus naj npawb ntawm iterations ntawm FOR voj yog paub ua ntej:

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

Hauv FOREACH voj, iterates los ntawm cov ntsiab lus ntawm ib qho array los yog sau (hash table):

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

Arrays

PowerShell variables khaws tsis tau tsuas yog ib qho khoom (ntau, hlua, thiab lwm yam), tab sis kuj muaj ntau yam. Qhov yooj yim tshaj plaws ntawm cov kev hloov pauv no yog arrays. Ib qho array tuaj yeem suav nrog ntau lub ntsiab lus, ib lub ntsiab lus, lossis yog khoob, piv txwv li. tsis muaj cov ntsiab lus. Txhawm rau tshaj tawm nws, peb siv tus neeg teb xov tooj @ () uas peb yuav xav tau hauv tsab xov xwm tom ntej - nws tseem ceeb heev rau kev ntxiv lwm cov array rau ib qho array (tsim ntau qhov arrays), hla arrays los ua haujlwm raws li kev sib cav, thiab cov haujlwm zoo sib xws:

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

Thaum pib ib qho array, nws cov txiaj ntsig tau teev tseg sib cais los ntawm commas (tus neeg ua haujlwm tshwj xeeb ,):

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

Feem ntau, tus neeg teb xov tooj @() tuaj yeem raug tshem tawm:

$test_array = 1, 2, 3, 4

Nyob rau hauv cov ntaub ntawv no, ib lub ntsiab array yog pib raws li hauv qab no

$test_array = , 1

Txhawm rau nkag mus rau cov ntsiab lus array, siv lub zero-based integer index thiab tus tswv lag luam index (square brackets):

$test_array[0] = 1

Koj tuaj yeem hais qhia ntau qhov ntsuas sib cais los ntawm commas, incl. rov ua dua:

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

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Neeg teb xov tooj .. (ob dots - ntau tus neeg teb xov tooj) rov qab ib qho array ntawm cov lej ntawm ib qho kev teev cia sab sauv thiab sab qis. Piv txwv li, qhia 1..4 outputs ib array ntawm plaub yam @(1, 2, 3, 4), thiab qhia 8..5 outputs ib array @(8, 7, 6, 5).

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Siv tus neeg teb xov tooj ntau, koj tuaj yeem pib ua ib qho array ($test_array = 1..4) lossis tau ib daim, i.e. ib ntu ntawm cov ntsiab lus ntawm ib qho array nrog indexes los ntawm lwm tus. Hauv qhov no, tus lej tsis zoo -1 qhia txog qhov kawg ntawm lub array, -2 - lub penultimate ib, thiab lwm yam.

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

Nco ntsoov tias qhov tseem ceeb ntawm ib qho integer array tuaj yeem ua tau ntau dua qhov siab tshaj qhov ntsuas tus nqi ntawm cov ntaub ntawv array. Hauv qhov no, tag nrho cov txiaj ntsig mus txog qhov kawg raug xa rov qab:

$test_array[0..100]

Yog tias koj sim nkag mus rau ib qho uas tsis muaj nyob hauv array, tus nqi $null raug xa rov qab.

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Hauv PowerShell, arrays tuaj yeem muaj cov ntsiab lus ntawm ntau hom lossis ntaus ntawv:

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

Qhov twg $test_array.count cov cuab yeej yog tus naj npawb ntawm cov ntsiab lus array.

Ib qho piv txwv ntawm kev tsim ib qho array uas muaj zog heev:

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

Hash rooj

Lwm hom kev sib txawv hauv PowerShell yog cov lus hash, tseem hu ua associative arrays. Hashtables zoo ib yam li JSON cov khoom thiab tau tsim los ntawm tus nqi tseem ceeb. Tsis zoo li cov arrays li niaj zaus, lawv cov ntsiab lus tau nkag mus siv cov yuam sij npe, uas yog cov khoom ntawm cov khoom (koj tuaj yeem siv tus neeg teb xov tooj ntsuas - square brackets).

Lub rooj khoob hash tau tshaj tawm siv lub cim @ thiab tus neeg teb xov tooj brackets:

$test_hashtable = @{}

Thaum tshaj tawm, koj tuaj yeem tsim cov yuam sij tam sim thiab muab qhov tseem ceeb rau lawv:

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

Txhawm rau ntxiv cov ntsiab lus rau lub rooj hash, koj yuav tsum muab nws tus yuam sij uas tseem tsis tau muaj los yog siv txoj kev Add() . Yog tias ib qho haujlwm tau ua rau tus yuam sij uas twb muaj lawm, nws tus nqi yuav hloov. Txhawm rau tshem tawm cov ntsiab lus ntawm lub rooj hash, siv Remove() txoj kev.

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

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Cov kev hloov pauv ntawm hom no tuaj yeem dhau los ua kev sib cav rau cov haujlwm thiab cmdlets - hauv tsab xov xwm tom ntej peb yuav kawm yuav ua li cas qhov no ua tiav, thiab tseem saib lwm hom zoo sib xws - PSCustomObject.

Zog

PowerShell muaj txhua yam koj xav tau rau cov txheej txheem txheej txheem, suav nrog cov haujlwm. Txhawm rau piav qhia lawv, lo lus pabcuam Kev Ua Haujlwm yog siv, tom qab ntawd koj yuav tsum tau qhia lub npe ntawm kev ua haujlwm thiab lub cev nyob rau hauv tus neeg teb xov tooj brackets. Yog tias koj xav tau dhau cov lus sib cav rau qhov ua haujlwm, lawv tuaj yeem teev tam sim tom qab lub npe hauv kab lus.

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

Kev ua haujlwm ib txwm rov qab qhov tshwm sim - qhov no yog ib qho ntawm cov txiaj ntsig ntawm tag nrho nws cov lus, yog tias muaj ntau tshaj ib qho. Yog tias tsuas muaj ib nqe lus xwb, ib tus nqi ntawm cov khoom sib raug yog xa rov qab. Qhov xa rov qab $ tus nqi tsim kho ntxiv ib qho khoom nrog tus nqi $ tus nqi rau cov txiaj ntsig array thiab tshem tawm kev ua tiav ntawm daim ntawv teev npe, thaum lub luag haujlwm khoob rov qab $ null.

Piv txwv li, cia peb tsim ib qho haujlwm rau squaring tus lej:

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

Nco ntsoov tias nyob rau hauv lub cev ntawm kev ua haujlwm koj tuaj yeem siv cov kev hloov pauv uas tau tshaj tawm ua ntej nws raug hu, thiab kev hu ua haujlwm hauv PowerShell yuav zoo li txawv txawv: cov lus sib cav (yog tias muaj) tsis nyob rau hauv kab lus thiab sib cais los ntawm qhov chaw.

sqr 2

los yog zoo li no:

sqr -number 2

Vim tias txoj kev sib cav dhau mus, txoj haujlwm nws tus kheej qee zaum yuav tsum tau muab kaw rau hauv kab lus:

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

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Thaum piav txog ib txoj haujlwm, koj tuaj yeem muab qhov tseem ceeb rau cov lus sib cav:

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

Kuj tseem muaj lwm cov ntsiab lus piav qhia txog cov lus sib cav, thiab cov tsis muaj peev xwm kuj tuaj yeem nyeem los ntawm cov raj xa dej - tag nrho cov no yuav los ua ke hauv tsab xov xwm tom ntej, thaum peb saib cov khoom xa tawm thiab tsim koj tus kheej cmdlets.

Tuav yuam kev

PowerShell muaj qhov sim...Catch...Thaum kawg lub tshuab uas tso cai rau koj los tswj cov xwm txheej tshwj xeeb. Lub sim thaiv muaj cov lej uas qhov yuam kev tuaj yeem tshwm sim, thiab Catch block muaj nws tus tuav. Yog tias tsis muaj qhov yuam kev, nws tsis raug tua. Qhov kawg thaiv yog raug tua tom qab sim thaiv, tsis hais seb puas muaj qhov yuam kev tshwm sim, thiab tuaj yeem muaj ob peb Catch blocks rau ntau hom kev zam. Qhov kev zam nws tus kheej tau sau rau qhov tsis lees paub qhov txawv txav ($ _) thiab tuaj yeem muab tau yooj yim. Hauv qhov piv txwv hauv qab no peb siv kev tiv thaiv kev nkag mus rau tus nqi tsis raug:

try {

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

} catch {

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

}

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Nov yog qhov uas peb yuav tsum xaus peb qhov kev tshuaj xyuas ntawm cov hauv paus ntawm kev ua haujlwm hauv PowerShell. Hauv tsab xov xwm yav tom ntej, peb yuav ua tib zoo saib ua haujlwm nrog ntau yam sib txawv, kev sau, cov lus qhia tsis tu ncua, tsim cov haujlwm, modules, thiab koj tus kheej cmdlets, nrog rau cov phiaj xwm taw qhia.

Windows PowerShell yog dab tsi thiab nws noj nrog dab tsi? Part 2: Taw qhia rau cov lus programming

Tau qhov twg los: www.hab.com

Ntxiv ib saib