Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Unix-систСмах Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Ρ‡Π΅ΠΌ Π² Windows, ΠΎΠ΄Π½Π°ΠΊΠΎ с появлСниСм Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ситуация измСнилась.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Для PowerShell ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарии Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½ΠΎΠΌ языкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ элСмСнты классичСского ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Π΄Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования: условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Ρ†ΠΈΠΊΠ»Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, массивы, Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, классы, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° посвящСна основам Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² срСдС, Π° сСйчас ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ вниманию Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ нСбольшой справочник для программистов.

ОглавлСниС:

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡ… Ρ‚ΠΈΠΏΡ‹
БистСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния (срСды)
АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания
ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹
Условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄
Π¦ΠΈΠΊΠ»Ρ‹
ΠœΠ°ΡΡΠΈΠ²Ρ‹
Π₯эш-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

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

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

ИспользованиС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ стиля программирования наряду с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ отступами ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ:

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

<# 

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

#>

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡ… Ρ‚ΠΈΠΏΡ‹

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² PowerShell β€” это ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π˜Ρ… названия ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ символ подчСркивания, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠΊΠ²Ρ‹ ΠΈ числа. ΠŸΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ $, Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ допустимоС имя:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (присвоСния Π΅ΠΉ значСния) примСняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания (символ =):

$test = 100

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π΅ Ρ‚ΠΈΠΏΠ° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ привСдСния Ρ‚ΠΈΠΏΠΎΠ²) ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ:

[int]$test = 100

$test = [int]100

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² PowerShell β€” это ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (классы) со свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основаны Π½Π° ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² .NET Core. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС:

Вип (класс .NET)

ОписаниС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°

[string] System.String

строка UnicodeΒ 

$test = «тСст»
$test = ‘тСст’

[char] System.Char

символ Unicode (16 Π±ΠΈΡ‚)

[char]$test = ‘c’

[bool] System.Boolean

булСвский Ρ‚ΠΈΠΏ (логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ΠΈΠ»ΠΈ False)

[bool]$test = $true

[int] System.Int32

тридцатидвухразрядноС Ρ†Π΅Π»ΠΎΠ΅ число (32 Π±ΠΈΡ‚Π°)

[int]$test = 123456789

[long] System.Int64

ΡˆΠ΅ΡΡ‚ΠΈΠ΄Π΅ΡΡΡ‚ΠΈΡ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число (64 Π±ΠΈΡ‚Π°)

[long]$test = 12345678910

[single] System.Single

число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ длиною Π² 32 Π±ΠΈΡ‚Π°

[single]$test = 12345.6789

[double] System.Double

число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ длиною Π² 64 Π±ΠΈΡ‚Π° (8 Π±Π°ΠΉΡ‚)

[double]$test = 123456789.101112

[decimal] System.Decimal

число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ длиною Π² 128 Π±ΠΈΡ‚ (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ d Π½Π° ΠΊΠΎΠ½Ρ†Π΅)

[decimal]$test = 12345.6789d

[DateTime] System.DateTime

Π΄Π°Ρ‚Π° ΠΈ врСмя 

$test = Get-Date

[array] System.Object[]

массив, индСкс элСмСнтов ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся с 0

$test_array = 1, 2, «тСст», 3, 4

[hashtable] System.Collections.Hashtable

Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ β€” ассоциативныС массивы с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, построСнныС ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ: @{ΠΊΠ»ΡŽΡ‡ = Β«Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β»}

$test_hashtable = @{one=Β«ΠΎΠ΄ΠΈΠ½Β»; two=Β«Π΄Π²Π°Β»; three=Β«Ρ‚Ρ€ΠΈΒ»}

PowerShell ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π° Ρ…ΠΎΠ΄Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания), Ссли ΠΎΠ½ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ β€” Π² этом случаС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° GetType():

$test.GetType().FullName

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

БущСствуСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΎΠ² для управлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π˜Ρ… список Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ выводится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Для просмотра ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚:

Get-Variable | more

Π’Π°ΠΊΠΎΠΉ способ каТСтся Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΈΡ… свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π° сущСствованиС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса. ПослС закрытия консоли ΠΈΠ»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сцСнария ΠΎΠ½ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ.

БистСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Помимо ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ встроСнныС (систСмныС) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса. ДСлятся ΠΎΠ½ΠΈ Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°, ΠΏΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ состоянии PowerShell хранятся Π² автоматичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ нСльзя ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ значСния. К ΠΈΡ… числу относится, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, $PWD:

$PWD.Path

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Для хранСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $ErrorActionPreference задаСтся рСакция ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ нСкритичСских ошибок.

Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°ΠΌ для обращСния ΠΊ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ сущСствуСт ΠΏΡΠ΅Π²Π΄ΠΎΠ½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ Variable:. Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ накопитСлями, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² этом случаС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы:

Get-ChildItem Variable: | more

ΠΈΠ»ΠΈ

ls Variable: | more

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости

Для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² PowerShell сущСствуСт понятиС области видимости (Scope). ДСйствиС глобальной области (Global) распространяСтся Π½Π° вСсь Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ сСанс β€” Π² Π½Π΅Π΅ входят, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, систСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ (Local) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² области, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹: скаТСм Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ понятиС области дСйствия сцСнария (Script), Π½ΠΎ для ΠΊΠΎΠΌΠ°Π½Π΄ скрипта ΠΎΠ½Π° ΠΏΠΎ сути являСтся локальной. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌ задаСтся локальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ конструкция Π²ΠΈΠ΄Π°: $Global: пСрСмСнная = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

НапримСр, Ρ‚Π°ΠΊ:

$Global:test = 100

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния (срСды)

Из PowerShell доступСн Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ Env:, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ срСды. ΠŸΡ€ΠΈ запускС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса (Ρ‚.Π΅. ΠΈΠ· ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠ΅ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ сСанс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ со значСниями Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Для просмотра ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Get-ChildItem ΠΈΠ»ΠΈ Π΅Π³ΠΎ псСвдонимы (алиасы): ls ΠΈ dir.

dir Env:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ² (ΠΈΠ»ΠΈ символов, Ссли ΡƒΠ³ΠΎΠ΄Π½ΠΎ), интСрпрСтация ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Ρ‹ *-Variable с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ срСды Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ, придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфикс диска:

$env:TEST = "Hello, World!"

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния

Π’ PowerShell Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹: + (слоТСниС), β€” (Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅), * (ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅), / (Π΄Π΅Π»Π΅Π½ΠΈΠ΅) ΠΈ % (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ остаток ΠΎΡ‚ дСлСния). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ арифмСтичСского выраТСния вычисляСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π² соотвСтствии с общСпринятым порядком ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ частСй выраТСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для облСгчСния восприятия. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ + Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * повторяСт строки. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ число ΠΊ строкС ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² строку. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² языкС PowerShell Π΅ΡΡ‚ΡŒ мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя значСниями ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ логичСскиС True ΠΈΠ»ΠΈ False:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

ОписаниС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°

-eq

Equal / Π Π°Π²Π½ΠΎ (Π°Π½Π°Π»ΠΎΠ³ = ΠΈΠ»ΠΈ == Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках)

$test = 100
$test -eq 123Β 

-ne

Not equal / НС Ρ€Π°Π²Π½ΠΎ (Π°Π½Π°Π»ΠΎΠ³ <> ΠΈΠ»ΠΈ !=)

$test = 100
$test -ne 123Β Β Β 

-gt

Greater than / Π‘ΠΎΠ»ΡŒΡˆΠ΅ (Π°Π½Π°Π»ΠΎΠ³ >)

$test = 100
$test -gt 123

-ge

Greater than or equal / Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (Π°Π½Π°Π»ΠΎΠ³ >=)

$test = 100
$test -ge 123

-lt

Less than / МСньшС (аналог <)

$test = 100
$test -lt 123Β Β 

-le

Less than or equal / МСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (Π°Π½Π°Π»ΠΎΠ³ <=)

$test = 100
$test -le 123

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ строки с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ символа подстановки ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярныС выраТСния для поиска соотвСтствия ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ. Π˜Ρ… ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ <, > ΠΈ = для сравнСния Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ задСйствованы для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания

Помимо самого распространСнного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° = ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания: +=, -=, *=, /= ΠΈ %=. Они ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ присвоСниСм. Аналогично Π²Π΅Π΄ΡƒΡ‚ сСбя ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ++ ΠΈ —, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ относятся ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ присваивания.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Для описания слоТных условий ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сравнСния нСдостаточно. Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ логичСскиС выраТСния ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: -and, -or, -xor, -not ΠΈ!.. Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ порядок вычислСния:

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

-not (123 -gt 321) 

!(123 -gt 321)

Условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вСтвлСния Π² PowerShell стандартныС: IF(IF…ELSE, IF…ELSEIF…ELSE) ΠΈ SWITCH. Рассмотрим ΠΈΡ… использованиС Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…:

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

Π¦ΠΈΠΊΠ»Ρ‹

Π’ языкС PowerShell Π΅ΡΡ‚ΡŒ нСсколько разновидностСй Ρ†ΠΈΠΊΠ»ΠΎΠ²: WHILE, DO WHILE, DO UNTIL, FOR ΠΈ FOREACH.

Π¦ΠΈΠΊΠ» с прСдусловиСм Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли/ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ выполняСтся:

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

Π¦ΠΈΠΊΠ»Ρ‹ с постусловиСм ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия производится послС выполнСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом DO WHILE Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΠΊΠ° условиС истинно, Π° DO UNTIL β€” ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ:

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

ΠœΠ°ΡΡΠΈΠ²Ρ‹

Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… PowerShell хранятся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (число, строка ΠΈ Ρ‚.Π΄.), Π½ΠΎ ΠΈ мноТСствСнныС. Бамая простая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… β€” массивы. Массив ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов, ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ пустым, Ρ‚.Π΅. Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнтов. Для Π΅Π³ΠΎ объявлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ @(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ понадобится Π½Π°ΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ β€” ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ΅Π½ для добавлСния Π² массив Π΄Ρ€ΡƒΠ³ΠΈΡ… массивов (создания ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов), ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ массивов Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡:

$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]

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ .. (Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 1..4 Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ массив ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… элСмСнтов @(1, 2, 3, 4), Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 8..5 β€” массив @(8, 7, 6, 5).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ($test_array = 1..4) ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ срСз (slice), Ρ‚.Π΅. ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива с индСксами ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ΠŸΡ€ΠΈ этом ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число -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.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Π’ PowerShell массивы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ:

$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 β€” Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ассоциативными массивами. Hashtable ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° JSON object ΠΈ строятся ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… массивов, доступ ΠΊ ΠΈΡ… элСмСнтам осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ свойствами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ индСкса β€” ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки).

ΠŸΡƒΡΡ‚Π°Ρ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ слуТСбного символа @ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… скобок:

$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")

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ этого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² функциям ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°ΠΌ β€” Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΊΠ°ΠΊ это дСлаСтся, Π° Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ сходный Ρ‚ΠΈΠΏ β€” PSCustomObject.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ языкС PowerShell Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования элСмСнты, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для ΠΈΡ… описания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слуТСбноС слово Function, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ скобки Ρ‚Π΅Π»ΠΎ. ΠŸΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ сразу послС ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках.

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

Ѐункция всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” это массив Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² всСх Π΅Π΅ стСйтмСнтов, Ссли ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Если стСйтмСнт ΠΎΠ΄ΠΈΠ½, возвращаСтся СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ return $value добавляСт элСмСнт со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ $value ΠΊ массиву Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ statement list, Π° пустая функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ $null.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ возвСдСния числа Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚:

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

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π΄ΠΎ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² PowerShell ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ: Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ) Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

sqr 2

ΠΈΠ»ΠΈ Ρ‚Π°ΠΊ:

sqr -number 2

Из-Π·Π° способа ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² саму Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ½ΠΎΠ³Π΄Π° приходится Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² скобки:

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

ΠŸΡ€ΠΈ описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

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

БущСствуСт ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ синтаксис для описания Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° β€” всС это пригодится Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ экспортируСмыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ созданиС собствСнных ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΎΠ².

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

Π’ PowerShell сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Try…Catch…Finally, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ситуации. Π’ Π±Π»ΠΎΠΊ Try помСщаСтся ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ошибка, Π° Π² Π±Π»ΠΎΠΊ Catch β€” Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Если ошибки Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΎΠ½ Π½Π΅ выполняСтся. Π‘Π»ΠΎΠΊ Finally выполняСтся послС Π±Π»ΠΎΠΊΠ° Try Π²Π½Π΅ зависимости ΠΎΡ‚ возникновСния ошибки, Π° Π±Π»ΠΎΠΊΠΎΠ² Catch ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π‘Π°ΠΌΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ записываСтся Π² Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ($_) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΎ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π²Π²ΠΎΠ΄Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ значСния:

try {

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

} catch {

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

}

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

На этом рассмотрСниС основ программирования Π½Π° языкС PowerShell стоит Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, рСгулярныС выраТСния, созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ собствСнных ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Windows PowerShell ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят? Π§Π°ΡΡ‚ΡŒ 2: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык программирования

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ