Geek School Дізнайтеся, як автоматизувати Windows за допомогою PowerShell
У цьому випуску Geek School ми допоможемо вам зрозуміти потужну мову сценаріїв PowerShell, створену безпосередньо в Windows, і надзвичайно корисно знати в ІТ-середовищі.
Хоча ця серія не структурована навколо іспиту, вивчення PowerShell є одним з найважливіших речей, які ви можете зробити в якості адміністратора мережі, так що якщо є одна річ, яку ви хочете навчитися допомагати своїй ІТ-кар'єрі, це саме те. Крім того, це дуже весело.
Вступ
PowerShell є найпотужнішим засобом автоматизації, який може запропонувати Microsoft, і його оболонка і мова сценаріїв.
Зауважте, що ця серія базується на PowerShell 3, що постачається з Windows 8 і Server 2012. Якщо ви працюєте з Windows 7, будь ласка, завантажте оновлення PowerShell 3, перш ніж продовжити.
Зустрічайте консоль та ISE
Існує два способи взаємодії з PowerShell з коробки, консолі та інтегрованого середовища сценаріїв - також відомого як ISE. ISE значно покращився від огидної версії, що поставляється з PowerShell 2, і можна відкрити, натиснувши комбінацію клавіш Win + R, щоб відкрити вікно запуску, потім набравши powershell_ise і натиснувши Enter.
Як ви можете бачити, ISE спорту розбивається, так що ви можете швидко сценарій, поки ще в змозі побачити результат в нижній половині ISE. Нижню половину ISE, де друкуються результати вашого сценарію, також можна використовувати як REPL підказку - подібно до командного рядка. V3 ISE нарешті додав підтримку для intellisense як в панелі сценаріїв, так і в інтерактивній консолі.
Крім того, ви можете взаємодіяти з PowerShell за допомогою консолі PowerShell, що я і використовую для більшої частини цієї серії. Консоль PowerShell працює так само, як і командний рядок - ви просто вводите команди і виводить результати. Щоб відкрити консоль Windows PowerShell, знову натисніть комбінацію клавіш Win + R, щоб відкрити вікно запуску та введіть powershell, а потім натисніть клавішу enter.
Запрошення REPL, як це, є приголомшливими для миттєвого задоволення: ви вводите команду і отримуєте результати. Незважаючи на те, що консоль не пропонує intellisense, вона пропонує те, що називається завершенням табуляції, яка функціонує однаково - просто почніть вводити команду та натискайте tab, щоб перемикати можливі збіги.
Використання довідкової системи
У попередніх версіях PowerShell файли довідки були включені під час інсталяції Windows. Це було гарним рішенням здебільшого, але залишило нам значну проблему. Коли команда допомоги PowerShell була змушена припинити роботу над файлами довідки, розробники PowerShell все ще були зайняті кодуванням та внесенням змін. Це означало, що під час доставки PowerShell файли довідки були неправильними, оскільки не містили нових змін, внесених до коду. Щоб вирішити цю проблему, PowerShell 3 поставляється без файлів допомоги з коробки і включає в себе поновлювану систему довідки. Це означає, що перш ніж робити що-небудь, потрібно завантажити останні файли довідки. Для цього можна відкрити консоль PowerShell і запустити:
Update-Help
Вітаємо з запуском першої команди PowerShell! Правда полягає в тому, що команда Update-Help має набагато більше можливостей, ніж просто запустити її, і щоб побачити їх, ми хочемо переглянути довідку для команди. Щоб переглянути довідку для команди, ви просто передаєте ім'я команди, до якої ви бажаєте допомогти, у параметр Ім'я команди Get-Help, наприклад:
Get-Help -Name Update-Help
Ви, напевно, задаєтеся питанням, як все-таки інтерпретувати весь цей текст, я маю на увазі, чому в розділі синтаксису є дві великої кількості інформації, і чому там так багато дужок? По-перше, перше: причиною існування двох блоків інформації в розділі синтаксису є те, що вони представляють різні способи запуску команди. Це технічно називані набори параметрів, і ви можете використовувати їх лише по одному (не можна змішувати параметри з різних наборів). На наведеному вище знімку вікна ви можете бачити, що верхній набір параметрів має параметр SourcePath, а нижній - не. Причина полягає в тому, що ви використовуєте верхній набір параметрів (той, що включає в себе SourcePath), якщо ви оновлювали файли довідки з іншої машини у вашій мережі, які вже завантажили їх, а вам не потрібно вказувати джерело, якщо ви просто хотів захопити останні файли від Microsoft.
Щоб відповісти на друге запитання, існує певний синтаксис, за яким слідують файли довідки.
- Квадратні дужки навколо імені параметра і його тип означає, що це необов'язковий параметр, і команда працюватиме нормально без нього.
- Квадратні дужки навколо назви параметрів означають, що параметри є позиційним параметром.
- Справа від параметра в кутових дужках говорить вам тип даних, який очікує параметр.
Хоча ви повинні навчитися читати синтаксис файлу довідки, якщо ви коли-небудь не впевнені в певному параметрі, просто додайте -Full до кінця вашої команди get help і прокрутіть вниз до розділу параметрів, де він розповість вам трохи більше про кожного параметр.
Get-Help -Name Update-Help -Повний
Останнє, що потрібно знати про систему допомоги, це те, як ви можете використовувати її для виявлення команд, що насправді дуже просто. Розумієте, PowerShell приймає символи-символи практично в будь-якому місці, тому їх використання разом з командою Get-Help дозволяє легко виявляти команди. Наприклад, я шукаю команди, які стосуються служб Windows:
Служба Get-Help -Name * *
Звичайно, вся ця інформація не може бути зручною, але повірте мені, знайдіть час і дізнайтеся, як використовувати систему допомоги. Це дуже зручно, навіть для досвідчених сценаристів, які робили це протягом багатьох років.
Безпека
Це не було б належним вступом без згадки про безпеку. Найбільше занепокоєння для команди PowerShell полягає в тому, що PowerShell стане останньою і найбільшою точкою атаки для скриптових дітей. Вони застосували кілька заходів безпеки, щоб переконатися, що цього не відбудеться, так що давайте поглянемо на них.
Найбільш основною формою захисту є те, що розширення файлу PS1 (розширення, яке використовується для позначення сценарію PowerShell) не зареєстровано на хості PowerShell, його фактично зареєстровано в Notepad. Це означає, що якщо ви двічі клацніть на файлі, він відкриється за допомогою блокнота замість запуску.
По-друге, ви не можете запускати сценарії з оболонки, просто ввівши ім'я сценарію, потрібно вказати повний шлях до сценарію. Отже, якщо ви хочете запустити сценарій на диску C, ви повинні ввести:
C: runme.ps1
Або якщо ви вже перебуваєте в корені диска C, ви можете використовувати наступне:
.runme.ps1
Нарешті, PowerShell має те, що називається Політика виконання, яка зупиняє вас від запуску будь-якого старого сценарію. Насправді, за замовчуванням ви не можете запускати будь-які сценарії і потрібно змінювати політику виконання, якщо ви хочете, щоб їм було дозволено запускати їх. Є 4 помітні правила виконання:
- Обмежений: Це налаштування за замовчуванням у PowerShell. Це налаштування означає, що сценарій не може працювати, незалежно від його підпису. Єдине, що можна запустити в PowerShell за допомогою цього параметра - це окрема команда.
- AllSigned: Цей параметр дозволяє запускати сценарії в PowerShell. Сценарій повинен мати відповідний цифровий підпис від надійного видавця. Перед запуском скриптів від надійних видавців з'явиться запит.
- RemoteSigned: Ця установка дозволяє запускати сценарії, але вимагає, щоб скрипт і файли налаштувань, завантажені з Інтернету, мали відповідний цифровий підпис від надійного видавця. Сценарії, запущені з локального комп'ютера, не потрібно підписувати. Немає підказок перед запуском сценарію.
- Необмежений: Це дозволяє запускати непідписані сценарії, включаючи всі скрипти та конфігураційні файли, завантажені з Інтернету. Це буде включати файли з Outlook і Messenger. Тут існує ризик запуску скриптів без підпису або безпеки. Ми відновили те, що ви ніколи не використовуєте цю установку.
Щоб дізнатися, як налаштовано поточну політику виконання, відкрийте консоль PowerShell і введіть:
Get-ExecutionPolicy
Для цього курсу та більшості інших обставин політика віддаленого дизайну є найкращою, тому змініть свою політику, використовуючи наведені нижче.
Примітка. Це потрібно зробити з підвищеної консолі PowerShell.
Set-ExecutionPolicy RemoteSigned
Це все для цього часу люди, бачите вас завтра для деякого більше PowerShell утіхи.
Відмова від відповідальності: Правильний термін для команди PowerShell є cmdlet, і відтепер ми будемо використовувати цю правильну термінологію. Було просто більш доречним назвати їх командами для цього вступу.
Якщо у вас є які-небудь питання, ви можете твітти мене @taybgibb, або просто залишити коментар.