Що таке сценарії Windows PowerShell?

Ключові висновки

  • 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 постачається з попередньо зібраними командами для керування об’єктами та виконання різноманітних завдань. Ці основні команди в PowerShell відомі як командлети.

Командлети (вимовляються як command-lets) — це невеликі однофункціональні команди, що використовуються в середовищі PowerShell із розширенням .dll. Це легкі фрагменти коду, які виконуються швидше, ніж функції, завдяки своїй скомпільованій природі.

У PowerShell доступні тисячі командлетів. Вам не потрібно вивчати їх усі. Ви можете розпочати з вивчення кількох базових командлетів PowerShell, а потім продовжувати вивчати їх у процесі створення сценаріїв. Щоб переглянути командлети, які вже встановлено на вашому комп’ютері, виконайте:

 Get-Command 

Якщо ви проглянете результати, ви помітите, що вони дотримуються принципу іменування дієслова та іменника. Це полегшує розуміння того, що робить певний командлет.

Наприклад, Get-Command надає список команд, доступних у PowerShell. Get-Process отримує вам процеси, які зараз активні, а Copy-Item копіює один або кілька файлів у певний каталог.

Командлети також постачаються в комплекті з великою документацією, яка включає приклади, інструкції з використання та пояснення їх функціональності.

Щоб дізнатися більше про певний командлет і як ним користуватися, запустіть:

 Get-Help <name-of-cmdlet> 

Пояснення параметрів PowerShell

Командлети можуть приймати параметри, щоб змінювати свою поведінку. Коли ви запускаєте командлет або функцію, ви можете надати значення параметрів, щоб указати, що, коли, де та як виконується кожна команда PowerShell.

Наприклад, Get-Process отримає список усіх активних процесів у вашій операційній системі:

Але що, якщо ви хочете отримати лише певний процес? Це можна зробити за допомогою параметрів. Наприклад, щоб отримати всі процеси Slack, ви можете використовувати параметр Name з командлетом Get-Process:

 Get-Process -Name Slack 

Тоді ви побачите лише процеси з назвою «slack»:

Деякі параметри є «позиційними», тобто їх назва необов’язкова. У цьому випадку Get-Process -Name Slack і Get-Process Slack роблять те саме.

Кожен командлет прийматиме різні типи параметрів. Використовуйте команду Get-Help, щоб переглянути прийнятні параметри командлета в розділі SYNTAX.

 Get-Help Get-Process 

Ви побачите список усіх можливих способів запуску вказаного командлета:

У цьому випадку командлет Get-Process приймає такі параметри, як Name, Id, ComputerName, Module, FileVersionInfo та інші загальні параметри. Символи тут означають:

символ

Ім’я

Значення

Пустий

Параметр не приймає введення

Дефіс

Вказує назву параметра

<>

Кутові кронштейни

Заповнювач для тексту

[]

Дужки

Параметр, який може приймати одне або декілька значень

{}

Брекети

Параметр приймає набір значень

Параметри, які приймають вхідні дані, вказуватимуть на тип даних, які вони потребують, наприклад рядок, ціле число, логічні значення або DateTime. Наприклад, це:

 Get-Process [[-Name] <string[]>] 

Означає, що параметр Name приймає одне або кілька рядкових значень, тоді як це:

 Get-Process -Id <int[]> 

Означає, що параметр Id приймає одне або кілька цілих значень.

У попередньому прикладі Get-Process використовувався параметр Name, щоб звузити результати. Однак, якщо ви хочете звузити його до ще більш конкретного процесу, ви можете використовувати параметр ID, для якого потрібне ціле число, як зазначено в його синтаксисі.

 Get-Process -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.

Створивши файл PS1, ви можете використовувати його в PowerShell, запустивши ./ScriptName.ps1:

Щиро вітаю! Тепер ви можете створювати сценарії PowerShell PS1.

PowerShell також доступний для Linux і macOS

PowerShell — одна з найкращих мов сценаріїв для початківців, яку може вивчити кожен. Хоча раніше PowerShell був обмежений лише Windows, оновлена ​​версія PowerShell тепер також доступна для macOS і багатьох дистрибутивів Linux! Це робить PowerShell ще привабливішим, оскільки ви можете перенести свої знання з Windows в інші операційні системи.