ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ PowerShell, ΠΏΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ΅ΡΠ°ΠΌΠ΅, ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ (Cmdlets).
ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
Verb-Noun -Parameter1 ValueType1 -Parameter2 ValueType2[]
ΠΠΎΠΌΠΎΠ³Π½Π΅
ΠΠΎΠΌΠΎΡΡΠ° Π² PowerShell Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Get-Help. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½: ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½, ΠΏΡΠ»Π΅Π½, ΠΎΠ½Π»Π°ΠΉΠ½, showWindow.
Get-Help Get-Service -full ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Get-Service
Get-Help Get-S* ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΠΏΠΎΡΠ²Π°ΡΠΈ Ρ Get-S*
ΠΠΌΠ° ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ΅Π±ΡΠ°ΠΉΡ Π½Π° Microsoft.
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° ΠΏΠΎΠΌΠΎΡ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Get-Evenlog
ΠΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ° ΠΎΠ³ΡΠ°Π΄Π΅Π½ΠΈ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΈ ΡΠΊΠΎΠ±ΠΈ [], ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π½Π΅ ΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ.
Π’ΠΎΠ΅ΡΡ Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΌΠΈΡ ΠΆΡΡΠ½Π°Π» ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° EntryType, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π²ΡΠ² ΡΠΈΠ³ΡΡΠ½ΠΈ ΡΠΊΠΎΠ±ΠΈ. ΠΠ° ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π²ΡΠ² ΡΠΈΠ³ΡΡΠ½ΠΈ ΡΠΊΠΎΠ±ΠΈ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π°Π»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π² ΠΏΠΎΠ»Π΅ΡΠΎ Required. Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡΡ After Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ Required Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° false. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΠ»Π΅ΡΠΎ Position ΠΎΡΡΡΠ΅ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΊΠ°Π·Π²Π° Named. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΡΠ°ΠΌΠΎ ΠΏΠΎ ΠΈΠΌΠ΅, ΡΠΎΠ΅ΡΡ:
Get-EventLog -LogName Application -After 2020.04.26
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ LogName ΠΈΠΌΠ°ΡΠ΅ Π½ΠΎΠΌΠ΅Ρ 0 Π²ΠΌΠ΅ΡΡΠΎ Named, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°ΠΌΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π±Π΅Π· ΠΈΠΌΠ΅, Π½ΠΎ ΠΊΠ°ΡΠΎ Π³ΠΎ ΠΏΠΎΡΠΎΡΠΈΠΌ Π² ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ:
Get-EventLog Application -After 2020.04.26
ΠΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ ΡΠΎΠ·ΠΈ ΡΠ΅Π΄:
Get-EventLog -Newest 5 Application
ΠΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ
ΠΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π² PowerShell, ΠΈΠΌΠ° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ (Alias).
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Set-Location Π΅ cd.
Π’ΠΎΠ΅ΡΡ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
Set-Location βD:β
ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅
cd βD:β
ΠΡΡΠΎΡΠΈΡ
ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Get-History
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Invoke-History 1; ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΡΡΠΎΡΠΈΡ 2
Π§ΠΈΡΡΠ° ΠΈΡΡΠΎΡΠΈΡ
Π’ΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄
ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π² powershell Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΏΡΡΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° Π²ΡΠΎΡΠ°ΡΠ°. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°:
Get-Verb | Measure-Object
ΠΠΎ Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π°, Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΠΎ-ΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΌΠ°ΠΌ Π΅ΠΊΠΈΠΏ
Get-Verb "get"
ΠΠΊΠΎ ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Get-Help Get-Verb -Full help, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ Verb ΠΏΡΠΈΠ΅ΠΌΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ByValue Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π² ΡΠΊΠΎΠ±ΠΈ.
Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ΠΌ Get-Verb "get" Π½Π° "get" | GetVerb.
Π’ΠΎΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΏΡΡΠ²ΠΈΡ ΠΈΠ·ΡΠ°Π· Π΅ Π½ΠΈΠ· ΠΈ ΡΠΎΠΉ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Verb Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Get-Verb ΡΡΠ΅Π· Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π²Ρ
ΠΎΠ΄ΡΡ Π½Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ByPropertyName. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ ΠΎΠ±Π΅ΠΊΡ, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ Verb.
ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π΅ ΡΠ° ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈ ΡΠ° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Ρ $ ΠΎΡΠΏΡΠ΅Π΄
$example = 4
Π‘ΠΈΠΌΠ²ΠΎΠ»ΡΡ > ΠΎΠ·Π½Π°ΡΠ°Π²Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ $example > File.txt
Π‘ ΡΠΎΠ·ΠΈ ΠΈΠ·ΡΠ°Π· ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° $example Π²ΡΠ² ΡΠ°ΠΉΠ»
Π‘ΡΡΠΎΡΠΎ ΠΊΠ°ΡΠΎ Set-Content -Value $example -Path File.txt
ΠΠ°ΡΠΈΠ²ΠΈΡΠ΅
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ²Π°:
$ArrayExample = @(βFirstβ, βSecondβ)
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠ°Π·Π΅Π½ ΠΌΠ°ΡΠΈΠ²:
$ArrayExample = @()
ΠΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ:
$ArrayExample[0]
ΠΠ·Π΅ΠΌΠ΅ΡΠ΅ ΡΠ΅Π»ΠΈΡ ΠΌΠ°ΡΠΈΠ²:
$ArrayExample
ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ:
$ArrayExample += βThirdβ
$ArrayExample += @(βFourthβ, βFifthβ)
Π‘ΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΏΠΎ:
$ArrayExample | Sort
$ArrayExample | Sort -Descending
ΠΠΎ ΡΠ°ΠΌΠΈΡΡ ΠΌΠ°ΡΠΈΠ² ΠΎΡΡΠ°Π²Π° Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ Ρ ΡΠΎΠ²Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅. Π Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ ΠΌΠ°ΡΠΈΠ²ΡΡ Π΄Π° ΠΈΠΌΠ° ΡΠΎΡΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΡΠΎΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ:
$ArrayExample = $ArrayExample | Sort
ΠΡΠΌΠ° Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΠΌΠ°ΡΠΈΠ² Π² PowerShell, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
$ArrayExample = $ArrayExample | where { $_ -ne βFirstβ }
$ArrayExample = $ArrayExample | where { $_ -ne $ArrayExample[0] }
ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΈΠ²:
$ArrayExample = $null
Loops
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° ΡΠΈΠΊΡΠ»Π°:
for($i = 0; $i -lt 5; $i++){}
$i = 0
while($i -lt 5){}
$i = 0
do{} while($i -lt 5)
$i = 0
do{} until($i -lt 5)
ForEach($item in $items){}
ΠΠ·Π»Π΅Π·ΡΠ΅ ΠΎΡ ΠΏΡΠ΅ΠΊΡΡΠ²Π°ΡΠΈΡ ΡΠΈΠΊΡΠ».
ΠΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π·Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Π½Π΅.
Π£ΡΠ»ΠΎΠ²Π½ΠΈ ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΡ
if () {} elseif () {} else
switch($someIntValue){
1 { βOption 1β }
2 { βOption 2β }
default { βNot setβ }
}
ΡΡΠ½ΠΊΡΠΈΡ
ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°:
function Example () {
echo &args
}
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ:
Example βFirst argumentβ βSecond argumentβ
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡ:
function Example () {
param($first, $second)
}
function Example ($first, $second) {}
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ:
Example -first βFirst argumentβ -second βSecond argumentβ
ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
try{
} catch [System.Net.WebException],[System.IO.IOException]{
} catch {
} finally{
}
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com