Не один рік минув з моменту виходу Windows 7 і Server 2008.
Програмісти, системні адміністратори і просунуті користувачі знайшли безліч застосувань синього віконця, схожим з командним рядком.
Початківці ж юзери в більшості своїй навіть не знають, що таке PowerShell (PS).
А адже скрипти для PowerShell дозволяють автоматизувати, без малого, 100% дій і сценаріїв, що виконуються в операційній системі допомогою командного рядка і графічного інтерфейсу.
З основними можливостями цієї програми і ознайомимося, більше уваги приділивши функції створення і запуску скриптів (мікропрограм).
Зміст:
Що являє собою Windows PowerShell?
PowerShell – інтерпретатор командного рядка CMD на основі .NET Framework, наділений власною мовою сценаріїв.
Перше означає, що він працює в текстовому режимі: вводиш запускаєш команду, а на екрані бачиш результат її виконання.
Як це було в MS-DOS і старих версіях UNIX’а.
Друга значно спрощує, прискорює і автоматизує адміністрування, обслуговування систем, програм, процесів і пов’язаних з ними сервісів адміністраторами і простими користувачами.
Порівняно з іншими інтерпретаторами, PS відрізняється:
- інтеграцією з .NET Framework – дозволяє створювати потужні скрипти, впроваджуючи в них програмний код;
- всі повертаються дані є об’єктами, а не даними текстове/рядкового типу (string), що передбачає їх передачу іншим скриптам і будь-яку обробку.
Рис. 1 – Вигляд вікна PowerShell
PowerShell другої версії володіє наступними можливостями, частина з яких розглянемо детальніше:
- Можливість подання команд у вигляді командлетів – їх запуск здійснюється всередині інтерпретатора, в іншому випадку команда виконується в окремому процесі.
- Використання конвеєрів – призначені для передачі даних з однієї команди в іншу зі збереженням їх структури та типу.
- Інтегрована багатопотокова передача даних по мережі з установкою пріоритетності і відновленням з’єднання.
- Підтримка позиційних та іменованих параметрів.
- Фонова робота – асинхронний виклик команд і запуск скриптів на віддалених машинах.
- Установка обмежених сесій з віддаленими клієнтами та виконання сценаріїв на них.
- Модулі – спосіб організації скриптів, коли вони стають самодостатніми і виконуються у власному контейнері, не впливаючи на оточення модуля.
- Наявність обробника помилок.
- Графічна середовище для мови: синтаксис, відладчик, подсветка, автоматичне завершення команд з підтримкою Юнікод і закладок.
- Додавання точок переривання рядка команди, операції та змінні для налагодження сценарію.
- Блокові і підрядкові коментарі.
- Підтримка створення аліасів для деяких командлетів, преобразовывающихся у звичайні команди в момент виконання.
- Створення обмежених сесій, де можна виконувати строго заданий перелік команд і дуже багато іншого.
Вихідний код PowerShell став доступним кожному: будь-який учасник спільноти може безперешкодно створювати власні розширення для збільшення функціонала інтерпретатора командного рядка.
Приступати до освоєння інтегрованого скриптової мови, не маючи навичок програмування, можна.
Створити складний сценарій вийде навряд чи, але виконувати послідовності примітивних дій вийде чи не у кожного.
Хоча, не володіючи знаннями про основні поняття PowerShell, зробити у вікні командного інтерпретатора навряд чи що-небудь вийде. З них і почнемо.
Командлети
Частина командлетів підтримує отримання/передачу даних і масивів інформації зі збереженням їх структури та типу. Це працює за принципом конвеєра (мова про це піде в наступному розділі). Незважаючи ні на що, командлети запускаються і обробляють об’єкти строго порядку.
Для реалізації командлетів можуть використовуватися будь-які підтримувані .NET API, створені на будь-якому з .NET мов.
Таким чином юзеру надається доступ до специфічних функцій програми.
Командлети вміють експлуатувати API для отримання доступу до необхідної інформації безпосередньо або через унікальні шляху (букви дисків і шляху до теки).
За допомогою командлетів можна працювати з реєстром Windows, об’єктами файлової системи і сховища сертифікатів, встановленими додатками і службами.
Конвеєр
При створенні не дуже примітивних сценаріїв або для виконання будь-яких операцій з даними, отриманими в результаті роботи скрипта деколи доводиться також здійснювати які-небудь дії.
Для цього існує конвеєр. Як і в UNIX, він об’єднує команди шляхом передачі вихідних даних однієї команди у вхідні для іншого в незмінному вигляді, зберігаючи свій тип.
При цьому не потрібні ніякої контейнер або посимвольный розбір інформації.
Скрипти
Незважаючи на те, що оболонка дозволяє автоматизувати багато дій, вводити команди потрібно вручну, як і у випадку з командним рядком, що не дуже зручно.
Особливо, коли одні і ті ж операції слід виконувати постійно.
Та й без людського фактора не обійтися: помилки, помилки, випадково заторкнуті клавіші при написанні строчок коду, виправлення або набір рядка заново вимагають більш дружнього ставлення до користувача.
Для виконання одноманітних ланцюжків дій PS реалізовані сценарії – текстові файли з послідовністю зрозумілих для інтерпретатора команд всередині.
Скрипти в PowerShell ще більше спрощують і автоматизують роботу за ПК і його обслуговування, особливо, якщо в сценарії присутні розгалуження, умови, логічні операції та цикли.
Але тут не все золото, що блищить»: написати власний сценарій або завантажити готовий (нехай і трохи підігнавши його під власні цілі) так просто не вийде.
Для виконання макросу в Windows PS необхідно пройти контроль його запуску.
Якщо він не пройдено, а скрипт повинен виконатися, доведеться змінити конфігурацію відповідають за безпеку макросів об’єктів.
Перш ніж користуватися скриптами
При експлуатації VBS виникає багато проблем, від яких розробники PowerShell позбулися геть, якщо скриптовую безпека не знижувати для задоволення скриптових запитів користувача або вирішення завдань, пов’язаних з рівнем захищеності операційної системи.
Запуск скачаного скрипта на машині користувача – простий і дієвий варіант розповсюдження шкідливого програмного забезпечення або крадіжки персональної інформації зловмисниками.
Навмисний запуск макросів відбувається після зміни рівня безпеки, якщо юзер дасть добро, усвідомлюючи, що він робить, і знаючи напевно, що у файлі *.ps1 знаходиться.
Через незручності конфігурації захисту для людей, які потребують реалізації і виконання власних сценаріїв існує можливість зміни конфігурації.
Тут можна знизити захист до мінімуму, так і розумно лавірувати між можливість відкрити дірки для проникнення шкідливого ПЗ в систему і зручністю в роботі з PowerShell.
Оболонка володіє трьома рівнями безпеки:
- файли з розширенням ps1 не ідентифікуються системою як виконуються і позначаються як невідомі або текстові (по подвійному кліку відкриваються у використовуваному на комп’ютері за замовчуванням текстовому редакторі);
- оболонка дозволяє виконувати скрипти після вказівки до них повного шляху, скриптові файли в поточній директорії не шукаються, роблячи неможливим виконання макросів, розташованих в поточному каталозі;
- запуск вбудованого скрипта Execution Policy, відповідає за додавання в перелік дозволених скриптів необхідного.
Існує і поняття політики виконання, створеної з метою запобігти випадковий запуск сценаріїв. Налаштувань політики запуску існує цілих п’ять:
- обмежені – встановлені за замовчуванням, виконуються тільки підписані Microsoft сценарії, що дозволяють отримувати інформацію про апаратної і програмної оболонки комп’ютера;
- мають підпис видалених файлів – виконувати всі макроси можна, але завантажені з інтернету або надіслані поштою файли повинні бути підписаними;
- мають цифровий підпис від надійного джерела – виконуються всі підписані сценарії;
- необмежені – запуск будь-яких макросів;
- обхідні – призначені для програмістів, які створюють власну систему безпеки, а не використовують представлену в оболонці.
Читайте також:
Що таке jQuery: де використовується і які переваги дає розробникам
Програми для шифрування файлів: Які краще вибрати?
Вита пара: способи обтиску, схема з’єднань
Перехідник DVI-D, VGA: розповідаємо про особливості, види та можливих проблемах, які можуть виникнути при використанні
Як встановити Ubuntu 16.04 – покрокова інструкція з докладними ілюстраціями
Запуск PowerShell
Від теорії пора переходити до практики. Отже, для виконання скриптів необхідно отримати цифровий підпис або знизити політику безпеки (другий варіант простіший).
Викликати вікно PowerShell можна кількома шляхами.
Представлений у двох видах:
- класична консоль;
Рис. 2 – Вікно PowerShell
- PowerShell ISE – додає підтримку вкладок, синтаксису, контекстної довідки, контекстного та головного меню, що значною мірою полегшує роботу в інтерпретаторі.
Рис. 3 – Зовнішній вигляд PowerShell ISE
Пуск
Найпростіше викликати PS через Пуск.
Рис. 4 – Запуск PS через Пуск
Також викликати PS через можна за допомогою інтегрованої пошукової системи.
Рис. 5 – Запуск PS через пошук
Командний інтерпретатор
Хто любить нестандартні і швидкі способи запуску, скористайтеся вікном «Виконати». Воно відкривається однойменною кнопкою у Пуску і комбінацією клавіш Win+R.
У діалоговому вікні пишемо «powershell» і тиснемо «Enter».
Рис. 6 – Запуск PS через діалог «Виконати»
Win+X
У Windows 10 PS можна викликати з меню WinX. Справа в тому, що за замовчуванням шляхом кліка по команді «Командний рядок» відкриваємося CMD. Її можна замінити на PowerShell.
Відкриваємо «Властивості Панелі завдань, у вкладці «Навігація» ставимо галочку біля єдиною опції і зберігаємо налаштування.
Рис. 7 – Заміна командного рядка на PowerShell в меню WinX
Можна викликати PowerShell через командний рядок, прописавши в ній «powershell» або запуском виконуваного файлу по дорозі: %WINDIR%\System32\WindowsPowerShell\v1.0 для 32-бітних систем та за адресою %WINDIR%\ syswow64\WindowsPowerShell\v1.0 для 64-розрядних Windows будь-якої редакції.
Рис. 8 – Запуск PS з каталогу, де зберігається його виконуваний файл
Читайте також:
Основні команди CMD Windows. Повний список + [опис і застосування]
Сіди і бенкети в контексті Інтернету: пояснюємо простою мовою що це таке
Збій запиту дескриптора пристрою USB. Усуваємо «помилку 43»
Як створити додаток для iOS – від ідеї до продажу
Визначення політики безпеки
Залишилося небагато – дозволити виконання скриптів PowerShell. Прописуємо команду «Set-ExecutionPolicy RemoteSigned» і натискаємо «Y».
Рис. 9 – Зміна політики виконання
На цьому все. Тепер можете виконувати будь-які команди cmdlet і скрипти. Спробуємо, наприклад, відобразити список активних процесів, виконавши «Get-Process».
Рис. 10 – Результат виконання першої команди
Запуск скриптів
Створювати сценарії можна в будь-якому текстовому редакторі (краще зупинитися на Win, Notepad++ або подібного, з підтримкою синтаксису або перевірки) або в програмі PowerShell ISE.
Остання надає зручний доступ до командлетів, можливості запуску, налагодження та збереження сценаріїв.
Припустимо, що свій перший скрипт ви написали (це отримання переліку запущених процесів), зберегли через меню «Файл», і його потрібно запустити. Робиться це трьома шляхами:
1 Прописуємо повний шлях до скрипта в PowerShell (або ISE);
Рис. 11 – Запуск першого скрипта шляхом прописування шляху до нього
2 Через контекстне меню файлу ps1;
Рис. 12 – Запуск сценарію через контекстне меню
3 Відкриваємо сценарій в PowerShell ISE і тиснемо F
Рис. 13 – Запуск скриптів з вікна PowerShell ISE