Шпаргалка з PowerShell
Доступний для пошуку та друку довідник з PowerShell — командлети, конвеєр, змінні, файли, цикли, функції, об'єкти та адміністрування. Безкоштовно.
Отримання довідки та пошук
12Get-Help Get-Process
Показати довідку для cmdlet
Get-Help Get-Process -Examples
Показати приклади використання cmdlet
Get-Help Get-Process -Full
Показати повну довідку з параметрами
Get-Help about_Functions
Прочитати концептуальну тему about_
Update-Help
Завантажити найновіші файли довідки
Get-Command -Noun Process
Показати cmdlet, що діють на іменник
Get-Command -Verb Get
Показати cmdlet, що використовують дієслово
Get-Command *service*
Шукати команди за іменем з шаблоном
Get-Process | Get-Member
Показати властивості та методи об'єктів
Get-Alias ls
Показати, яку команду розгортає псевдонім
Get-Alias -Definition Get-ChildItem
Показати всі псевдоніми cmdlet
$PSVersionTable
Показати версію та редакцію PowerShell
Змінні та типи
13$x = 5
Присвоїти значення змінній
[int]$n = '42'
Оголосити строго типізовану змінну
$null
Значення null / порожнє
$true; $false
Булеві літерали
$arr = @(1, 2, 3)
Створити масив
$arr += 4
Додати елемент до масиву
$arr[0]; $arr[-1]
Звернення до першого та останнього елементів масиву
$hash = @{ Name = 'Ann'; Age = 30 }
Створити хеш-таблицю
$hash['Name']; $hash.Name
Прочитати значення хеш-таблиці за ключем
$env:PATH
Прочитати змінну середовища
$env:MY_VAR = 'value'
Встановити змінну середовища для сесії
Get-Variable
Показати всі визначені змінні
[math]::Round(3.14159, 2)
Викликати статичний метод .NET
Конвеєр та фільтрація
12Get-Process | Where-Object { $_.CPU -gt 10 }
Відфільтрувати об'єкти за умовою
Get-Process | ? CPU -gt 10
Фільтрувати з псевдонімом ? та спрощеним синтаксисом
Get-Process | ForEach-Object { $_.Name }
Виконати блок сценарію для кожного об'єкта
Get-Process | % { $_.Kill() }
Перебрати з псевдонімом %
Get-Process | Select-Object Name, Id
Залишити лише певні властивості
Get-Process | Select-Object -First 5
Взяти перші N об'єктів
Get-Process | Sort-Object CPU -Descending
Сортувати об'єкти за властивістю
Get-Process | Group-Object Company
Згрупувати об'єкти за властивістю
Get-Process | Measure-Object CPU -Sum
Агрегувати числові значення (сума, середнє)
Get-ChildItem | Select-Object -Unique
Повернути унікальні об'єкти
1..5 | ForEach-Object { $_ * 2 }
Передати діапазон через перетворення
Get-Process | Out-GridView
Надіслати результати в інтерактивну таблицю
Файли та шляхи
13Get-ChildItem -Path C:\Logs
Показати елементи каталогу (псевдонім ls/dir)
Get-ChildItem -Recurse -Filter *.log
Показати відповідні файли рекурсивно
Get-Content .\file.txt
Читати файл рядок за рядком
Get-Content .\file.txt -Tail 20
Прочитати останні N рядків файлу
Set-Content .\file.txt -Value 'Hi'
Записати (перезаписати) текст у файл
Add-Content .\file.txt -Value 'Hi'
Додати текст у кінець файлу
Copy-Item a.txt b.txt
Скопіювати файл чи каталог
Move-Item a.txt .\dir\
Перемістити чи перейменувати елемент
Remove-Item a.txt -Force
Видалити файл чи каталог
New-Item -ItemType Directory -Path .\dir
Створити новий файл чи каталог
Test-Path .\file.txt
Перевірити, чи існує шлях
Get-Location
Показати поточний каталог (псевдонім pwd)
Set-Location C:\Temp
Змінити поточний каталог (псевдонім cd)
Рядки та текст
12'Hello World' -match 'World'
Перевірити рядок за regex
'Hello' -replace 'l', 'L'
Замінити текст за regex
'a,b,c' -split ','
Розділити рядок на масив за regex
'a-b-c'.Split('-')
Розділити методом .NET String
'a', 'b' -join ', '
З'єднати елементи масиву в рядок
Select-String -Path *.log -Pattern 'error'
Пошук у стилі grep по файлах
'{0} of {1}' -f 3, 10
Форматувати рядок із заповнювачами
' hi '.Trim()
Обрізати пробіли на початку та в кінці
'Hello'.ToUpper()
Перевести рядок у верхній регістр
'Hello'.Substring(0, 3)
Витягти підрядок за індексом та довжиною
'Hello'.Contains('ell')
Перевірити, чи рядок містить текст
'Hello'.Length
Отримати кількість символів
Цикли та умови
12if ($x -gt 0) { 'pos' } elseif ($x -eq 0) { 'zero' } else { 'neg' }
Розгалуження через if / elseif / else
switch ($x) { 1 { 'one' } default { 'other' } }
Зіставити значення з варіантами
foreach ($i in $arr) { $i }
Перебрати колекцію
for ($i = 0; $i -lt 5; $i++) { $i }
Лічильний цикл з індексом
while ($x -lt 10) { $x++ }
Цикл, поки умова істинна
do { $x++ } while ($x -lt 10)
Цикл щонайменше раз, потім перевірка
$x -eq 5; $x -ne 5
Порівняння рівно та не дорівнює
$x -gt 5; $x -lt 5
Порівняння більше та менше
$x -ge 5; $x -le 5
Порівняння більше/менше-або-дорівнює
'abc' -like 'a*'
Порівняння за шаблоном
@(1, 2, 3) -contains 2
Перевірити належність до масиву
break; continue
Вийти чи пропустити поточну ітерацію циклу
Функції та сценарії
12function Get-Sum { param($a, $b) $a + $b }
Визначити функцію з параметрами
Get-Sum -a 2 -b 3
Викликати функцію з іменованими аргументами
function Test { param([int]$n = 1) }
Типізований параметр зі значенням за замовчуванням
param([Parameter(Mandatory)]$Name)
Вимагати обов'язкового параметра
return $value
Повернути значення з функції
function F { [CmdletBinding()] param() }
Створити розширену функцію (загальні параметри)
Write-Verbose 'msg' -Verbose
Видати потік докладних повідомлень
Write-Output $result
Надіслати об'єкт у конвеєр
Write-Error 'failed'
Записати в потік помилок
.\script.ps1 -Arg value
Запустити файл сценарію з аргументами
. .\functions.ps1
Підвантажити сценарій у сесію через dot-source
try { } catch { $_ } finally { }
Обробити фатальні помилки
Об'єкти та властивості
12Get-Process | Select-Object -ExpandProperty Name
Повернути сирі значення властивостей, не об'єкти
(Get-Process).Name
Звернутися до властивості кожного об'єкта
Get-Process | Select-Object Name, @{ Name = 'MB'; Expression = { $_.WS / 1MB } }
Додати обчислювану властивість
[PSCustomObject]@{ Name = 'Ann'; Age = 30 }
Побудувати власний об'єкт
$obj | Add-Member -NotePropertyName Tag -NotePropertyValue 'x'
Прикріпити властивість до об'єкта
$obj.PSObject.Properties.Name
Показати імена властивостей об'єкта
$obj | Format-Table -AutoSize
Показати об'єкти як вирівняну таблицю
$obj | Format-List *
Показати всі властивості як список
$obj | ConvertTo-Json -Depth 5
Серіалізувати об'єкт у JSON
Get-Content data.json | ConvertFrom-Json
Розібрати JSON в об'єкти
$obj | Export-Csv out.csv -NoTypeInformation
Експортувати об'єкти у файл CSV
Import-Csv data.csv
Прочитати файл CSV в об'єкти
Процеси та служби
12Get-Process
Показати запущені процеси (псевдонім ps)
Get-Process -Name chrome
Отримати процеси за іменем
Stop-Process -Name notepad -Force
Завершити процес
Start-Process notepad.exe
Запустити новий процес
Get-Service
Показати служби Windows
Get-Service -Name wuauserv
Отримати службу за іменем
Start-Service -Name wuauserv
Запустити зупинену службу
Stop-Service -Name wuauserv
Зупинити запущену службу
Restart-Service -Name wuauserv
Перезапустити службу
Set-Service -Name wuauserv -StartupType Manual
Змінити режим запуску служби
Get-EventLog -LogName System -Newest 20
Прочитати останні записи класичного журналу подій
Get-WinEvent -LogName Application -MaxEvents 20
Запитати сучасні журнали подій
Віддалене виконання та завдання
12Enter-PSSession -ComputerName Srv01
Розпочати інтерактивну віддалену сесію
Exit-PSSession
Залишити інтерактивну віддалену сесію
Invoke-Command -ComputerName Srv01 -ScriptBlock { Get-Service }
Виконати команду на віддаленому хості
$s = New-PSSession -ComputerName Srv01
Створити постійну віддалену сесію
Invoke-Command -Session $s -ScriptBlock { hostname }
Повторно використати наявну віддалену сесію
Remove-PSSession $s
Закрити та видалити віддалену сесію
Start-Job -ScriptBlock { Get-Process }
Виконати команду як фонове завдання
Get-Job
Показати фонові завдання та їхній стан
Receive-Job -Id 1 -Keep
Отримати вивід завдання
Wait-Job -Id 1
Заблокувати до завершення завдання
Stop-Job -Id 1; Remove-Job -Id 1
Зупинити та видалити фонове завдання
Get-Process | Start-ThreadJob { $input }
Виконати легкі завдання-потоки в межах процесу
Модулі та пакети
12Get-Module
Показати наразі завантажені модулі
Get-Module -ListAvailable
Показати всі встановлені модулі
Import-Module Pester
Завантажити модуль у сесію
Remove-Module Pester
Вивантажити модуль із сесії
Find-Module -Name PSReadLine
Шукати модуль у галереї
Install-Module PSReadLine -Scope CurrentUser
Встановити модуль з галереї
Update-Module PSReadLine
Оновити встановлений модуль
Uninstall-Module PSReadLine
Видалити встановлений модуль
Get-ExecutionPolicy
Показати поточну політику виконання сценаріїв
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Дозволити виконання підписаних та локальних сценаріїв
Get-PSRepository
Показати налаштовані репозиторії пакетів
$PROFILE
Шлях до сценарію профілю поточного користувача
Жоден запис не відповідає “:q”.
Потрібна допомога?
Виникла проблема з цим інструментом? Повідомте нас.