Основні висновки
- PowerShell – це мова для створення сценаріїв, яка автоматизує різноманітні завдання на комп’ютері.
- Командлети – це окремі, цільові команди в PowerShell. Перелік доступних команд можна отримати за допомогою “Get-Command”.
- PowerShell є кросплатформною, працює в Windows, macOS та Linux.
PowerShell – це потужний інструмент для автоматизації комп’ютерних дій. Він дозволяє легко та надійно створювати сценарії. Давайте розглянемо, як його використовувати, починаючи з написання простих сценаріїв для Windows.
Знайомство зі сценаріями PowerShell
Для початку написання сценаріїв PowerShell у Windows, необхідно мати базове розуміння трьох ключових концепцій:
- Командлети: основні, одноцільові команди.
- Параметри: уточнення для командлетів, які визначають, що, коли, де і як виконувати команду.
- Конвеєр: передача вихідних даних від одного командлета до іншого для послідовного виконання операцій.
Комбінуючи ці елементи, можна створювати прості сценарії для автоматизації рутинних операцій.
Приклад конвеєра показує, як можна поєднати декілька командлетів для виконання певного завдання:
Для запуску цього конвеєра в PowerShell потрібно використовувати таку конструкцію:
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry ` | Place-Object Bowl
Детальніше про командлети
PowerShell, як і будь-яка мова для автоматизації, має вбудовані команди для керування об’єктами та виконання різноманітних дій. Ці основні команди називають командлетами.
Командлети (вимовляється як “command-lets”) – це невеликі, спеціалізовані команди, що використовуються в PowerShell. Вони реалізовані як .dll файли. Командлети є легкими і виконуються швидше, ніж звичайні функції, завдяки своїй скомпільованій природі.
В PowerShell доступні тисячі командлетів. Не потрібно вивчати їх усі одразу. Почніть з базових, а потім розширюйте знання в процесі створення власних сценаріїв. Для перегляду встановлених на вашому комп’ютері командлетів виконайте:
Get-Command
Зверніть увагу, що іменування командлетів відбувається за принципом “Дія-Об’єкт”, що полегшує розуміння їх призначення.
Наприклад, `Get-Command` виводить список доступних команд, `Get-Process` показує активні процеси, а `Copy-Item` копіює файли або каталоги.
Командлети мають розлогу документацію з прикладами використання, інструкціями та детальним описом їхніх функцій.
Щоб дізнатися більше про певний командлет, скористайтеся командою:
Get-Help <назва-командлета>
Параметри командлетів у PowerShell
Командлети можуть приймати параметри для налаштування своєї поведінки. Задаючи параметри, ви визначаєте, що саме, коли, де і як має виконуватися команда PowerShell.
Наприклад, `Get-Process` показує перелік всіх активних процесів в операційній системі:
Щоб отримати інформацію про конкретний процес, використовуйте параметри. Наприклад, для відображення процесів Slack, застосуйте параметр `Name`:
Get-Process -Name Slack
В результаті ви отримаєте лише процеси, що мають назву “slack”:
Деякі параметри є позиційними, тобто їх назва є необов’язковою. У цьому випадку `Get-Process -Name Slack` і `Get-Process Slack` повернуть однаковий результат.
Кожен командлет приймає різні типи параметрів. Інформацію про параметри можна знайти в розділі SYNTAX довідки (команда `Get-Help`).
Get-Help Get-Process
Ви побачите усі можливі варіанти запуску командлета:
У даному випадку, `Get-Process` може приймати параметри, як `Name`, `Id`, `ComputerName`, `Module`, `FileVersionInfo` та інші. Значення символів:
Символ | Назва | Значення |
---|---|---|
Порожньо | Параметр не приймає вхідні дані | |
– | Дефіс | Позначає назву параметра |
<> | Кутові дужки | Заповнювач для тексту |
[] | Квадратні дужки | Параметр приймає одне або декілька значень |
{} | Фігурні дужки | Параметр приймає набір значень |
Параметри, які потребують введення, мають вказувати тип даних (рядок, ціле число, булеве значення, DateTime). Наприклад:
Get-Process [[-Name] <string[]>]
означає, що параметр `Name` приймає одне або кілька рядкових значень, а:
Get-Process -Id <int[]>
означає, що параметр `Id` приймає одне або кілька цілих чисел.
У попередньому прикладі, параметр `Name` використовували для звуження результатів. Для більш конкретного запиту можна скористатися параметром `ID`, вказавши ціле число.
Get-Process -Id 3016
В результаті ви отримаєте інформацію про процес з ID 3016:
Побудова конвеєра
PowerShell оперує даними, представленими у вигляді об’єктів. Для створення сценарію об’єкти передаються через послідовність командлетів (або функцій), з’єднаних символом вертикальної лінії (|). Правильний вибір командлетів та їх логічне поєднання в конвеєр – ключ до ефективного сценарію.
Наприклад, ви хочете створити сценарій для сортування та відображення п’яти файлів, що займають найбільше місця в папці. Існують надійніші способи сортування, але нижченаведений приклад є простим та зрозумілим:
Відповідний конвеєр в PowerShell буде виглядати так:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending ` | Select-Object -First 5 | Format-Table Name, Length -AutoSize
Збереження конвеєра як PS1 сценарію
Після створення робочого конвеєра його можна зберегти у вигляді PS1 файлу, щоб не вводити його щоразу вручну.
Найпростіший спосіб – вставити сценарій у текстовий редактор (наприклад, Блокнот) і зберегти файл з розширенням .ps1.
Для запуску PS1 сценарію в PowerShell скористайтеся командою `./ScriptName.ps1`:
Вітаємо! Ви успішно створили свій перший PS1 сценарій.
PowerShell доступний на Linux та macOS
PowerShell – чудовий інструмент для початківців в автоматизації. Спочатку розроблений для Windows, тепер PowerShell доступний і на macOS та багатьох дистрибутивах Linux! Це робить PowerShell ще більш привабливим, оскільки ви можете застосовувати свої знання в різних операційних системах.