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

385

Не один рік минув з моменту виходу Windows 7 і Server 2008.

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

Початківці ж юзери в більшості своїй навіть не знають, що таке PowerShell (PS).

А адже скрипти для PowerShell дозволяють автоматизувати, без малого, 100% дій і сценаріїв, що виконуються в операційній системі допомогою командного рядка і графічного інтерфейсу.

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

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

Зміст:

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

PowerShell – інтерпретатор командного рядка CMD на основі .NET Framework, наділений власною мовою сценаріїв.

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

Як це було в MS-DOS і старих версіях UNIX’а.

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

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

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

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

Рис. 1 – Вигляд вікна 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». Якою б не була політика безпеки, користувач не зможе запустити скрипт, в якому містяться команди, на виконання яких у нього недостатньо привілеїв.

Читайте також:

Що таке jQuery: де використовується і які переваги дає розробникам

Програми для шифрування файлів: Які краще вибрати?

Вита пара: способи обтиску, схема з’єднань

Перехідник DVI-D, VGA: розповідаємо про особливості, види та можливих проблемах, які можуть виникнути при використанні

Як встановити Ubuntu 16.04 – покрокова інструкція з докладними ілюстраціями

Запуск PowerShell

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

Викликати вікно PowerShell можна кількома шляхами.

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

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

Рис. 2 – Вікно PowerShell

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

Рис. 3 – Зовнішній вигляд PowerShell ISE

Пуск

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

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

    Рис. 4 – Запуск PS через Пуск

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

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

    Рис. 5 – Запуск PS через пошук

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

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

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

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

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

    Win+X

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

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

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

    Рис. 7 – Заміна командного рядка на PowerShell в меню WinX

     

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

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

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

    Читайте також:

    Основні команди CMD Windows. Повний список + [опис і застосування]

    Сіди і бенкети в контексті Інтернету: пояснюємо простою мовою що це таке

    Збій запиту дескриптора пристрою USB. Усуваємо «помилку 43»

    Як створити додаток для iOS – від ідеї до продажу

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

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

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

    Рис. 9 – Зміна політики виконання

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

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

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

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

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

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

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

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

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

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

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

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

    Рис. 12 – Запуск сценарію через контекстне меню

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

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

    Рис. 13 – Запуск скриптів з вікна PowerShell ISE

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