Введення у Power Shell

Перші кроки
Windows PowerShell 2.0 був випущений у складі Windows 7 та Windows Server 2008 R2 як невід'ємний компонент системи. Крім того, друга версія доступна і для інших систем, таких як Windows XP SP3, Windows Server 2003, Windows Vista SP1 і Windows Server 2008.
Windows PowerShell побудований на базі Microsoft NET Framework та інтегрований із ним. Додатково PowerShell надає зручний доступ до COM, WMI та ADSI, так само як і дозволяє виконувати звичайні команди командного рядка, щоб створити єдине оточення, в якому адміністратори змогли б виконувати різні завдання на локальних та віддалених системах.
Робота з командами
Розробники PowerShell оснастили цю оболонку спеціальною мовою сценаріїв, побудованою відповідно до стандарту .NET Framework. Команда PowerShell називається командлет або cmdlet в оригіналі. Командлет подібний до функції в тому плані, що він виконує конкретне завдання, наприклад витягує вміст папки або оновлює запис реєстру і має параметри, які можуть змінювати результат роботи команди.
В оболонку PowerShell вбудовано понад 100 команд. Також можна створювати додаткові команди, але при цьому слід користуватися мовою стандарту .NET, такою як Visual Basic .NET або C#.
Кожен варіант команди є комбінацією «дієслово-іменник». Це пояснюється тим, що фахівці Microsoft хотіли використовувати однакову схему іменування і полегшити вивчення, а також розширення оболонки PowerShell. Дієслово вказує на дію, що має бути здійснено, а іменник — на тип об'єкта, над яким буде здійснюватися дана дія. Наприклад, команда Get-ChildItem зчитує список елементів поточного робочого каталогу або контейнера,наприклад, реєстру. Для виконання команди потрібно ввести її у командному рядку PowerShell та натиснути клавішу введення. Результат роботи команди з'явиться відразу під введеною командою.

Мал. 1. Команда Get-ChildItem
Команди для отримання довідки
У комплект поставки PowerShell входить набір довідкових файлів і спочатку навчимося працювати з цими довідковими матеріалами. Щоб дізнатися, які команди є в PowerShell, скористаємося командою Get-Command. На малюнку 2 показаний результат роботи цієї команди, список команд. У цьому списку можна побачити імена команд та їх синтаксис, але немає опису того, що робить кожна з команд.

Рис 2. Команда Get-Command
Для отримання даних можна скористатися командою Get-Help. Якщо ми введемо тільки Get-Help, ми отримаємо довідку по ній самій.

Мал. 3. Команда Get-Help
Як видно з довідки по команді Get-Help, щоб отримати довідку по конкретній команді, потрібно ввести назву команди відразу після Get-Help. Подивимося довідку по вже відомій нам команді Get-Command. Для цього введемо:

Get-Command в даному випадку є параметром команди Get-Help і подібно до параметрів команд у командному рядку cmd.exe, параметри команд PowerShell надають відомості, необхідні командам для виконання їх роботи.

Читати рекомендую у паперовій формі.

Мал. 5. Команда Get-Help Get
Ми отримали список команд, що починаються з Get. Для роботи з файлами скористаємося командою Get-Content. Подивимося довідкову інформацію про команду Get-Content. Для цього введемо:

Мал. 6. Команда Get-HelpGet-Content
Як показано на малюнку 6, команда Get-Help Get-Content повертає опис команди Get-Content та відомості про її синтаксис. З цієї довідки ми дізналися, що команда Get-Content повертає вміст елемента, який у цьому випадку вказує на будь-який тип файлу в системі. У минулому адміністратору, можливо, довелося б скористатися командою For для роботи з пакетними файлами або об'єктом File-SystemObject у сценарії Windows Script Host (WSH), але в середовищі PowerShell необхідно просто виконувати команду Get-Content. Щоб отримати докладнішу інформацію про синтаксис, потрібно додати до команди параметр -full:

Мал. 7. Команда Get-Help Get-Content -full
Зазначимо, що параметр -full не є основним значенням. Параметри цього називаються параметрами-переключателями, оскільки вони хіба що перемикають лінію поведінки команд.
Пункт Потрібно? (Required англ.) вказують на те, чи є цей параметр обов'язковим чи ні. Коли змінна Потрібна? (Required англ.) має значення true, параметр потрібно включати до команди. Якщо ж змінної потрібно? (Required англ.) встановлено значення false, то цей параметр є не обов'язковим і його можна не вказувати при використанні команди.
Значення Позиція? (Position англ.) дозволяє судити про те, чи потрібно присвоювати параметр ім'я або на нього можна посилатися за його позицією. Коли змінної позиції? (Position англ.) присвоєно значення named, з цього випливає, що з посиланням на цей параметр необхідно вказувати його ім'я. Коли ж значення змінної позиції? (Position англ.) виражено числом, параметр можна посилатися на його ім'я чи просто вказувати значення параметра у його коректної позиції.
Наприклад, як показано на малюнку 8, під час виконання команди Get-Content потрібно вказувати параметр -Path, розглянемо цей параметр докладніше.

Мал. 8. Параметр -Path
У змінній Потрібно? стоїть значення true, це означає, що цей параметр обов'язковий для команди Get-Content. У змінній позиції? варто значення 1, це означає, що можна не вказувати назву параметра при його введенні, потрібно лише ввести його відразу після назви команди (перша позиція).

Мал. 9. Команда Get-Content E:01.txt
де E:01.txt – це параметр -Path

Мал. 10. Файл E:01.txt.
Якщо значення параметра містить пробіли, таке значення слід укладати у лапки.
У розділі довідки ПАРАМЕТРИ за іменем кожного параметра наведено відомості, укладені в кутові дужки ( ). Ці відомості вказують на тип даних, до якого має належати значення параметра. Як показано малюнку 8, значення параметра -Path має бути рядковим (string). Якщо за назвою типу вказані квадратні дужки [ ] (string[]), це означає, що значення параметра можна використовувати рядковий масив. У разі використання параметрів-перемикачів, таких як, наприклад, параметр -Full, які не приймають значень, тип даних буде вказаний як .

Мал. 11. Параметр -Full
Слід зазначити ще одну функцію PowerShell, що стосується параметрів, це функція автоматичного завершення введення комбінації «параметр-ім'я». Користувач повинен лише ввести достатню кількість літер, що становлять ім'я параметра, щоб його можна було відрізнити від інших параметрів. Так, команда Get-Help Get-Content-full еквівалентна команді Get-Help Get-Content-ful. У розділі довідки ПРИМІТКИ також є приклади того, як можна використовувати ту чи іншу команду. На малюнку 12показано 3 приклади використання команди Get-Help.

Мал. 12. Приклади використання команди Get-Help
Отримання довідок з концепцій


Мал. 14. Команда Get-Help about_aliases
На малюнку 14 показана частина даних довідки, отримані в результаті роботи команди Get-Help about_aliases. Як бачимо, у файлі довідки міститься огляд дій, націлених створення псевдонімів в PowerShell і управління ними.
Використання псевдонімів
Імена деяких команд можуть бути досить довгими, а це не може не дратувати, якщо доводиться щоразу вводити команди з клавіатури. На щастя розробники PowerShell передбачили можливість використання псевдонімів для звернення до команд. Псевдонім — альтернативне ім'я, яке зазвичай буває набагато коротшим, ніж фактичне ім'я команди. PowerShell включає низку вбудованих псевдонімів, на додаток до яких користувачі можуть створювати власні псевдоніми.

Мал. 15. Команда Get-Alias
Під поточним сеансом мається на увазі поточне з'єднання із процесором PowerShell. Під час запуску PowerShell користувач починає новий сеанс роботи; цей сеанс продовжується доти, доки користувач не закриє PowerShell, перериваючи цим з'єднання. На додаток до всіх вбудованих псевдонімів та асоційованих з ними команд, Get-Alias відображає всі псевдоніми, створені під час поточного сеансу, а також псевдоніми, задані в профілях, які являють собою налаштування конфігурації, що визначаються користувачем, що завантажуються в PowerShell кожного разу при запуску оболонки.

Мал. 16. Команда Get-Alis -definition Get-ChildItem
Як показано на малюнку 16, PowerShell включає три псевдоніми для зверненнядо команди Get-ChildItem, це gci, ls та dir. Замість команди можна використовувати будь-який з них. Таким чином, кожна з чотирьох команд видає список вмісту каталогу C: :

Мал. 17. Команди Get-ChildItem c: і dir c:
Якщо ми хочемо створити свій власний псевдонім PowerShell, то нам допоможе команда Set-Alias. Створимо псевдонім для команди Get-Help. Використовуємо скорочення hlp. Потрібна нам команда виглядатиме так:

Мал. 18. Команда Set-Alias hlp Get-Help та створений псевдонім hlp
Після цього щоразу, коли потрібно виконати команду Get-Help, ви можете користуватися псевдонімом hlp. Цим псевдонімом можна буде використовувати до завершення сеансу (тобто до закриття оболонки PowerShell). Зверніть увагу, що при визначенні псевдоніма можливість включення параметрів не передбачена, можна використовувати лише ім'я команди. Якщо ви хочете визначити посилання на команду та її параметри, слід створити спеціальну функцію.