Powershell: як працювати з програмою, створювати, запускати і змінювати скрипти

0
998
Powershell: як працювати з програмою, створювати, запускати і змінювати скрипти

Не один рік минув з моменту виходу Windows 7 і Server 2008. Програмісти, системні адміністратори і просунуті користувачі знайшли безліч застосувань синього віконця, схожим з командним рядком. Початківці ж юзери в більшості своїй навіть не знають, що таке PowerShell (PS). А адже скрипти для PowerShell дозволяють автоматизувати, без малого, 100% дій і сценаріїв, що виконуються в операційній системі допомогою командного рядка і графічного інтерфейсу. З основними можливостями цієї програми і ознайомимося, більше уваги приділивши функції створення і запуску скриптів (мікропрограм).

Керівництв і документації по програмі існує незліченна кількість. Завдання статті – дати користувачеві концептуальні знання, ввести в курс справи, а чи варто знайомитися з інтерпретатором і виконанням скриптів в ньому ближче, вирішить кожен самостійно.

Зміст:

  • Що являє собою Windows PowerShell?
  • Командлети
  • Конвеєр
  • Скрипти
  • Перш ніж користуватися скриптами
  • Запуск PowerShell
  • Пуск
  • Командний інтерпретатор
  • Win+X
  • Визначення політики безпеки
  • Запуск скриптів

Що являє собою Windows PowerShell?

PowerShell – інтерпретатор командного рядка CMD на основі .NET Framework, наділений власною мовою сценаріїв. Перше означає, що він працює в текстовому режимі: вводиш запускаєш команду, а на екрані бачиш результат її виконання. Як це було в MS-DOS і старих версіях UNIX’а. Друга значно спрощує, прискорює і автоматизує адміністрування, обслуговування систем, програм, процесів і пов’язаних з ними сервісів адміністраторами і простими користувачами.

Для Vista, XP і більш старих редакцій Windows, якщо їх хтось використовує, PowerShell можна встановити пакет Windows Management Framework.

Порівняно з іншими інтерпретаторами, PS відрізняється:

  • інтеграцією з .NET Framework – дозволяє створювати потужні скрипти, впроваджуючи в них програмний код;
  • всі повертаються дані є об’єктами, а не даними текстове/рядкового типу (string), що передбачає їх передачу іншим скриптам і будь-яку обробку.
Вигляд вікна PowerShell

PowerShell другої версії володіє наступними можливостями, частина з яких розглянемо детальніше:

  • Можливість подання команд у вигляді командлетів – їх запуск здійснюється всередині інтерпретатора, в іншому випадку команда виконується в окремому процесі.
  • Використання конвеєрів – призначені для передачі даних з однієї команди в іншу зі збереженням їх структури та типу.
  • Інтегрована багатопотокова передача даних по мережі з установкою пріоритетності і відновленням з’єднання.
  • Підтримка позиційних та іменованих параметрів.
  • Фонова робота – асинхронний виклик команд і запуск скриптів на віддалених машинах.
  • Установка обмежених сесій з віддаленими клієнтами та виконання сценаріїв на них.
  • Модулі – спосіб організації скриптів, коли вони стають самодостатніми і виконуються у власному контейнері, не впливаючи на оточення модуля.
  • Наявність обробника помилок.
  • Графічна середовище для мови: синтаксис, відладчик, подсветка, автоматичне завершення команд з підтримкою Юнікод і закладок.
  • Додавання точок переривання в рядки, команди, операції та змінні для налагодження сценарію.
  • Блокові і підрядкові коментарі.
  • Підтримка створення аліасів для деяких командлетів, преобразовивающихся у звичайні команди в момент виконання.
  • Створення обмежених сесій, де можна виконувати строго заданий перелік команд і дуже багато іншого.

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

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

Командлети

Командлети – своєрідні команди PS, за якими ховаються різні функції. Вбудовані в інтерпретатор команди реалізовані за принципом «дієслово-іменник», наприклад, Get-Process (отримання списку процесів). Таке рішення дозволяє розуміти суть команди вже з її назви (англійською мовою).

Частина командлетів підтримує отримання/передачу даних і масивів інформації зі збереженням їх структури та типу. Це працює за принципом конвеєра (мова про це піде в наступному розділі). Незважаючи ні на що, командлети запускаються і обробляють об’єкти строго порядку.

Для реалізації командлетів можуть використовуватися будь-які підтримувані .NET API, створені на будь-якому з .NET мов. Таким чином юзеру надається доступ до специфічних функцій програми. Командлети вміють експлуатувати API для отримання доступу до необхідної інформації безпосередньо або через унікальні шляху (букви дисків і шляху до теки). За допомогою командлетів можна працювати з реєстром Windows, об’єктами файлової системи і сховища сертифікатів, встановленими додатками і службами.

Конвеєр

При створенні не дуже примітивних сценаріїв або для виконання будь-яких операцій з даними, отриманими в результаті роботи скрипта деколи доводиться також здійснювати які-небудь дії. Для цього існує конвеєр. Як і в UNIX, він об’єднує команди шляхом передачі вихідних даних однієї команди у вхідні для іншого в незмінному вигляді, зберігаючи свій тип. При цьому не потрібні ніякої контейнер або посимвольний розбір інформації.

В склад переданої інформації може входити і функція. Після закінчення роботи об’єднаних команд викликається функція перетворення інформації у текстовий вигляд (конвертація даних в рядкові) із застосуванням форматування тексту.

Скрипти

Незважаючи на те, що оболонка дозволяє автоматизувати багато дій, вводити команди потрібно вручну, як і у випадку з командним рядком, що не дуже зручно. Особливо, коли одні і ті ж операції слід виконувати постійно.

Та й без людського фактора не обійтися: помилки, помилки, випадково заторкнуті клавіші при написанні строчок коду, виправлення або набір рядка заново вимагають більш дружнього ставлення до користувача. Для виконання одноманітних ланцюжків дій PS реалізовані сценарії – текстові файли з послідовністю зрозумілих для інтерпретатора команд всередині.

Скрипти в PowerShell ще більше спрощують і автоматизують роботу за ПК і його обслуговування, особливо, якщо в сценарії присутні розгалуження, умови, логічні операції та цикли.

Але тут не все золото, що блищить»: написати власний сценарій або завантажити готовий (нехай і трохи підігнавши його під власні цілі) так просто не вийде.

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

Для виконання макросу в Windows PS необхідно пройти контроль його запуску. Якщо він не пройдено, а скрипт повинен виконатися, доведеться змінити конфігурацію відповідають за безпеку макросів об’єктів.

Перш ніж користуватися скриптами

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

Запуск скачаного скрипта на машині користувача – простий і дієвий варіант розповсюдження шкідливого програмного забезпечення або крадіжки персональної інформації зловмисниками.

Все відбувається із-за елементарного незнання вмісту скриптової файлу (ps1) і бажання швидше вирішити свої завдання за рахунок праці інших. Об’єкти, що контролюють рівень безпеки виконання сценаріїв, створюють оточення, в якому запустити скрипт неможливо.

Навмисний запуск макросів відбувається після зміни рівня безпеки, якщо юзер дасть добро, усвідомлюючи, що він робить, і знаючи напевно, що у файлі *.ps1 знаходиться.

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

Оболонка володіє трьома рівнями безпеки:

  • файли з розширенням ps1 не ідентифікуються системою як виконуються і позначаються як невідомі або текстові (по подвійному кліку відкриваються у використовуваному на комп’ютері за замовчуванням текстовому редакторі);
  • оболонка дозволяє виконувати скрипти після вказівки до них повного шляху, скриптові файли в поточній директорії не шукаються, роблячи неможливим виконання макросів, розташованих в поточному каталозі;
  • запуск вбудованого скрипта Execution Policy, відповідає за додавання в перелік дозволених скриптів необхідного.

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

Існує і поняття політики виконання, створеної з метою запобігти випадковий запуск сценаріїв. Налаштувань політики запуску існує цілих п’ять:

  • обмежені – встановлені за замовчуванням, виконуються тільки підписані Microsoft сценарії, що дозволяють отримувати інформацію про апаратної і програмної оболонки комп’ютера;
  • мають підпис видалених файлів – виконувати всі макроси можна, але завантажені з інтернету або надіслані поштою файли повинні бути підписаними;
  • мають цифровий підпис від надійного джерела – виконуються всі підписані сценарії;
  • необмежені – запуск будь-яких макросів;
  • обхідні – призначені для програмістів, які створюють власну систему безпеки, а не використовують представлену в оболонці.

Перевірити поточний стан політики запуску можна командою «Get-ExecutionPolicy». Якою б не була політика безпеки, користувач не зможе запустити скрипт, в якому містяться команди, на виконання яких у нього недостатньо привілеїв.

Запуск PowerShell

Від теорії пора переходити до практики. Отже, для виконання скриптів необхідно отримати цифровий підпис або знизити політику безпеки (другий варіант простіший). Викликати вікно PowerShell можна кількома шляхами.

Представлений у двох видах:

  • класична консоль;
Вікно PowerShell
  • PowerShell ISE – додає підтримку вкладок, синтаксису, контекстної довідки, контекстного та головного меню, що значною мірою полегшує роботу в інтерпретаторі.
Зовнішній вигляд PowerShell ISE

Пуск

Найпростіше викликати PS через Пуск.

  • Відкриваємо меню (Windows 7 клікаєм «Всі програми»).
  • Йдемо в каталог Windows PowerShell і клікаєм по потрібній іконці.
Запуск PS через Пуск

Також викликати PS через можна за допомогою інтегрованої пошукової системи.

Запуск PS через пошук

Командний інтерпретатор

Хто любить нестандартні і швидкі способи запуску, скористайтеся вікном «Виконати». Воно відкривається однойменною кнопкою у Пуску і комбінацією клавіш Win+R.

У діалоговому вікні пишемо «powershell» і тиснемо «Enter».

Запуск PS через діалог «Виконати»

Win+X

У Windows 10 PS можна викликати з меню WinX. Справа в тому, що за замовчуванням шляхом кліка по команді «Командний рядок» відкриваємося CMD. Її можна замінити на PowerShell.

Відкриваємо «Властивості Панелі завдань, у вкладці «Навігація» ставимо галочку біля єдиною опції і зберігаємо налаштування.

Заміна командного рядка на PowerShell в меню WinX

Можна викликати PowerShell через командний рядок, прописавши в ній «powershell» або запуском виконуваного файлу по дорозі: %WINDIR%System32WindowsPowerShellv1.0 для 32-бітних систем та за адресою %WINDIR% syswow64WindowsPowerShellv1.0 для 64-розрядних Windows будь-якої редакції.

Запуск PS з каталогу, де зберігається його виконуваний файл

Визначення політики безпеки

Залишилося небагато – дозволити виконання скриптів PowerShell. Прописуємо команду «Set-ExecutionPolicy RemoteSigned» і натискаємо «Y».

Зміна політики виконання

На цьому все. Тепер можете виконувати будь-які команди cmdlet і скрипти. Спробуємо, наприклад, відобразити список активних процесів, виконавши «Get-Process».

Результат виконання першої команди

Запуск скриптів

Створювати сценарії можна в будь-якому текстовому редакторі (краще зупинитися на Win, Notepad++ або подібного, з підтримкою синтаксису або перевірки) або в програмі PowerShell ISE. Остання надає зручний доступ до командлетів, можливості запуску, налагодження та збереження сценаріїв.

Припустимо, що свій перший скрипт ви написали (це отримання переліку запущених процесів), зберегли через меню «Файл», і його потрібно запустити. Робиться це трьома шляхами:

1 Прописуємо повний шлях до скрипта в PowerShell (або ISE);

Запуск першого скрипта шляхом прописування шляху до нього

2 Через контекстне меню файлу ps1;

Запуск сценарію через контекстне меню

3 Відкриваємо сценарій в PowerShell ISE і тиснемо F

Запуск скриптів з вікна PowerShell ISE

Важливо, щоб в шляху до файлу відсутні прогалини!

PowerShell – потужний засіб для спрощення виконання рутинних операцій в Windows 7, Server 2008 і нових. Важливе гідність PowerShell – скрипти і наявність версії програми з графічним інтерфейсом PS ISE. Команди в ній представлені у вигляді командлетів, що зробить можливим ознайомлення з оболонкою і розуміння сенсу кожної команди. Політика безпеки не дасть новачкові нашкодити своєму комп’ютера отриманими з невідомих джерел скриптами, а режим відладки, створення власних командлетів, функцій та механізм обробки помилок відкривають перед програмістами, адміністраторами необмежені можливості.

Оцініть статтю

НАПИСАТИ ВІДПОВІДЬ

Please enter your comment!
Please enter your name here