Що таке PowerShell? Як відкрити PowerShell, всі методи Що являє собою Windows PowerShell

💖 Подобається?Поділися з друзями посиланням
73095

І вивчаючи меню пуск Windows 7 або початковий екран Windows 8 1, користувачі-початківці нерідко відкривають для себе додатки, призначення яких їм не зрозуміло. Саме одна з таких програм — PowerShell. Що ж таке цей самий PowerShell і чи є від нього хоч якийсь толк? Ну, якщо його хтось придумав і інтегрував у Windows, значить, толк все-таки є. До речі, цим самим PowerShell, що придумав, є компанія Microsoft.


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

Що вміє цей інструмент адміністрування?Багато чого. З його допомогою системні адміністратори та досвідчені користувачі можуть керувати процесами, службами, файловими сховищами, акаунтами та навіть серверами. Також оболонка дозволяє запускати зовнішні командипрацювати з об'єктами .NET, COMі XML, робити різні трюки і т.п., створювати і виконувати власні сценарії. До речі, для написання скриптів у Windows передбачено спеціальну графічну консоль. ISE, що є свого роду доповненням до основної оболонки PowerShell.

Як і консоль CMD, оболонка PowerShell має свій набір команд, які називаються командлетами. Утиліта розпізнає багато команд CMD, але в цілому синтаксис мови, визначення командлетів та їх параметрів відрізняються від того, що користувачі звикли бачити у звичайному командному рядку. Крім того, знайомі команди начебто dir , cd , copy і т.п., які чудово розуміються PowerShell, насправді є псевдонімами. Наприклад, команда Dir , що служить для перегляду файлової системивідповідає «рідному» командлету Get-ChildItem. Псевдоніми або як заведено говорити, аліаси, служать чисто для зручності.

Розібратися з PowerShell користувачу-початківцю, особливо якщо той незнайомий хоча б з основами звичайного командного рядка, буде непросто. А посібників та довідників, досить зрозумілих та простих для засвоєння, не так уже й багато. Є непоганий посібник, написаний Франком Кохом, з яким ми рекомендуємо ознайомитися, якщо ви все ж наважитеся приступити до вивчення скриптової мови PowerShell. Ну, і звісно, ​​власна довідкова система оболонки.

Вона потужна та розгорнута, з безліччю конкретних прикладів. Користуватися їй досить просто. Основна інформація щодо довідкової системи виводиться командлетом Get-Help. Командлет виводить список усіх доступних команд.

PowerShell має ряд режимів виконання, які визначають, який тип коду дозволяється виконувати. Все це управляється ключем реєстру, який живе в HKLM. Існує 4 різних режимувиконання:

Обмежений(Restricted): Політика виконання за умовчанням, не допускає роботу скриптів і дозволяє лише інтерактивних команд.

Усі підписані(All Signed): Допускає роботу всіх скриптів. Щоправда, всі скрипти та конфігураційні файли повинні бути підписані видавцем, якому ви довіряєте; даний режим наражає вас на ризик роботи підписаних (але шкідливих) скриптів, після отримання підтвердження довіри видавцеві.

Видалені підписані(Remote Signed): Локальні скрипти працюють без підпису. Усі скачані скрипти повинні мати цифровий підпис.

Необмежений(Unrestricted): Усі скрипти та файли конфігурації, отримані з комунікаційних програм, на зразок Microsoft Outlook, Internet Explorer, Outlook Express та Windows Messengerпрацюють після підтвердження, що ви розумієте, що файл виходить із Інтернету; ніякі цифрові підписине потрібні; Цей режим наражає вас на ризик роботи непідписаних, шкідливих скриптів.

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

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

Для зміни політики виконання на необмежену, запустіть нижченаведену команду в адміністративному PowerShell:

Set-ExecutionPolicy Unrestricted

Ви побачите запит підтвердження. Натисніть клавішу Enter.

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

Set-ExecutionPolicy Restricted

І знову ви побачите запит на підтвердження. Натисніть клавішу Enter.

От і все! Удачі вам!

є декілька різних способівзапуску скрипта, нижче наведені основні:

  1. Запустити оболонку PowerShellі в ній запустити скрипт (ввести шлях до файлу та ім'я файлу, наприклад, так: C:\Scripts\test.ps1, або перейти в папку скрипта командою cd C:\Scripts і запустити його командою.\test.ps1) Оболонку можна знайти та запустити безліччю способів. Один із способів – через меню "Пуск". Для Windows 7 - потрібно зайти до "Всі програми" - "Стандартні" - " Windows PowerShellі запустити оболонку "Windows PowerShell". Для Windows 10 - потрібно знайти групу на букву "W" і в ній ви знайдете "Windows PowerShell".
  2. Запустити "Інтегроване середовище сценаріїв Windows PowerShell ISE"- Це програма - середовище розробки, що дозволяє редагувати і налагоджувати скрипти PowerShell, яка є за замовчуванням разом з самим PowerShell. Запустивши її, потрібно просто натиснути кнопку "Відкрити" або зайти в меню Файл - Відкрити і вибрати потрібний скрипт, потім натиснути F5 або кнопку "Виконати скрипт". .
  3. Запустити стандартний командний рядокі в ній написати:
    powershell -file<имя_скрипта> (Приклад: powershell -file myscript.ps1)

Якщо ви раніше не запускали скрипти PowerShell, то, швидше за все, ви отримаєте повідомлення: Неможливо завантажити файл<имя_скрипта>, оскільки виконання скриптів заборонено даної системи. Введіть "get-help about_signing" для отримання додаткових відомостей. Пов'язано це з тим, що з міркувань безпеки та недопущення випадкового виконання шкідливого коду, всі скрипти мають бути підписані цифровим підписом.

Як дозволити виконання непідписаного скрипта PowerShell?

1. В оболонці PowerShell, перед тим як запускати скрипт, виконати команду, яка дозволяє виконання непідписаних скриптів для поточного сеансу оболонки:

Set-ExecutionPolicy RemoteSigned -Scope Process

2. Під час запуску зі стандартного командного рядкавикористовувати параметр -executionpolicy, тобто. запускати скрипт так:

<имя_скрипта>

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

3. Дозволити запуск назавжди: запустити оболонку PowerShell від імені адміністратора, потім виконайте команду:

Set-ExecutionPolicy RemoteSigned

Примітка:Якщо скрипт був завантажений з інтернету, то щоб уникнути запиту на підтвердження запуску, потрібно замість RemoteSigned використовувати Bypass. повне відключеннябудь-яких запитів та попереджень.

Як запустити скрипт PowerShell у фоновому режимі?

Для цього достатньо використовувати параметр запуску -WindowStyle, який може набувати значень: Normal, Minimized, Maximized і Hidden. Таким чином, щоб запустити непідписаний скрипт у фоновому режимі, потрібно виконати команду:

powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file<имя_скрипта>

Також можна ще за бажання додати -NonInteractive, щоб скрипт не ставив жодних питань. Таким чином, скрипт виконається непомітно для користувача. Будьте уважні, використовуючи такий спосіб.

Запуск скрипта PowerShell з параметрами

Власне запуск потрібно робити якби ви запускали звичайну програмуабо bat-файл із параметрами. Наприклад, для запуску скрипта з параметрами з командної можна написати таку команду:

powershell -executionpolicy RemoteSigned -file<имя_скрипта>param1 param2 "ще один текстовий параметр"

У самому скрипті ви можете отримати ці параметри так:

Param ($var1, $var2, $var3) echo $var1, $var2, $var3

В інтегрованому середовищі PowerShell ISE запустити скрипт з параметрами можна аналогічно, використовуючи область команд.

Як запустити скрипт PowerShell за допомогою ярлика?

Здійснити таке завдання можна двома способами:

  1. Створити bat/cmd файл, у якому прописати команду для запуску скрипта (з параметрами ви ознайомились вище)
  2. Створити ярлик на PowerShell, який можна знайти в папці c:\Windows\System32\WindowsPowerShell\v<версия>\ та у властивостях ярлика в полі "Об'єкт" дописати необхідні параметри.

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

Скриптова мова PowerShell - досить потужний інструмент для вирішення різних завдань, але його можна використовувати не тільки для хороших речей, але і на шкоду, тому користуйтеся ним з розумом;)

У цій статті ми розглянемо таку технологію від компанії Microsoft як Windows PowerShell, ми поговоримо про те, що таке PowerShell, що таке командлети та конвеєр, як писати сценарії та модулі, а також торкнемося інших не менш важливих і корисних можливостей Windows PowerShell.

До появи PowerShell існували ( і існують) наступні інструменти для автоматизації та адміністрування сервісів: командний рядок Windows та Windows Script Host. Але ці технології мають недоліки.

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

Більшість програмних продуктів має консольний інтерфейс, тобто. ми можемо керувати програмою, використовуючи командний рядок, при цьому заощаджуючи ресурси за рахунок відсутності витрат на роботу графічного інтерфейсу. Компанія Microsoft для серверної операційної системи Windows Serverнавіть випускає редакції без графічного інтерфейсу ( Server Core, у Windows Server 2016 навіть є Nano Server), але цього недостатньо, оскільки можливості командного рядка обмежені, тобто. написати якусь складну логіку для автоматизації чогось ми не зможемо, а якщо і зможемо, то на це нам знадобиться час і знання.

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

Технологія Windows Script Host дозволяє виконувати всі адміністративні завдання, що й командний рядок, включаючи їхню автоматизацію шляхом написання WSH скриптів, але тут ми вже можемо використовувати повноцінні мови програмування ( VBScript та JScript), тобто. можна реалізовувати складну логіку та алгоритми. До того ж за допомогою WSH ми керуємо програмними продуктами через об'єктний інтерфейс, тобто Windows Script Host. крутіше» ніж командний рядок. Але дана технологіятакож не стала тим ідеальним інструментом адміністрування та автоматизації цього адміністрування для системних адміністраторів, тому що Windows Script Host вимагав знань перелічених вище мов програмування, що для системних адміністраторів насправді зайве. Адміністраторам потрібно лише простий інструмент адміністрування з можливістю запрограмувати якісь дії, а заглиблюватися в об'єктні моделі програмних продуктів мовами програмування VBScript та JScript їм не хочеться.

У результаті компанії Microsoft необхідно було розробити такий інструмент адміністрування для системних адміністраторів, який на 100 відсотків задовольняв би всі потреби сисадмінів як у плані можливостей адміністрування та автоматизації, так і в плані зручності та простоти використання, таким чином, з'явився Windows PowerShell.

Що таке Windows PowerShell?

Windows PowerShell– це мова сценаріїв та командна оболонка Windows, які розроблені для адміністрування та конфігурування операційних систем Windows. PowerShell розроблено на основі середовища CRL та платформи.NET Framework і на відміну від командного рядка, який приймає та повертає текст, Windows PowerShell працює з об'єктами. Кожен об'єкт PowerShell має властивості та методи, які можна використовувати для керування цими об'єктами.

У Windows PowerShell Microsoft розробила концепцію командлетів ( cmdlets), яка є системою іменування команд « Дієслово-Іменник». Ця системадозволяє системним адміністраторам швидше освоїти та спростити роботу з PowerShell.

З допомогою Windows PowerShell можна:

  • Отримувати доступ до файлової системи;
  • Керувати реєстром;
  • Управляти службами;
  • Керувати процесами;
  • Налаштовувати операційну систему;
  • Встановлювати програмне забезпечення;
  • Встановлювати ролі та компоненти сервера;
  • Здійснювати адміністрування та конфігурування ролей та компонентів сервера;
  • Писати та використовувати сценарії для автоматизації управління та адміністрування;
  • Виконувати інші завдання системних адміністраторів.

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

Також для зручності багато часто використовувані команди та утиліти PowerShell мають синоніми ( Alias), наприклад cls - це синонім командлета Clear-Host, dir синонім Get-ChildItem ( повний списоксинонімів можна подивитися шляхом запуску командлета Get-Alias).

Для спрощення пошуку потрібної команди в PowerShell є спеціальний командлет Get-Command, за допомогою якого можна здійснювати пошук як дієсловом, так і іменником. Усі команди Windows PowerShell згруповані в модулі ( наприклад, Hyper-V, NetTCPIP), що також полегшує пошук потрібної команди.

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

Get-Help Get-Command

Довідка в Windows PowerShell може бути короткою, детальною ( параметр -Detailed), повною ( параметр -Full), а також можна виводити лише приклади ( параметр — Examples). Наступна команда покаже лише приклади використання командлета Get-Command:

Get-Help Get-Command -Examples

Довідка PowerShell, що оновлюється, тобто. її можна оновити командою Update-Help.

Версії Windows PowerShell

Перша версія PowerShell 1.0 з'явилася 14 листопада 2006 і випускалася у вигляді окремого дистрибутива, який можна було встановити на наступні версії операційних систем Windows: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 і Windows Vista.

У Windows Server 2008 PowerShell 1.0 поставлявся як компонент, який також потрібно було встановлювати.

Починаючи з Windows 7 і Windows Server 2008 R2, PowerShell постачається як невід'ємний компонент системи ( тобто. встановлений, встановлювати його не треба). Нижче наведено таблицю відповідності версії PowerShell та версії операційної системи Windows ( тобто. яка версія PowerShell за промовчанням встановлена ​​в тій чи іншій версії Windows):

Версія PowerShell Версії Windows
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Server 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Server 2016

З кожною новою версією PowerShell стає все більш потужним інструментом адміністрування, для порівняння в першій PowerShell було близько 130 командлетів, а PowerShell 5.0 їх вже більше 600!

Дізнатись поточну версію PowerShell можна за допомогою властивості PSVersion вбудованої змінної $PSVersionTable, наприклад, виконайте таку команду:

$PSVersionTable.PSVersion

Або запустіть командлет

Get-Variable -Name PSVersionTable -ValueOnly

де значення PSVersion і буде версією PowerShell.

Мова PowerShell

PowerShell– це об'єктно-орієнтована скриптова мова програмування. Він використовується для написання команд управління всіма компонентами операційної системи Windows в оболонці Windows PowerShell, а також для написання сценаріїв автоматизації завдань адміністрування в інтегрованому середовищі сценаріїв Windows PowerShell (ISE). Мова PowerShell хоч і створена для завдань адміністрування, вона є повноцінною скриптовою мовою програмування, оскільки має програмні конструкції, які є в кожній мові програмування, такі як: умови, цикли, обробка помилок, робота зі змінними, об'єктами, масивами.

Мова PowerShell має єдиний синтаксис написання команд та структуру іменування цих команд за принципом « Дієслово-Іменник», що робить цю мову інтуїтивно зрозумілою як програмістів, так системних адміністраторів.

Оболонка Windows PowerShell

Оболонка Windows PowerShell- Це середовище виконання команд та сценаріїв на мові PowerShell. Дана оболонка має ті ж можливості, що і командний рядок такі як: зберігання історії виконання команд, налаштування зовнішнього виглядуоболонки, завершення виконання команд поєднанням клавіш Ctrl+C, а також багато інших можливостей, яких немає в оболонці командного рядка, наприклад, така чудова можливість як « підсвічування синтаксису» ( з'явилася у PowerShell 5.0).

Запустити оболонку PowerShell можна кількома способами, наприклад:

  • З командного рядка, набравши PowerShell;
  • Через діалогове вікно Виконати» ( клавіші Win+R), також набравши PowerShell;
  • У Windows 7 - Пуск->Всі програми ->Стандартні ->Windows PowerShell -> Windows PowerShell;
  • У Windows 8.1 або Windows Server 2012 R2 - Пуск->Всі програми ->Службові ->Windows PowerShell;
  • У Windows 10 або Windows Server 2016 - Пуск->Всі програми -> Каталог Windows PowerShell ( у групі W) -> Windows PowerShell.

Приклад запуску PowerShell у Windows Server 2016

Скріншот оболонки PowerShell у Windows Server 2016

Командлети у PowerShell

Командлет (cmdlet) – це команда Windows PowerShell, за допомогою якої можна здійснювати взаємодію з об'єктами операційної системи з метою їхнього керування. Ці команди є частиною мови PowerShell. Командлети збудовані за принципом « Дієслово-Іменник», розділені дефісом (-); іншими словами, ми спочатку вказуємо, що робити, а через дефіс над чим. Наприклад, командлет Get-Help, де Get це дієслово, що означає « Отримати», а Help - іменник Допомога» у контексті PowerShell « Показати – Довідку». Командлети PowerShell повертають результати у вигляді об'єктів, що є однією з головних відмінностей від командного рядка Windows, у якому команди повертають лише текст на екран.

Крім командлетів отримання даних (Get), існують і такі типи командлетів як:

  • Add – додавання даних;
  • Clear – очистити;
  • Enable – увімкнути;
  • Disable – вимкнути;
  • New – створити;
  • Remove – видалити;
  • Set - задати;
  • Start - запустити;
  • Stop – зупинити;
  • Export – експортувати;
  • Import – імпортувати;
  • І ще багато інших.

Повний список командлетів у Windows PowerShell можна переглянути за допомогою спеціального командлета Get-Command. Наприклад, запустіть його з параметром -CommandType cmdlet, у результаті на екрані з'явиться список командлетів.

Get-Command -CommandType cmdlet

Як Ви вже зрозуміли, командлети мають параметри, за допомогою яких ми можемо конкретизувати дії командлета. Параметри бувають обов'язкові та необов'язкові, наприклад, командлет Get-Command обов'язкових параметрів немає.

Нижче на малюнку представлений спосіб пошуку командлета по дієслову ( параметр Verb). У цьому випадку у нас відобразився список командлетів, які вміють перезапускати щось.

Команда

Get-Command -Verb Restart

Для пошуку командлета по іменнику необхідно використовувати параметр Noun. Наприклад, ми отримали список командлетів, які працюють зі службами.

Команда

Get-Command -Noun Service

Якщо Ви не знайшли потрібний командлет за повною назвою, можете використовувати маску у форматі *Текст*.

Конвеєр у PowerShell

Однією з головних можливостей Windows PowerShell є можливість використання конвеєра під час виконання команд.

Конвеєр– це передача результату роботи командлета через вертикальну межу (|) іншому командлету. При цьому, як Ви пам'ятаєте, в PowerShell командлети працюють з об'єктами та повертають об'єкти, відповідно конвеєру передаються також об'єкти.

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

Наприклад, давайте дізнаємося назву найбільшого файлу в каталозі «C:\Windows\System32» ( простий приклад конвеєра).

Команда

Get-ChildItem -Path "C:\Windows\System32" -File | Sort-Object length -Descending | Select-Object -First 1

  • Get-ChildItem – командлет отримання об'єктів у вказаному каталозі;
  • Sort-Object – командлет для сортування об'єктів, у нашому випадку ми сортуємо за розміром файлу ( length -Descending);
  • Select-Object – командлет вибору необхідних якостей об'єкта, у разі ми виводимо стандартні поля і лише перший об'єкт, тобто. великий файл (параметр -First 1).

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

Фонове виконання завдань

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

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

У Windows PowerShell для роботи з фоновими завданнями є наступні командлети:

  • Start-Job – запустити фонове завдання;
  • Stop-Job – зупинити фонове завдання
  • Get-Job – переглянути список фонових завдань;
  • Receive-Job – переглянути результат виконання фонового завдання;
  • Remove-Job – видалити фонове завдання;
  • Wait-Job – перевести фонову задачу на передній план, щоб чекати її закінчення.

Для запуску у фоновому режимі необхідно написати команду Start-Job, а в фігурних дужках() команду або набір команд, які потрібно виконати у фоновому режимі.

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

Запуск завдання у фоновому режимі

Start-Job (Get-Service)

Дивимося на список завдань, запущених у фоновому режимі

Відображаємо результат роботи завдання Job1

Receive-Job Job1

Як бачимо, у нас з'явилося завдання зі статусом. Completed», тобто. вона вже виконалася ( просто Get-Service відпрацьовує швидко).

Щоб подивитися результат роботи фонової завдання, тобто. командлета Get-Service ми виконали команду Receive-Job і передали їй ім'я завдання ( можна і значення ідентифікатора). В результаті у нас відобразився перелік служб.

Дистанційне керування на PowerShell

Windows PowerShell розрахований не тільки на локальне використання, але і на віддалене виконання команд. Ця можливість потрібна, щоб Ви могли зі свого робочого місця керувати віддаленими комп'ютерами, тобто. виконувати команди PowerShell.

Існує кілька способів віддаленого керування:

  • За допомогою параметра -ComputerName (є у багатьох команд). Іншими словами Ви передаєте ім'я комп'ютера, на якому необхідно виконати команду, як параметр. Спосіб має недолік, оскільки обмежується виконанням однієї команди;
  • За допомогою сесій. Командлет Enter-PSSession (інтерактивний сеанс). У такий спосіб Ви підключаєтеся до віддаленому комп'ютеруі всі команди, які Ви набиратимете в оболонці PowerShell, будуть виконуватися на віддаленому комп'ютері так само, якби Ви набирали команди безпосередньо на віддаленому комп'ютері. Спосіб також має недолік, так як сеанс обмежується одним комп'ютером;
  • За допомогою командлету Invoke-Command. За допомогою даного способуВи можете виконувати команди або сценарії як на одному комп'ютері, так і на кількох.

Наприклад, щоб підключитися до віддаленого комп'ютера ( у прикладі нижче ServerName) інтерактивним сеансом виконайте таку команду:

Enter-PSSession ServerName

Сценарії, функції та модулі у Windows PowerShell

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

Суть даного механізму наступна, Ви пишіть потрібний Вам набір команд і зберігаєте його як сценарій – це простий текстовий файлз розширенням.PS1.

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

Важливо!

За промовчанням виконання сценаріїв у Windows заборонено! Щоб подивитися політику виконання сценаріїв, виконайте командлет Get-ExecutionPolicy. В результаті він поверне діючу політику, наприклад:

  • Restricted – блокується виконання будь-яких сценаріїв ( значення за замовчуванням);
  • AllSigned – дозволено виконання сценаріїв, які мають цифровий підпис;
  • RemoteSigned – дозволено виконання локальних сценаріїв, всі завантажені сценарії повинні мати цифровий підпис;
  • Unrestricted - дозволено виконання будь-яких сценаріїв ( не рекомендується, оскільки небезпечно!).

Для вирішення виконання сценаріїв необхідно використовувати командлет Set-ExecutionPolicyз одним із перерахованих вище параметрів.

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

Set-ExecutionPolicy RemoteSigned

У сценарії можна передавати параметри, робити їх обов'язковими або задавати значення за промовчанням.

У Windows PowerShell передбачено механізм створення власних функцій, які, як і вбудовані командлети, можна буде використовувати в оболонці PowerShell.

Для цього необхідно вказати ключове слово Function і потім у фігурних дужках () написати алгоритм роботи цієї функції, тобто. набір команд ( наприклад, якась процедура, що часто використовується: створити користувача з певними правами, очистити певні каталоги і так далі). Потім необхідно зберегти все це в сценарій, але вже з розширенням.psm1, оскільки цей файл буде вже модулем.

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

Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize

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

Інтегроване середовище сценаріїв Windows PowerShell (ISE)

Для того щоб було зручно писати сценарії, функції та відповідно модулі, компанія Microsoft розробила спеціальну графічну програму Integrated Scripting Environment(ISE) – інтегроване середовище сценаріїв. Працювати в цій програмі дуже зручно, до того ж вона має потужний функціонал. створення безлічі вкладок зі сценаріями, область виведення, вбудований відладчик та інше).

Запустити її можна так:

  • У Windows 7 - Пуск->Всі програми ->Стандартні ->Windows PowerShell -> Windows PowerShell ISE;
  • У Windows 10 або Windows Server 2016 - Пуск->Всі програми -> Каталог Windows PowerShell ( у групі W) -> Windows PowerShell ISE.

Примітка! ISE не буде працювати на системі Windows Server, встановлений у варіанті Server Core.

Скріншот інтегрованого середовища сценаріїв PowerShell (ISE) у Windows Server 2016

На цьому у мене все, сподіваюся, матеріал був Вам корисним! Успіхів!



Розповісти друзям