ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с PowerShell ΠΏΠ΅Ρ€Π²ΠΎΠ΅ с Ρ‡Π΅ΠΌ ΠΌΡ‹ сталкиваСмся это ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (Cmdlet).
Π’Ρ‹Π·ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ выглядит Ρ‚Π°ΠΊ:

Verb-Noun -Parameter1 ValueType1 -Parameter2 ValueType2[]

Help

Π’Ρ‹Π·ΠΎΠ² справки Π² PowerShell осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get-Help. МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: example, detailed, full, online, showWindow.

Get-Help Get-Service -full Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get-Service
Get-Help Get-S* ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ всС доступныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Get-S*

Π’Π°ΠΊΠΆΠ΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Microsoft Π΅ΡΡ‚ΡŒ подробная докумСнтация.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ справки ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Get-Evenlog

PowerShell for beginners

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [], Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.
Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ само Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅Ρ‚. Если Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² скобки вмСстС, Ρ‚ΠΎ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ.

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ EntryType, Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. Для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ значСния Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ являСтся Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² описании Π½ΠΈΠΆΠ΅ Π² ΠΏΠΎΠ»Π΅ Required. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ After являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² Required стоит false. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΠ»Π΅ Position Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ написано Named. Π­Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ:

Get-EventLog -LogName Application -After 2020.04.26

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° LogName вмСсто Named Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ число 0 это Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ, Π° ΡƒΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ Π² Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Get-EventLog Application -After 2020.04.26

Допустим ΠΈ Ρ‚Π°ΠΊΠΎΠΉ порядок:

Get-EventLog -Newest 5 Application

Alias

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· консоли Π² PowerShell Π΅ΡΡ‚ΡŒ псСвдонимы (Alias).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ псСвдонима для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Set-Location являСтся cd.

Π’ΠΎ Π΅ΡΡ‚ΡŒ вмСсто Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Set-Location β€œD:”

ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

cd β€œD:”

History

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Get-History

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· истории Invoke-History 1; Invoke-History 2

ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Clear-History

Pipeline

Пайплайн Π² powershell это ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСдаСтся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°:

Get-Verb | Measure-Object

Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΏΡ€ΠΎΡ‰Π΅. Π•ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°

Get-Verb "get"

Если Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ справку Get-Help Get-Verb -Full, Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Verb ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ pipline input ΠΈ Π² скобках написано ByValue.

PowerShell for beginners

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Get-Verb Β«getΒ» Π½Π° Β«getΒ» | Get-Verb.
Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выраТСния это строка ΠΈ ΠΎΠ½Π° пСрСдаСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Verb ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get-Verb Ρ‡Π΅Ρ€Π΅Π· pipline input ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.
Π’Π°ΠΊΠΆΠ΅ pipline input ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ByPropertyName. Π’ этом случаС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΠ΅Ρ€Ρ‚ΠΈ со схоТим Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Verb.

Variables

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ символа $ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ

$example = 4

Π‘ΠΈΠΌΠ²ΠΎΠ» > ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²
НапримСр, $example > File.txt
Π­Ρ‚ΠΈΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΡ‹ помСстим Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $example Π² Ρ„Π°ΠΉΠ»
Аналогично ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Set-Content -Value $example -Path File.txt

Arrays

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива:

$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){}

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° break.

ΠŸΡ€ΠΎΠΏΡƒΡΠΊ элСмСнта continue.

Conditional Statements

if () {} elseif () {} else

switch($someIntValue){
  1 { β€œOption 1” }
  2 { β€œOption 2” }
  default { β€œNot set” }
}

Function

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

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”

Exception

try{
} catch [System.Net.WebException],[System.IO.IOException]{
} catch {
} finally{
}

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