Введення у Power Shell

power

Перші кроки

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 та натиснути клавішу введення. Результат роботи команди з'явиться відразу під введеною командою.

Get-Help

Мал. 1. Команда Get-ChildItem

Команди для отримання довідки

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

shell

Рис 2. Команда Get-Command

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

shell

Мал. 3. Команда Get-Help

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

shell

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

power
Багато цікавих матеріалів зі скриптингу в Windows можна взяти з цієї книги.

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

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:

Get-Help

Мал. 7. Команда Get-Help Get-Content -full

Зазначимо, що параметр -full не є основним значенням. Параметри цього називаються параметрами-переключателями, оскільки вони хіба що перемикають лінію поведінки команд.

Пункт Потрібно? (Required англ.) вказують на те, чи є цей параметр обов'язковим чи ні. Коли змінна Потрібна? (Required англ.) має значення true, параметр потрібно включати до команди. Якщо ж змінної потрібно? (Required англ.) встановлено значення false, то цей параметр є не обов'язковим і його можна не вказувати при використанні команди.

Значення Позиція? (Position англ.) дозволяє судити про те, чи потрібно присвоювати параметр ім'я або на нього можна посилатися за його позицією. Коли змінної позиції? (Position англ.) присвоєно значення named, з цього випливає, що з посиланням на цей параметр необхідно вказувати його ім'я. Коли ж значення змінної позиції? (Position англ.) виражено числом, параметр можна посилатися на його ім'я чи просто вказувати значення параметра у його коректної позиції.

Наприклад, як показано на малюнку 8, під час виконання команди Get-Content потрібно вказувати параметр -Path, розглянемо цей параметр докладніше.

PowerShell

Мал. 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.

shell

Мал. 12. Приклади використання команди Get-Help

Отримання довідок з концепцій

power

Get-Help

Мал. 14. Команда Get-Help about_aliases

На малюнку 14 показана частина даних довідки, отримані в результаті роботи команди Get-Help about_aliases. Як бачимо, у файлі довідки міститься огляд дій, націлених створення псевдонімів в PowerShell і управління ними.

Використання псевдонімів

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

power

Мал. 15. Команда Get-Alias

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

введення

Мал. 16. Команда Get-Alis -definition Get-ChildItem

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

shell

Мал. 17. Команди Get-ChildItem c: і dir c:

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

введення

Мал. 18. Команда Set-Alias ​​hlp Get-Help та створений псевдонім hlp

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