POWER SHELL урок 1

У наші дні з оболонкою Windows PowerShell знайомі вже чи не всі адміністратори. Багато завантажували її, експериментували з нею і вирішували нестандартні завдання, які іноді виконують в командній оболонці Windows через cmd.exe. Однак PowerShell - щось набагато більше, ніж просто DOS-подібна командна оболонка. Це середовище для роботи з командним рядком і виконання сценаріїв, побудована на основі Microsoft .NET Common Language Runtime (CLR) і .NET Framework. У середовищі PowerShell ви працюєте з об'єктами .NET. Структури папок, які ви бачите, або служби, до яких звертаєтеся, по суті, є екземплярами об'єктів, які представляють ці папки і служби; в цьому і полягає відмінність розглянутого продукту від інших командних оболонок, які здатні тільки обробляти тексти. Таким чином, PowerShell за своєю потужністю та ефективності набагато перевершує традиційні командні оболонки.

Щоб допомогти читачам скористатися всіма перевагами даного інструменту, я підготував серію статей, що роз'яснюють, як вирішувати різні завдання за допомогою PowerShell. На першому «уроці» я розповім про те, як приступити до використання PowerShell і як виконувати базові команди. Крім того, я роз'ясню, як отримувати довідкову інформацію в середовищі PowerShell при створенні цих команд і як використовувати в командах псевдоніми.

Перші кроки

Зараз PowerShell не поставляється з Windows, але починаючи з версії Windows Server 2008 положення зміниться. Посилання на ресурси, де можна завантажити PowerShell, а також відомості про цю оболонці доступні на Web-сторінці Windows PowerShell ( www.microsoft.com/powershell ). Перед завантаженням PowerShell необхідно встановити на своїй системі середу .NET Framework 2.0. Процес установки PowerShell не займає багато часу і не становить труднощів. Потрібно тільки подбати про те, щоб встановлювана версія PowerShell була сумісна з операційною системою. Microsoft випускає версії для Windows Server 2008 beta 3, Windows Vista, Windows XP SP2 і Windows Server 2003. При написанні даної роботи я користувався версією PowerShell для Windows XP.

По завершенні установки оболонки PowerShell можна відразу приступати до роботи. Для запуску PowerShell в меню Start потрібно вибрати пункт All Programs, потім виділити пункти Windows PowerShell 1.0 і Windows PowerShell. При появі вікна PowerShell в командному рядку відображається поточна робоча папка (на моїй системі це каталог C). Тепер можна приступати до написання і виконання команд PowerShell.

Робота з командами

Розробники PowerShell оснастили цю оболонку особливою мовою сценаріїв, побудованим у відповідності зі стандартом .NET Framework. Команда PowerShell, cmdlet подібна функції в тому плані, що вона виконує конкретне завдання, наприклад витягує вміст папки або оновлює запис реєстру.

В оболонку PowerShell вбудовано понад 100 команд. Можна створювати додаткові команди, але при цьому слід користуватися мовою стандарту .NET, таким як Visual Basic .NET або C #. У статтях про PowerShell мова буде йти тільки про вбудованих командах. Кожен варіант команди є комбінацією «дієслово-іменник»; пояснюється це тим, що фахівці Microsoft хотіли використовувати однакову схему іменування і тим самим полегшити вивчення, а також розширення оболонки PowerShell. Дієслово вказує на дію, яке належить зробити, а іменник - на тип об'єкту, на який буде спрямована дія. Наприклад, команда Get-ChildItem зчитує список елементів поточного робочого каталогу або контейнера, наприклад реєстру. Для виконання команди потрібно ввести її в командному рядку PowerShell і натиснути клавішу введення. Результати відображаються під командним рядком. Ось і все, що потрібно знати про виконання елементарних команд.

Напевно, не у всіх випадках відомо, чи існує команда для вирішення завдання, яку належить виконати, а іноді буває важко утримати в пам'яті ім'я тієї чи іншої команди. Список всіх команд може бути викликана за команду Get-Command. На екрані 1 відображена частина цього списку; там можна побачити імена команд і синтаксис, але не опис того, що саме робить відповідна команда. Для отримання цих відомостей можна скористатися командою Get-Help.

Для отримання цих відомостей можна скористатися командою Get-Help

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

У комплект поставки PowerShell входить набір довідкових файлів, до яких користувач може звертатися безпосередньо з командного вікна PowerShell за допомогою команди Get-Help. Для отримання довідкової інформації про ту чи іншій команді потрібно задіяти команду Get-Help з параметром -name. Слідом за цим параметром необхідно вказати ім'я команди, інформацію про яку потрібно отримати. Подібно параметрам команд процесора cmd.exe, параметри команд PowerShell надають відомості, необхідні командам для виконання їхньої роботи. Але на відміну від параметрів команд в середовищі cmd.exe (які можуть починатися з дефіса, косою риси або взагалі не мати передує символу), параметри команд PowerShell завжди починаються з дефіса, що служить ще одним підтвердженням послідовності схеми іменування, яка застосовується в PowerShell.

Тепер подивимося, як все це працює. Звернемося до прикладу. Одна з типових задач системного адміністратора полягає в тому, щоб читати текстові файли. Переглянувши список команд, представлений командою Get-Command, ви приходите до висновку, що це завдання може виконати команда Get-Content, але впевненості у вас немає. Для відображення довідкової інформації про команду Get-Content потрібно виконати наступну команду:

Get-Help -name Get-Content

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

Get-Help -name Get-Content -full

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

На екрані 3 показана частина відомостей, повернутих цією командою. Адміністратору потрібно буде прокрутити на своєму комп'ютері вікно або змінити його розміри так, щоб можна було переглянути весь вміст. У розділі PARAMETERS міститься інформація, необхідна для того, щоб включати в команду параметри. Зверніть увагу на дві важливі категорії інформації для кожного параметра: Required і Position.

Зверніть увагу на дві важливі категорії інформації для кожного параметра: Required і Position

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

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

Наприклад, як показано на екрані 3, при виконанні команди Get-Content потрібно вказувати параметр -path. Однак значення цього параметра можна вказувати в першій позиції без введення імені параметра, як в наступному прикладі:

Get-Content c: sample.txt

Якщо значення параметра містить прогалини, таке значення слід брати в лапки.

У розділі PARAMETERS за ім'ям кожного параметра слідують відомості, укладені в кутові дужки (). Ці відомості вказують на тип даних, до якого має ставитися значення параметра. Як показано на екрані 3, значення параметра -path має бути строковим. Якщо за рядком слів слід набір дужок ([]), це означає, що в якості значення параметра можна використовувати строковий масив.

У разі використання параметрів-перемикачів, які не приймають значень, дані будуть мати тип read. З таким типом даних визначається, наприклад, параметр -force команди Get-Content. Даний параметр скасовує обмеження, які могли б перешкодити виконанню команди. Скасування відбувається лише в тих випадках, коли параметр включається в команду.

Слід зазначити ще одну функцію PowerShell, що має відношення до параметрів, це функція автоматичного завершення введення комбінації «параметр-ім'я». Користувач повинен лише ввести достатню кількість букв, які складають ім'я параметра, щоб його можна було відрізнити від інших параметрів. Так, команда

Get-Content c: sample.txt -force

еквівалентна команді

Get-Content c: sample.txt -fo

Поряд з відомостями про параметри, необхідними для побудови команд, довідковий файл для команди Get-Content включає приклади, що ілюструють використання команди, корисні рекомендації в розділі Notes і ресурси, де розміщується додаткова інформація. Приємно відзначити, що довідкові файли передбачені для всіх команд - існують навіть довідкові файли з описом загальних концепцій.

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

У комплект поставки PowerShell входить набір довідкових файлів, що містять огляди різних концепцій. Кожен файл починається з символів «about_» і закінчується ім'ям розділу. Для перегляду алфавітного списку розділів about запустіть команду

Get-Help about *

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

Get-Help about_flow_control

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

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

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

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

Якщо потрібно переглянути псевдоніми, асоційовані з тієї чи іншої командою, точніше визначте команду Get-Alias. Наприклад, щоб переглянути псевдоніми, асоційовані з Get-ChildItem, виконайте команду

Get-Alias ​​|
Where-Object {$ _. Definition `
-match «Get-ChildItem»}

Ця команда включає в себе кілька елементів, про які я детально розповім на наступних уроках. Поки ж необхідно знати тільки наступне: вихідні дані команди Get-Alias ​​направляються в команду Where-Object, де фільтруються всі результати, які не відповідають Get-ChildItem. Якщо ви хочете познайомитися з псевдонімами, виділеними для іншої команди, замініть ім'я Get-ChildItem ім'ям цієї команди.

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

Get-ChildItem c: windows
dir c: windows
ls c: windows
gci c: windows

Get-ChildItem c: windows   dir c: windows   ls c: windows   gci c: windows

Для створення псевдоніма в рамках поточного сеансу користуйтеся командою Set-Alias. Наприклад, щоб створити псевдонім cnt для звернення до Get-Content, виконайте команду

Set-Alias ​​cnt Get-Content

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

перспективи

Отже, на першому уроці я познайомив вас з фундаментальними компонентами, необхідними для того, щоб приступити до дослідження і використання команд PowerShell, які складаються з однієї або з декількох команд. У наступних статтях я розповім про те, як використовувати ці команди, а також про те, як створювати сценарії, що дозволяють застосовувати всі наявні в PowerShell можливості. Поки ж просто почніть працювати з командами. За допомогою довідкового файлу PowerShell створюйте команди і вивчайте окремі концепції. Експериментуйте з різними параметрами і вчіться створювати, а також використовувати псевдоніми. Пройде зовсім небагато часу - і ви будете готові задіяти PowerShell при виконанні своїх повсякденних завдань.

Роберт Шелдон ( [email protected] ) - технічний консультант і автор великої кількості книг за технологіями Microsoft Windows і баз даних

Дополнительная информация

rss
Карта