PowerShell for beginners

Пры працы з PowerShell першае, з чым мы сутыкаемся гэта каманды (Cmdlet).
Выклік каманды выглядае так:

Verb-Noun -Parameter1 ValueType1 -Parameter2 ValueType2[]

дапамогу

Выклік даведкі ў 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

мянушка

Каб мы маглі выкарыстоўваць звыклыя каманды з кансолі ў PowerShell ёсць псеўданімы (Alias).

Прыклад псеўданіма для каманды Set-Location з'яўляецца CD.

Гэта значыць замест выкліку каманды

Set-Location “D:”

мы можам выкарыстоўваць

cd “D:”

гісторыя

Каб паглядзець гісторыю выклікаў каманд можна выкарыстоўваць Get-History

Выканаць каманду з гісторыі Invoke-History 1; Invoke-History 2

Ачысціць гісторыю Clear-History

Трубаправод

Пайплайн у 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.

зменныя

Зменныя не з'яўляюцца строга тыпізаванымі і задаюцца з указаннем знака $ наперадзе

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

Выйсце з цыклу break.

Пропуск элемента continue.

Умоўныя заявы

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

Крыніца: habr.com

Дадаць каментар