Вступ до мови коду PowerShell
PowerShell — це потужна платформа автоматизації завдань та командний рядок від компанії Microsoft. Вона побудована на платформі .NET і призначена для автоматизації адміністрування систем через скрипти. Завдяки своїй гнучкості та об'єктно-орієнтованій архітектурі, PowerShell став незамінним інструментом для системних адміністраторів, розробників та IT-спеціалістів. На відміну від традиційних командних рядків, які працюють з текстом, PowerShell оперує об'єктами, що дозволяє виконувати складні операції з мінімумом коду. Сьогодні ми розглянемо основні поняття, приклади команд, скрипти та корисні ресурси для вивчення кодів PowerShell.
Основні поняття PowerShell
PowerShell складається з двох основних компонентів: командного рядка (консолі) та мови сценаріїв. Команди в PowerShell називаються cmdlets (вимовляється як command-lets). Кожен cmdlet має структуру "Дієслово-Іменник", наприклад Get-Process, Set-Location або Get-Service. Це робить синтаксис інтуїтивно зрозумілим. Файли скриптів мають розширення .ps1. Для початку роботи важливо знати, що виконання не підписаних скриптів може бути заблоковане налаштуваннями політики виконання. Команда Set-ExecutionPolicy дозволяє контролювати рівень безпеки, наприклад, встановити RemoteSigned для локально створених скриптів.

Основні команди (cmdlets) для початку
Для ефективної роботи з PowerShell варто освоїти базовий набір команд. Ось найпопулярніші з них:
- Get-Help — довідкова система, яка показує синтаксис, параметри та приклади використання команд.
- Get-Process — відображає список запущених процесів, їх ідентифікатори та споживання ресурсів.
- Get-Service — показує стан служб Windows (запущена, зупинена, призупинена).
- Set-Location (cd) — змінює поточний робочий каталог.
- Get-ChildItem (ls або dir) — виводить вміст каталогу.
- Get-EventLog — надає доступ до журналів подій Windows.
- Get-ADUser та Get-ADComputer — запити до Active Directory для отримання інформації про користувачів і комп'ютери.
Усі ці команди можна комбінувати за допомогою конвеєра (|), передаючи вихідні об'єкти однієї команди на вхід іншої. Наприклад, Get-Process | Where-Object {$_.CPU -gt 10} покаже процеси, які використовують більше 10 одиниць часу процесора.

Скрипти на PowerShell: приклади та конструкції
Скрипти PowerShell дозволяють автоматизувати повторювані завдання. Мова включає змінні (позначаються знаком долара $), цикли (for, foreach, while), умовні конструкції (if, switch) та роботу з файлами. Один із поширених прикладів — отримання списку користувачів Active Directory, створених за останні 7 днів. Це корисно для аудиту облікових записів.
$Fecha = (Get-Date).AddDays(-7)
Get-ADUser -Filter {whenCreated -ge $Fecha} -Properties Name,Enabled,whenCreated
У цьому скрипті спочатку розраховується дата сім днів тому, а потім за допомогою команди Get-ADUser вибираються користувачі, чиє поле whenCreated більше або рівне цій даті. Властивості Name, Enabled та whenCreated виводяться у зручній таблиці. Такий підхід дозволяє швидко виявити нові облікові записи без ручного перегляду консолі Active Directory.

Таблиця популярних команд та їх призначення
Для зручності наведемо короткий довідник основних cmdlets у вигляді таблиці:
| Команда | Призначення |
|---|---|
| Get-Process | Отримати список запущених процесів |
| Get-Service | Переглянути стан служб |
| Set-ExecutionPolicy | Змінити політику виконання скриптів |
| Get-ADUser | Запит користувачів Active Directory |
| Get-EventLog | Читання журналів подій |
| New-Item | Створення нового файлу або каталогу |
Ці команди є основою для багатьох адміністративних завдань. Використовуйте Get-Help з прапорцем -Examples, щоб побачити конкретні приклади роботи з кожною командою.

Робота з об'єктами та конвеєром
Однією з найсильніших сторін PowerShell є конвеєрна обробка об'єктів. Коли ви виконуєте команду Get-Process, вона повертає колекцію об'єктів типу Process. Ви можете передати цю колекцію далі в конвеєр, наприклад, у команду Select-Object для вибору лише певних властивостей (Name, Id, CPU) або у Where-Object для фільтрації. Це дозволяє будувати складні ланцюжки операцій без тимчасових файлів. Наприклад, Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 — отримати п'ять найбільш навантажуючих процесів за CPU.
Безпека скриптів та політики виконання
Оскільки скрипти PowerShell можуть виконувати адміністративні дії, Microsoft запровадила механізми безпеки. Політика виконання (Execution Policy) визначає, які скрипти можна запускати. Є кілька рівнів: Restricted (заборонено будь-які скрипти), RemoteSigned (дозволено локальні та підписані віддалені), AllSigned (тільки підписані) та Unrestricted. Для зміни політики потрібно запустити PowerShell від імені адміністратора. Рекомендується не встановлювати Unrestricted на продуктивних системах, а використовувати RemoteSigned. Також важливо перевіряти джерело скриптів перед виконанням, оскільки шкідливий код може завдати шкоди системі.

Історія та розвиток PowerShell
PowerShell з'явився у 2003 році під кодовою назвою Monad (командний рядок нового покоління). У 2006 році він був офіційно випущений як Windows PowerShell. У 2016 році Microsoft випустила PowerShell Core — відкриту версію з ліцензією MIT, яку можна встановити на macOS та Linux. Це значно розширило можливості інструменту. Сьогодні PowerShell активно розвивається як проект з відкритим кодом на GitHub, а останні версії (PowerShell 7) включають сумісність із багатьма попередніми модулями Windows PowerShell, що робить міграцію простішою.
Додаткові можливості: віддалені сесії та модулі
PowerShell підтримує створення віддалених сесій за допомогою протоколу WinRM. Це дозволяє адмініструвати кілька комп'ютерів з однієї консолі. Команди Enter-PSSession та Invoke-Command дають змогу виконувати блоки коду на віддалених системах. Крім того, існує велика кількість модулів (наприклад, для Azure, Exchange, Active Directory), які додають спеціалізовані команди. Для завантаження модулів з галереї PowerShell використовується команда Install-Module. Це робить платформу ще більш універсальною.
Висновок: чому варто вивчати код PowerShell
PowerShell — це не просто командний рядок, а повноцінна мова сценаріїв для автоматизації. Вона дозволяє виконувати завдання, які раніше вимагали написання складних програм, за допомогою кількох рядків коду. Завдяки об'єктній природі, конвеєрам, вбудованій довідці та активній спільноті вивчення PowerShell є інвестицією у професійне зростання. Розпочніть з малого: вивчіть кілька основних команд, створіть перший скрипт, і ви побачите, як швидко можна автоматизувати рутинні завдання.
Посилання на джерела
Для глибшого вивчення рекомендуємо звернутися до таких ресурсів: офіційна документація PowerShell від Microsoft Learn містить вичерпний опис мови та прикладів. Також корисним є репозиторій PowerShell на GitHub, де можна знайти вихідний код, обговорення та нотатки до релізів. Для швидкого довідника понад 40 популярних команд радимо звернутися до статті на IONOS, а також до статті у Вікіпедії, яка описує історію та архітектуру системи. Використовуйте ці матеріали для поглиблення знань та вдосконалення навичок написання кодів PowerShell.





