Skip to main content

Школа Geek: Дізнайтеся, як автоматизувати Windows за допомогою PowerShell

Школа Geek: Дізнайтеся, як автоматизувати Windows за допомогою PowerShell

Geoffrey Carr

У цьому виданні Geek School ми допоможемо Вам зрозуміти потужну мову сценаріїв PowerShell, побудовану прямо в Windows, і надзвичайно корисна для знання в IT-середовищі.

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

Вступ

PowerShell - це найпотужніший інструмент автоматизації, який Microsoft може запропонувати, і його оболонка та мова скриптів.

Зверніть увагу, що ця серія базується на PowerShell 3, яка постачається з Windows 8 і Server 2012. Якщо ви використовуєте Windows 7, будь ласка, завантажте оновлення PowerShell 3, перш ніж продовжити.

Знайомтеся з консоллю та ISE

Є два способи взаємодії з PowerShell з коробки, консолі та інтегрованого середовища сценаріїв, також відома як ISE. ISE значно покращився з приголомшливої ​​версії, яка постачається разом з PowerShell 2, і її можна відкрити, натиснувши комбінацію клавіш Win + R, щоб відкрити вікно пробілу, а потім набравши powerhell_ise і натиснувши enter.

Оскільки ви можете побачити спорт ISE з роздільним представленням, щоб ви могли швидко скрипт, у той час як він все ще може бачити результат у нижній половині ISE. Нижня частина ISE, де надруковано результати вашого сценарію, також може використовуватися як відповідь REPL - подібно до командного рядка. V3 ISE, нарешті, додав підтримку intellisense як на панелі скриптів, так і на інтерактивній консолі.

Крім того, ви можете взаємодіяти з PowerShell за допомогою консолі PowerShell, що я буду використовувати для більшої частини цієї серії. Консоль PowerShell веде себе так само, як командний рядок - ви просто вводите команди, і це виділяє результати. Щоб відкрити консоль Windows PowerShell, знову натисніть комбінацію клавіш Win + R, щоб відкрити вікно пробілу та наберіть power shell, після чого натисніть enter.

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

Використання довідкової системи

У попередніх версіях PowerShell файли довідки були включені, коли ви встановили Windows. Це було гарним рішенням здебільшого, але залишило нам значну проблему. Коли команда довідки PowerShell припинила працювати над файлами довідки, розробники PowerShell все ще займалися кодуванням та внесення змін. Це означало, що після надсилання PowerShell файли довідки були невірними, оскільки вони не містять нових змін, внесених до коду. Щоб вирішити цю проблему, PowerShell 3 не має файлів довідки з коробки та містить оновлювану довідкову систему. Це означає, що перш ніж робити що-небудь, що ви хочете завантажити останні файли довідки. Ви можете зробити це, відкривши Консоль PowerShell і запустивши:

Update-Help

Вітаємо із запуском вашої першої команди PowerShell! Справді, команда Update-Help має набагато більше можливостей, ніж просто просто запустити її, і щоб побачити їх, ми хочемо переглянути довідку для команди. Щоб переглянути довідку для команди, ви просто передаєте назву команди, яку ви хочете отримати з параметром Name для команди Get-help, наприклад:

Get-Help –Name Update-Help

Ви, напевно, цікавитеся, як все-таки тлумачити весь цей текст, я маю на увазі, чому в розділі синтаксису є дві інформації, і чому там так багато дужок у всьому місці? По-перше, спочатку: причиною є два блоки інформації в розділі синтаксису, тому що вони представляють різні способи запуску команди. Вони технічно називаються наборами параметрів, і ви можете використовувати їх лише за один раз (ви не можете змішувати параметри з різних наборів). На наведеному вище скріншоті ви можете побачити, що верхній набір параметрів має параметр SourcePath, а нижній - не. Причина полягає в тому, що ви використовуватимете верхній набір параметрів (той, який включає SourcePath), якщо ви оновлювали свої файли довідки з іншого комп'ютера у вашій мережі, яка вже завантажила їх, тоді як вам не потрібно буде вказати вихідний шлях, якщо ви просто хотів захопити останні файли від Microsoft.

Щоб відповісти на друге запитання, існує певний синтаксис, який допомагає виконати файли, і тут це:

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

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

Get-Help –Name Update-Help –Full

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

Get-Help –Name *service*

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

Безпека

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

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

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

C: unme.ps1

Або якщо ви вже знаходяться в корені диска C, ви можете використовувати наступне:

. unme.ps1

Нарешті, PowerShell має щось називається "Політика виконання", яка зупиняє вас від простого запуску будь-якого старого сценарію. Фактично, за замовчуванням, ви не можете запускати жодного сценарію, і вам потрібно змінити вашу політику виконання, якщо ви хочете дозволити їм запускати їх. Існує 4 відомі правила виконання:

  • Обмежений: Це конфігурація за замовчуванням у PowerShell. Цей параметр означає, що сценарій не може працювати, незалежно від його підпису. Єдине, що можна запустити в PowerShell за допомогою цього параметра - це окрема команда.
  • AllSigned: Цей параметр дозволяє сценаріям працювати в PowerShell. Сценарій повинен мати пов'язаний цифровий підпис від надійного видавця. Перед запуском скриптів з надійних видавців з'явиться запит.
  • RemoteSigned: Цей параметр дозволяє запускати скрипти, але вимагає, щоб сценарій та файли конфігурації, завантажені з Інтернету, пов'язані з цифровим підписом від надійного видавця. Сценарії, запущені на локальному комп'ютері, не потрібно підписувати. Перед запуском сценарію немає підказок.
  • Необмежений: Це дозволяє запускати непідписані сценарії, включаючи всі сценарії та файли конфігурації, завантажені з Інтернету. Це включатиме файли з Outlook і Messenger. Ризик тут полягає в запуску скриптів без підпису та безпеки. Ми відновили, що ви ніколи не користуєтеся цим налаштуванням.

Щоб дізнатись, яка ваша поточна політика виконання, відкрийте консоль PowerShell і введіть:

Get-ExecutionPolicy

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

Примітка. Це потрібно буде зробити з підвищеної консолі PowerShell.

Set-ExecutionPolicy RemoteSigned

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


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


Якщо у вас є будь-які питання, ви можете зателефонувати мені @taybgibb або просто залишити коментар.

Link
Plus
Send
Send
Pin