Підручник Powershell для початківців
⚡ Розумний підсумок
PowerShell Scripting — це об'єктно-орієнтований механізм автоматизації, побудований на .NET Framework. Він поєднує командлети, скрипти та мову сценаріїв, щоб допомогти ІТ-адміністраторам автоматизувати Windows, керувати службами та підключатися до віддалених машин з одного командного рядка.

Що таке PowerShell?
Windows PowerShell — це об’єктно-орієнтований механізм автоматизації та мова сценаріїв. Він розроблений для ІТ-фахівців та системних адміністраторів, яким потрібно контролювати та автоматизувати адміністрування Windows та інші програми. PowerShell розширює концепції, вивчені в Windows Командний рядок і Windows Хост скриптів з новими об'єктами, командлетами та потужним конвеєром.
Він поєднує гнучкість сценаріїв, швидкість командного рядка та глибину графічного інтерфейсу адміністратора. Завдяки йому адміністратори можуть ефективно вирішувати проблеми та виключати години ручної роботи. Цей посібник ознайомить вас з основами, необхідними для вивчення PowerShell з нуля.
Навіщо використовувати PowerShell?
Найважливіші причини використання PowerShell:
- Пропонує добре інтегрований інтерфейс командного рядка для операційної системи.
- Надає повний доступ до кожного типу в .NET framework.
- Довіряють системні адміністратори в різних підприємствах.
- Дозволяє маніпулювати компонентами сервера та робочої станції за допомогою кількох рядків.
- Орієнтовано на системних адміністраторів з чітким синтаксисом дієслів та іменників.
- Безпечніше, ніж біг vbscript або інші застарілі мови сценаріїв.
Історія PowerShell
PowerShell 1.0 було вперше випущено у 2006 році. Зараз PowerShell має версію 7.2 і вище. З виходом релізів його можливості та середовища розміщення значно зростали.
Історія PowerShell за версіями:
- PowerShell 1.0 — підтримала місцеву адміністрацію Windows Сервер 2003.
- PowerShell 2.0 — інтегрований з Windows 7 і Windows Server 2008 R2. Додано віддалений доступ, транзакції, фонові завдання, події та налагодження.
- PowerShell 3.0 — постачається з Windows 8 і Windows Сервер 2012 як частина Windows Структура керування. Додано заплановані завдання, підключення сеансів та автоматичне завантаження модулів.
- PowerShell 4.0 — постачається з Windows 8.1 і Windows Сервер 2012 R2. Додано конфігурацію бажаного стану, покращене налагодження та діагностику мережі.
- PowerShell 5.0 — частина Windows Management Framework 5. Додано віддалене налагодження, визначення класів та перелічення .NET.
- PowerShell 7.2 — побудовано на .NET 6.0. Додає нові оператори, динамічні подання помилок та автоматичні сповіщення про версії.
Можливості PowerShell
- Віддалена взаємодія PowerShell: викликати скрипти та командлети на віддаленій машині.
- Фонові завдання: запускати скрипти або конвеєри асинхронно на локальній машині або багатьох віддалених машинах.
- Операції: дозволяють командлетам і розробникам виконувати згруповані операції, які можна зафіксувати або відкотити разом.
- Події: відстежувати, перенаправляти та діяти відповідно до управлінських та системних подій.
- Мережева передача файлів: вбудована підтримка пріоритетної, асинхронної, обмеженої передачі файлів між машинами через службу фонової інтелектуальної передачі (BITS).
Як запустити PowerShell
PowerShell попередньо встановлено у кожній новітній версії WindowsЗапустіть його наступним чином.
Крок 1) Шукайте PowerShell у Windows, а потім виберіть і клацніть його.
Крок 2) Відкриється вікно PowerShell.
Cmdlet проти команди
A командлет (вимовляється як «command-let») – це спрощена команда, що використовується в середовищі PowerShell. PowerShell викликає командлети в командному рядку, і ви можете створювати власні за допомогою API PowerShell. Командлети відрізняються від традиційних команд оболонки наступним чином:
- Командлети є . NET Framework об'єкти класу; їх не можна виконати як окремі виконувані файли.
- Командлети можна написати всього за десяток рядків коду.
- Синтаксичний аналіз, форматування виводу та представлення помилок обробляються середовищем виконання, а не самим командлетом.
- Командлети працюють з об'єктами, тому текстові потоки та об'єкти можуть проходити через конвеєри.
- Командлети базуються на записах і обробляють один об'єкт за раз.
Більшість функцій PowerShell надаються через командлети, які завжди використовують шаблон іменування дієслово-іменник (завжди в однині). Командлети повертають об'єкти, а не текст. сценарій — на відміну від командлета — це набір команд, що зберігаються в текстовому файлі з .ps1 розширення.
Поширені дієслова, які ви використовуватимете для вивчення PowerShell, включають:
- отримати — повернути щось.
- Старт — запустити щось.
- З — вивести щось.
- Стоп — зупинити щось, що працює.
- Установка — визначити щось.
- Нові — щось створити.
Важливі команди PowerShell
Отримати допомогу: переглянути довідку щодо команд і тем PowerShell.
Приклад: відображення довідки для Format-Table команда
Get-Help Format-Table
Get-Command: отримати інформацію про все, що можна викликати.
Приклад: створити список командлетів та функцій, встановлених на комп'ютері.
Get-Command
Get-Service: знаходить усі служби на машині.
Приклад: отримати всі служби, назва яких починається з «vm».
Get-Service "vm*"
Отримати учасника: показати, що можна зробити з об'єктом.
Приклад: список учасників служб віртуальної машини, повернутих Get-Service.
Get-Service "vm*" | Get-Member
Інші корисні командлети:
Get-Module— показати встановлені пакети команд.Get-Content— прочитати файл та обробити його вміст.Get-*підстановочний знак — перерахувати всі командлети, які починаються з «Get-».
Приклад: створити папку.
New-Item -Path 'X:\Guru99' -ItemType Directory
вихід:
Типи даних PowerShell
PowerShell підтримує стандартні типи даних .NET, тому ви можете зберігати будь-яке значення чисто у змінній.
Спеціальні змінні
PowerShell надає доступ до низки вбудованих спеціальних змінних. Найкорисніші з них перелічені нижче.
| Спеціальна змінна | Опис |
|---|---|
| $Error | Масив об'єктів помилок, що представляють найновіші помилки. |
| $Host | Відображає назву поточної програми хостингу. |
| $Профіль | Зберігає повний шлях до профілю користувача для оболонки за замовчуванням. |
| $PID | Зберігає ідентифікатор процесу. |
| $PSUICulture | Містить назву поточної культури інтерфейсу користувача. |
| $NULL | Містить порожнє або null-значення. |
| $False | Містить логічне значення FALSE. |
| $True | Містить логічне значення TRUE. |
Сценарії PowerShell
Скрипти PowerShell зберігаються в .ps1 файли. За замовчуванням ви не можете запустити скрипт, двічі клацнувши по ньому — цей запобіжний захід захищає систему від випадкового пошкодження. Щоб виконати скрипт, клацніть його правою кнопкою миші та виберіть «Запуск за допомогою PowerShell».
Політика виконання контролює, які скрипти дозволено запускати. Перегляньте поточну політику за допомогою Get-ExecutionPolicyМожливі значення включають:
- Обмежений — жодні скрипти не дозволені. Це значення за замовчуванням.
- AllSigned — запускаються лише скрипти, підписані довіреним розробником, і кожен з них потребує підтвердження.
- RemoteSigned — ваші власні скрипти працюють, а також підписані скрипти з перевірених джерел.
- Необмежений — будь-який скрипт може працювати (використовуйте економно).
Кроки для зміни політики виконання:
Крок 1) Відкрийте командний рядок PowerShell з підвищеними правами, клацнувши правою кнопкою миші PowerShell і вибравши Запуск від імені адміністратора.
Крок 2) Виконайте команди нижче.
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- Enter
Yу запиті підтвердження. Get-ExecutionPolicy
Перший сценарій PowerShell
Відкрийте Блокнот і введіть:
Write-Host "Hello, Guru99!"
Збережіть файл за допомогою .ps1 розширення — наприклад, FirstScript.ps1.
У PowerShell запустіть скрипт з наступним:
& "X:\FirstScript.ps1"
Що таке PowerShell ISE?
Команда Windows Інтегроване середовище сценаріїв PowerShell (ISE) — це редактор за замовчуванням для PowerShell. В ISE можна запускати команди, писати тести та налагоджувати скрипти в графічному середовищі на основі вікон. Він підтримує багаторядкове редагування, розфарбовування синтаксису, автодоповнення табуляцією, вибіркове виконання тощо.
PowerShell ISE також пропонує консольну панель, яка безпосередньо виконує команди, а бічні панелі відображають вихідний код ваших скриптів та будь-які інструменти, підключені до ISE. Ви можете відкривати кілька вікон скриптів одночасно — це корисно під час налагодження скриптів, які залежать від функцій, визначених в інших скриптах або модулях.
Відтворіть попередній скрипт в ISE:
- Вставте код у редактор.
- Збережіть скрипт.
- Натисніть F5, щоб запустити його.
- Спостерігайте за виводом у консольній області.
Зразок 2: наступний скрипт відображається безкоштовно віртуальна пам'ять на машині.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell Concepts
Наведені нижче поняття формують словник повсякденної роботи з PowerShell.
| Концепція | Опис |
|---|---|
| Командлети | Вбудовані команди, написані мовами .NET, такими як VB або C#. Розробники розширюють набір, завантажуючи або пишучи оснастки PowerShell. |
| Функції | Команди, написані мовою PowerShell, без потреби в IDE, такі як Visual Studio. |
| Сценарії | Текстові файли на диску з .ps1 розширення. |
| додатків | існуючий Windows програми, що викликаються з оболонки. |
| А якщо | Наказує командлету не виконуватися, а описувати, що станеться, якщо це станеться. |
| підтвердити | Наказує командлету запитувати перед виконанням. |
| Verbose | Забезпечує вищий рівень деталізації операцій. |
| Debug | Наказує командлету видавати налагоджувальну інформацію. |
| ErrorAction | Визначає, що робить командлет у разі помилки. Допустимі значення: continue, stop, silentlycontinue, inquire. |
| ErrorVariable | Називає змінну, яка містить інформацію про помилку. |
| OutVariable | Наказує командлету зберігати вивід у певній змінній. |
| ЗBuffer | Зберігає певну кількість об'єктів перед тим, як відправити їх по конвеєру. |
Переваги використання скриптів PowerShell
- Скрипти PowerShell потужні та лаконічні — ви можете досягти багато чого лише кількома рядками.
- Змінні оголошуються за допомогою
$<variable>синтаксис - Змінні можуть містити вивід команд, об'єкти та примітивні значення.
- Тип змінної не потрібно явно вказувати.
PowerShell проти командного рядка
| PowerShell | Командний рядок |
|---|---|
| Глибоко інтегрований з WindowsПропонує інтерактивний командний рядок та повну мову сценаріїв. | Інтерфейс командного рядка за замовчуванням надається MicrosoftПроста програма Win32, яка взаємодіє з іншими об'єктами Win32. |
| Використовує командлети, які можна викликати інтерактивно або через сценарії автоматизації. | Без командлетів. |
| Обробляє вивід як об'єкти, щоб він міг передаватися до іншого командлета через конвеєр. | Вивід – це звичайний потік тексту, а не об'єктів. |
| Розширені функції, можливості та внутрішня архітектура. | Базова оболонка, що підходить для застарілих пакетних завдань. |
Застосування PowerShell
PowerShell став стандартним вибором для ІТ-адміністраторів, оскільки він значно скорочує зусилля у великих корпоративних мережах. Уявіть собі, що ви керуєте більш ніж чотирма сотнями серверів та розгортаєте нове рішення безпеки, яке залежить від певної служби, що працює на кожному хості.
Ручний вхід на кожен сервер є повільним і схильним до помилок. Один скрипт PowerShell може оглянути кожен сервер за лічені хвилини, повідомити, на яких хостах вже запущено службу, і навіть увімкнути її на решті. Скрипт фіксує намір один раз і надійно застосовує його по всій мережі.
















