При работе с 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

Если параметры заключены в квадратные скобки [], то они являются необязательными.
То есть в этом примере само название журнала является обязательным, а название параметра нет. Если тип параметра и его название заключены в скобки вместе, то этот параметр необязательный.
Если посмотреть на параметр 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 ApplicationAlias
Чтобы мы могли использовать привычные команды из консоли в 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.

Это значит что мы можем переписать 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 = $nullLoops
Синтаксис циклов:
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 () {} elseswitch($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{
}