PowerShell for beginners

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

Добавить комментарий