Запуск powershell з cmd. Написання та запуск скриптів у PowerShell. Що таке PowerShell ISE

Всім привіт! Сьогодні невелика замітка на тему, як відкрити powershell від імені адміністратора. Нагадаю PowerShell, це потужна мова програмування та адміністрування від компанії Microsoft, щороку він обростає, все більшою кількістю командлетів та функціональностей. По суті, це заміна командного рядка Windows. Нижче розглянемо методи, що дозволяють його відкрити і налаштувати.
.

Методи відкриття оснастки PowerShell

Powershell дуже добре розвивається і з виходом Windows 10 отримав 4 версію, але у нас тема інша. Так як відкрити PowerShell? Все просто якщо у Windows XP, то ніяк. так він доставляється окремо, у всіх наступних релізах йде як вбудований компонент. Найуніверсальніший спосіб відкриття powershell це натиснути

Win+R та ввести powershell

Натиснувши enter у вас запуститися консоль PowerShell, проблема тільки в тому, що вона відкриється не від імені адміністратор. І в результаті багато команди виконати не вдасться, нижче дивимося як це зробити від імені адміну.

Як відкрити Windows PowerShell від імені адміністратора в Windows 8.1 і Windows 7

Відкрити windows powershell можна через запуск. У Windows 8.1, Windows 2012 R2 переходьте в пункт Службові - Windows і правим кліком вибираєте запустити від імені адміністратора.

У Windows 7 і Windows 2008 R2 це виглядає так Пуск > Стандартні > Windows PowerShell

Також можна створити ярлик у пункті завдання та клацнути по ньому правим кліком та вибрати відповідний пункт

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

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

Натискаємо кнопку "Додатково". У вас з'явиться додаткові характеристики. де потрібно виставити галку запуск від імені адміністратора.

Все дуже просто. Упевнений, що у вас тепер не виникне питання, як вам відкрити windows powershell. Ще корисним буває поміняти шрифт у вікні PowerShell.

Як відкрити PowerShell через контекстне меню кнопки «Пуск» у Windows 10

Компанія Microsoft все більше робить акцент з командного рядка у бік своєї сильної мови (PowerShell), і це логічно, оскільки його можливості з управління операційними системами сімейства Windows майже безмежні, а то й більше, ніж у графічному інтерфейсі. Починаючи з версії Windows 10 1709, у контекстному меню PowerShell замінив усім звичний cmd. Клацаєте правим кліком по кнопці пуск у Windows 10 та з контекстного меню, вибираємо відповідний пункт:

  1. Windows PowerShell
  2. Windows PowerShell (адміністратор) – це якраз і є режим з максимальними правами у Windows 10.

Запуск Windows PowerShell за допомогою пошуку у Windows 10

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

Запуск Windows PowerShell за допомогою меню Пуск у Windows 10

Щоб відкрити оболонку PowerShell з меню Пуск, відкрийте його і знайдіть пункт Windows PowerShell, він буде у вигляді папки, відкрийте його і запустіть відповідну версію.

Якщо клацнути правим кліком, то ви зможете запускати оболонку повершила від імені та з правами адміністратора.

Додаткові та універсальні методи запуску оболонки

Існують ще дуже специфічні способи відкриття оболонки з сильним мовою від Microsoft. Найбільш незграбний, це просто знайти виконуваний файл і запустити його прямо з розташування в системі. Переходимо у вашій Windows 10 по дорозі:

C:\Users\ім'я користувача\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell

У результаті у вас відкриється папка з ярликами, які є в меню "Пуск", можете їх запускати.

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

C:\Windows\System32\WindowsPowerShell\v1.0

І натиснувши на нього правим кліком, ви можете його завантажувати від імені адміністратора, з максимальними правами.

Також ви можете запустити віндоус PowerShell і з вікна командного рядка, для цього просто введіть у ньому чарівне слово і натисніть Enter.

Ну і ще нагадаю метод, запуск нового завдання з оснащення "Диспетчер завдань". Відкрийте "Диспетчер задач", виберіть пункт меню "Файл - Запустити нове завдання"

У вікні, введіть PowerShell.

Ну і останній відомий мені метод, це запуск PowerShell через провідник Windows 10, для цього відкрийте провідник, виберіть пункт меню "Файл - запустити Windows PowerShell", тут будуть обидва режими.

Що таке PowerShell ISE

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

powershell шрифт змінюється дуже просто перейдіть у властивості на вкладку Шрифт, де ви можете встановити розмір від 5 до 72.

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

Тут налаштування шрифту трохи інші, разом із зміною, змінюється і розмір консолі.

На вкладці Кольори, можна задати колір шрифту в powershell та й самого вікна. Зробивши його, наприклад, чорним, як командний рядок.

Також раджу, якщо ви активний консольник виставити розмір буфера не в 50 команд, а хоча б у 100.

Дякую за увагу. Ось такі методи, відкриття консолі Power Shell в Windows. Матеріал сайту

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

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

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

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

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

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

Що таке Windows PowerShell?

PowerShell- Інтерпретатор на основі .NET Framework, наділений власною мовою сценаріїв.

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

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

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

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

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

PowerShell другої версіїмає такі можливості, частину з яких розглянемо докладніше:

  • Можливість подання команд у вигляді командлетів- їх запуск здійснюється всередині інтерпретатора, інакше команда виконується в окремому процесі.
  • Використання конвеєрів– призначені передачі даних з однієї команди в іншу зі збереженням їх структури та типу.
  • Інтегрована багатопотокова передача данихпо мережі з встановленням пріоритетності та відновленням з'єднання.
  • Підтримка позиційних та іменованих параметрів.
  • Фонова робота– асинхронний виклик команд та запуск скриптів на віддалених машинах.
  • Встановлення обмежених сесій із віддаленими клієнтамита виконання сценаріїв на них.
  • Модулі– спосіб організації скриптів, коли вони стають самодостатніми і виконуються у власному контейнері, не впливаючи на оточення модуля.
  • Наявність оброблювача помилок.
  • Графічна середовище для мови: синтаксис, відладчик, підсвічування, автоматичне завершення команд з підтримкою Юнікод та закладок.
  • Додавання точок переривання в рядки, команди, операції та змінні для налагодження сценарію.
  • Блокові та підрядкові коментарі.
  • Підтримка створення аліасів для деяких командлетів, що перетворюються на звичайні команди в момент виконання.
  • Створення обмежених сесій,де можна виконувати строго заданий перелік команд і багато іншого.

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

Починати освоєння інтегрованої скриптової мови, не маючи навичок програмування, можна.

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

Хоча, не володіючи знаннями про основні поняття PowerShell, зробити у вікні командного інтерпретатора навряд чи вийде що-небудь. З них і почнемо.

Командлети

Командлети- своєрідні команди PS, за якими ховаються різні функції. Вбудовані в інтерпретатор команди реалізовані за принципом «дієслово-іменник», наприклад, Get-Process (отримання списку процесів). Таке рішення дозволяє розуміти суть команди вже з її назви (англійською мовою).

Частина командлетів підтримує отримання/передачу даних та масивів інформації із збереженням їх структури та типу. Це працює за принципом конвеєра (мова про це піде у наступному розділі). Незважаючи ні на що, командлети запускаються та обробляють об'єкти строго порядку.

Для реалізації командлетів можуть використовуватися будь-які підтримувані.NET API, створені на будь-якій.NET-мовах.

Таким чином користувачеві надається доступ до специфічних функцій програми.

Командлети вміють для отримання доступу до необхідної інформації безпосередньо чи через унікальні шляхи (літери дисків та шляхи до директорій).

За допомогою командлетів можна працювати , об'єктами файлової системи та сховища сертифікатів, встановленими програмами та службами.

Конвеєр

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

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

При цьому не потрібні ніякі контейнери або посимвольні розбір інформації.

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

Скрипти

Незважаючи на те, що оболонка дозволяє автоматизувати безліч дій, вводити команди потрібно вручну, що не дуже зручно.

Особливо, коли ті самі операції слід виконувати постійно.

Та й без людського фактора не обійтися: помилки, помилки, випадково зачеплені клавіші при написанні рядків коду, виправлення або набір рядка знову вимагають більш доброзичливого ставлення до користувача.

Для виконання одноманітних ланцюжків процесів у PS реалізовані сценарії – текстові файли з послідовністю зрозумілих інтерпретатора команд всередині.

Скрипти в PowerShell ще більше спростять і автоматизують роботу за ПК та його обслуговування, особливо якщо у сценарії присутні розгалуження, умови, логічні операції та цикли.

Але тут "не все золото, що блищить": написати власний сценарій або завантажити готовий (нехай і трохи підігнавши його під власні цілі) так просто не вийде.

Якби вMicrosoftце дозволили, скільки б бід наробили скрипти дляPowerShell , написані шахраями та недоброзичливцями в корисливих чи хуліганських цілях

Для виконання в Windows PS необхідно пройти контроль запуску.

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

Перш ніж користуватися скриптами

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

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

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

Навмисний запуск макросів відбувається після зміни рівня безпеки, якщо користувач дасть добро, усвідомлюючи, що він робить, і знаючи напевно, що у файлі *.ps1 знаходиться.

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

Тут можна як знизити захист до мінімуму, так і розумно лавірувати між можливістю відкрити дірки для проникнення та зручністю в роботі з PowerShell.

Оболонка має три рівні безпеки:

  • файли з розширенням ps1 не ідентифікуються системоюяк виконувані та позначаються як невідомі або текстові (за подвійним кліком відкриваються у текстовому редакторі, що використовується на комп'ютері за замовчуванням);
  • оболонка дозволяє виконувати скрипти після вказівки до них повного шляху, скриптові файли в поточній директорії не шукаються, унеможливлюючи виконання макросів, розташованих у поточному каталозі;
  • запуск вбудованого скрипту Execution Policy, який відповідає за додавання до переліку дозволених скриптів необхідного.

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

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

  • обмежені –встановлені за замовчуванням, виконуються лише підписані Microsoft сценарії, що дозволяють отримувати інформацію про апаратну та програмну оболонку комп'ютера;
  • які мають підпис віддалених файлів- Виконувати можна всі макроси, але або надіслані поштою файли повинні бути підписаними;
  • мають цифровий підпис від надійного джерела- Виконуються всі підписані сценарії;
  • необмежені- Запуск будь-яких макросів;
  • обхідні– призначені для програмістів, які створюють власну систему безпеки, а не використовують представлену в оболонці.

Перевірити стан політики запуску можна командою «Get-ExecutionPolicy» .Хоч би якою була політика безпеки, користувач не зможе запустити скрипт, в якому містяться команди, на виконання яких у нього недостатньо привілеїв.

Запуск PowerShell

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

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

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

  • класична консоль;

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

Пуск

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

  1. Відкриваємо меню(У Windows 7 натискаємо «Всі програми»).
  2. Ідемо до каталогу Windows PowerShellі клацаємо по потрібній іконці.

Мал. 4 – Запуск PS через Пуск

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

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

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

У діалоговому вікні пишемо "powershell"і тиснемо "Введення" .

Win+X

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

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

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

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

Налаштування політики безпеки

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

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

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

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

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

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

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

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

Важливо, щоб у дорозі до файлу були відсутні прогалини!

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

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

  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 - досить потужний інструмент для вирішення різних завдань, але його можна використовувати не тільки для хороших речей, але і на шкоду, тому користуйтеся ним з розумом;)

Досвідчені користувачі операційної системи Windows 10 могли чути про утиліту командного рядка PowerShell. Також з нею можуть бути знайомі ті, хто має досвід роботи з Windows 7 і 8.1. Після багатьох років використання програми командного рядка Windows та файлів формату.bat настав час познайомитися з більш функціональним інструментом.

PowerShell є цінним поповненням списку інструментів Windows і його масштаб може налякати деяких користувачів. Що це — скриптова мова чи командна оболонка? Не варто турбуватися: незважаючи на великі можливості, освоїти PowerShell під силу кожному.

Крок 1: встановлення

Для початку нам потрібна сама утиліта PowerShell. Якщо ви працюєте з Windows 10, у вас вже встановлена ​​версія PowerShell 5. Оновлення Windows 10 Anniversary Update використовує версію 5.1, але різниця непомітна. У Windows 8 і 8.1 використовується PowerShell 4, чого теж цілком достатньо. Установка PowerShell на Windows 7 не доставить проблем, але все ж таки пару зайвих кроків доведеться зробити. Зокрема, необхідно додатково встановити.Net Framework. Можна інсталювати Windows Management Framework, до складу якого входить PowerShell.

PowerShell має два інтерфейси. Досвідчені користувачі можуть вибрати повноцінний графічний інтерфейс відомий як Integrated Scripting Environment (ISE). Початківцям краще використовувати консоль PowerShell, простий текстовий інтерфейс у стилі командного рядка Windows або навіть DOS 3.2.

Щоб запустити PowerShell від імені адміністратора у Windows 10, натисніть кнопку «Пуск» і прокрутіть список програм до Windows PowerShell. У Windows 8.1 шукайте Windows PowerShell у папці System у Windows. У Windows 7 оболонка знаходиться в папці Accessories. В якості звичайного користувача PowerShell можна запустити так само, використовуючи ліву кнопку миші замість правої.

У будь-якій версії Windows можна застосувати пошук. Для зручності подальшого використання можна закріпити PowerShell на панелі завдань.

Крок 2: старі команди Windows

Синтаксис команд Windows PowerShell працює звичним чином. Наприклад, cdзмінює папки, dirпоказує список усіх файлів та папок усередині поточної папки.

Залежно від методу запуску консолі PowerShell можна почати c:\Windows\system32або в c :\Users\ . У прикладі на скріншоті використовується команда cd ..(з пропуском) для переходу на один рівень вгору за раз, потім запускається команда dirдля відображення списку файлів та папок у директорії C:\.

Крок 3: встановлення файлів допомоги

Команди начебто cdі dirне є активними командами PowerShell. Це так звані псевдоніми (aliases) – заміни справжніх команд PowerShell. Псевдоніми зручні для тих, хто має великий досвід роботи з командним рядком. Однак вони не торкаються глибин PowerShell.

Щоб почати знайомитись з можливостями PowerShell, наберіть helpта потрібну вам команду. На скріншоті показано команду .

Команда helpговорить, що dirє псевдонімом команди PowerShell Get-ChildItem. Якщо набрати get-childitemв PS C:\>, побачите те саме, що і при використанні команди dir.

Як зазначено внизу скріншота, файли допомоги PowerShell не встановлюються автоматично. Для їх отримання запустіть PowerShell від імені адміністратора та наберіть update-help. Встановлення файлів допомоги займе кілька хвилин, ряд модулів можуть бути відсутніми - наприклад, в даному випадку не встановилися Help for NetWNV і SecureBoot. Коли все готово, повна система допомоги завжди даватиме потрібні підказки.

Тепер наберіть команду get-helpі будь-яку цікаву для вас команду («cmdlet» мовою PowerShell, російською командлети), буде показано її опис. Наприклад, get-help get-childitemвидає список опцій get-childitem. Також можна вивести різні варіанти. Наприклад

get-help get-childitem -examples

видає сім детальних прикладів використання get-childitem. Команда

get-help get-childitem -detailed

включає ці сім прикладів і докладні роз'яснення кожного параметра в командлеті get-childitem.

Крок 4: отримання допомоги за параметрами

На скріншоті ви могли помітити два списки під Syntaxдля get-childitem. Наявність двох різних синтаксисів означає можливість застосування двох способів запуску командлет. Як тримати синтаксис окремо один від одного і що означає параметри? Відповідь проста, якщо знати трюк.

Для отримання подробиць щодо параметрів командлети get-childitemабо будь-який інший використовуйте параметр -Full:

get-help get-childitem -full

Це видає список того, що ви можете зробити з командлетою і що станеться. Дивіться скріншот.

Перегляд опису параметрів дозволяє помітити, що get-childitemдає можливість отримати об'єкт child(на зразок назви підпапки або імені файлу) у вказаному місці, з збігом певних символів або без. Наприклад:

get-childItem "*.txt" -recurse

повертає список файлів *.txt у поточній папці та всіх підпапках (через параметр -recurse). Тоді як

get-childitem “HKLM:\Software”

повертає список усіх ключів реєстру верхнього рівня HKEY_LOCAL_MACHINE\Software.

Якщо ви намагалися потрапити до реєстру за допомогою командного рядка Windows або файлів.bat, ви зможете оцінити функціональність цього варіанта доступу.

Крок 5: вивчення імен

Є причина того, чому показані командлети досі виглядають подібним чином: get-childitem, update-help, get-helpвикористовують єдину схему дієслово-іменник. Цю угоду застосовують усі командлети PowerShell, у яких дієслово стоїть перед єдиним іменником. Це сподобається тим, хто свого часу постраждав від мінливості назв команд у мовах VB та VBA.

Погляньте на найпоширеніші командлети:

set-location: встановлює поточну робочу локацію на певну локацію

get-content: отримує вміст файлу

get-item: отримує файли та папки

copy-item: копіює об'єкт з однієї локації в іншу

remove-item: видаляє файли та папки

: отримує процеси, запущені на локальному або віддаленому комп'ютері.

get-service: отримує послуги, запущені на локальному або віддаленому комп'ютері.

invoke-webrequest: отримує вміст з веб-сторінки в інтернеті

Щоб переглянути роботу певної командлети, використовуйте get-helpяк у випадку

get-help copy-item -full

На основі опису допомоги можна зрозуміти, що необхідно командлеті. Наприклад, якщо ви хочете копіювати всі файли та папки з Documentsв c:\temp, використовуйте

copy-item c:\users\ \documents\* c:\temp

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

Спробуйте цю командлету:

invoke-webrequest askwoody.com

Ви отримаєте короткий список заголовків, зображень, посилань та іншого вмісту веб-сторінки. Зверніть увагу на get-helpна список invoke-webrequest, який "повертає колекцію форм, посилань, зображень та інші важливі елементи HTML" - саме те, що має відображатися на екрані.

Деякі командлети допомагають керувати самим PowerShell:

get-command: список усіх доступних командлет

get-verb: список усіх доступних дієслів

clear-host: очищення екрану програми-хоста

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

get-command *-service

Будуть показані всі дієслова, доступні з іменником service. Ось їх список:

Get-Service

New-Service

Restart-Service

Resume-Service

Set-Service

Start-Service

Stop-Service

Suspend-Service

Можна поєднувати ці командлети з іншими.

Крок 6: використання труб

Якщо ви знайомі з командним рядком Windows або пакетними файлами, то знаєте про перенаправлення та труби. Перенаправлення (символ >) та труби (символ |) беруть результат дії та прикріплюють його в інше місце. Наприклад, можна перенаправити результат команди dirу текстовий файл або передати результат команди pingу команду findдля фільтрування цікавих результатів, як

dir > temp.txt

ping askwoody.com | find “packets” > temp2.txt

Тут у другій команді findшукає рядок packetsвзяту з адреси askwoody.com командою pingі об'єднує всі рядки, що збігаються, у файл під назвою temp2.txt.

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

ping askwoody.com | select-string packets | out-file temp2.txt

Використання перенаправлення та труб значно розширює можливості командного рядка Windows: замість нескінченного прокручування вниз екраном у пошуку текстового рядка можна відфільтровувати потрібні команди Windows.

Powershell має підтримку pipe, причому вона обмежена текстом. PowerShell дозволяє передавати цілий об'єкт з однієї командлети в іншу, де об'єкт є комбінацією даних (званих властивостями) та дій (методів), які можуть використовувати ці дані.

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

Як це зрозуміти? Використовуйте командлету get-member. Якщо ви хочете знати, який тип об'єкта обробляє командлет, проведіть її через get-member. Наприклад, якщо ви намагаєтеся зрозуміти запущені на комп'ютері процеси та звузили опції до командлети , ось як дізнатися результат командлети:

get-process | get-member

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

TypeName: System.Diagnostics.Process

Нижченаведений скріншот також показує властивості під назвою get-process Handles, Name, NPM, PM, SI, VMі WS.

Якщо ви бажаєте маніпулювати результатом для роботи з цим командлетом (замість відображення довгого списку активних процесів на моніторі), потрібно знайти іншу команду, яка як вступні дані приймає System.Diagnostics.Process. Для пошуку потрібної командлети знову використовуйте можливості PowerShell:

get-command -Parametertype System.Diagnostics.Process

Ця командлет видає список командлет, які можуть обробляти System.Diagnostics.Process.

Деякі командлети відомі тим, що набувають майже будь-якого виду даних. Головною серед них є . Ця командлета пропускає через себе кожен об'єкт, що посилається по трубі, один за одним, і застосовує до нього заданої критерії вибору. Існує спеціальний маркер під назвою $_ , який дозволяє використовувати кожен предмет у трубі, один раз.

Допустимо, ви хочете отримати список всіх запущених на комп'ютері процесів під назвою «svchost», тобто хочете зіставити властивість Nameпроцесу svchost. Використовуйте команду:

get-process | where-object ($_.Name -eq “svchost”)

Командлету дивиться на кожен об'єкт System.Diagnostics.Process, порівнює .Nameцього об'єкта з «svchost»; якщо є збіги, вони видаються монітор. Дивіться скріншот.

Крок 7: аналіз корисних команд PowerShell

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

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

Get-AppXPackage | Foreach (Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”)

Якщо запустити цю команду, ігноруйте позначені червоним кольором попередження, і коли команда виконана, перезавантажте комп'ютер; всі встановлені програми в Windows 10 з'являться на своїх місцях.

Ось як працює ця команда. Get-AppXPackageперевіряє всі пакети програм у профілі користувача. Навіть якщо ви видалили програму, вона залишається у списку профілю користувача.

Командлету Get-AppXPackageповертає об'єкт TypeName Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage, який включає повне ім'я пакета програми і місцезнаходження відповідного файлу маніфесту XML. Якщо запустити командлету get-appxpackage, ви побачите довгий список пакетів програм. Скриншот показує опис Xbox.

Командлету Foreachза допомогою циклу проходить через кожен об'єкт у AppXPackage, відправляючи їх командлету Add-AppxPackage. Згідно get-helpдля Add-AppxPackage, тут є два ключові перемикачі:

  • Перемикач -Registerвикористовується для реєстрації існуючих установок пакетів програм, можна встановити параметри DisableDevelopmentModeі Register
  • Перемикач -DisableDevelopmentModeкаже Windows заново зареєструвати існуючий пакет програми, який було вимкнено, не зареєстровано або пошкоджено.

Рядок « $($_.InstallLocation)\AppXManifest.x ml» описує, де розташований файл manifest.xml. Якщо подивитися на файли AppXManifest.xml, ви побачите складний список ідентифікаторів додатків, виконуваних файлів та велику кількість візуальних елементів, пов'язаних із додатком.

Після перезавантаження всі додані пакети програм завантажуються та встановлюються з магазину Windows Store.

Запуск програми з PowerShell

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

Прямий запуск

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

Set-Location ″C:\Program Files″
.\Hello.exe

Зверніть увагу, що навіть перебуваючи в потрібному каталозі, потрібно вказувати відносний шлях до файлу, що виконується. Виняток становлять файли з директорій, перерахованих у змінній оточенні (path). Наприклад, різні вбудовані програми та утиліти (notepad, calc, ping тощо), що знаходяться в директорії Windows\System32, можна запускати без вказівки шляху.

Оператор &

Якщо необхідно вказати повний шлях до файлу, що виконується, то можна скористатися оператором & (Оператор виклику). Він дозволяє виконати рядок тексту, вказаний у лапках як єдину команду. Наприклад:

& 'C:\Program Files\Hello.exe'

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

& 'C:\Program Files\Hello.exe' 'Hello, world'

За бажання можна вказати кількох аргументів через кому:

& 'C:\Program Files\Hello.exe' 'Hello,', 'world'

Для зручності команду та аргументи можна помістити у змінні:

$exe = 'C:\Program Files\Hello.exe'
$arg1 = 'Hello'
$arg2 = 'world'
& $exe $arg1 $arg2

Ну і якщо аргументів багато, їх можна об'єднати, скориставшись такою конструкцією:

$exe = 'C:\Program Files\Hello.exe'
$allargs = @('Hello,','world')
& $exe $allargs

Invoke-Expression

Командлет Invoke-Expression працює приблизно так само, як і оператор & бере текстовий рядок і виконує його у вигляді команди. Наприклад:

Invoke-Expression -Command 'C:\Windows\Hello.exe'

Однак він має один великий недолік, а саме — невміння працювати з пробілами. Наприклад, наступна команда викликає помилку:

Invoke-Expression -Command 'C:\Program Files\Hello.exe'

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

Invoke-Expression -Command C: Program Files Hello.exe

Start-Process

Командлет Start-Process запускає вказаний файл у вигляді процесу, використовуючи метод Start.NET класу Process. Наприклад:

Start-Process -FilePath 'C:\Program Files\Hello.exe'

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

Start-Process -FilePath 'C:\Program Files\Hello.exe' -NoNewWindow -Wait

Також Start-Process дозволяє передати до процесу додаткові аргументи:

Start-Process -FilePath 'C:\Program Files\Hello.exe' -ArgumentList 'Hello, world' -NoNewWindow -Wait

За промовчанням командлет нічого не повертає, але за допомогою -PassThru можна змусити його повернути об'єкт процесу. Цей об'єкт дуже зручно помістити у змінну:

$process = Start-Process -FilePath 'C:\Program Files\Hello.exe' -Wait -PassThru

з якої можна потім можна дізнатися багато корисних речей, такі як статус:

$process.HasExited

$process.ExitTime

або код виконання:

$process.ExitCode

.NET

У принципі.NET класом Process можна скористатися безпосередньо, без командлету Start-Process. Наприклад, запустити процес можна командою:

::Start(′C:\Program Files\Hello.exe′)

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

$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = C: Program Files Hello.exe
$process.StartInfo.Arguments = ″Hello,world″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()

$process.StandatdOutput.ReadToEnd()

WMI

За допомогою WMI можна зробити практично все, у тому числі запустити програму. Для цього цілком підійде метод Create WMI-класу Win32_Process.Цей метод запускає процес на локальному чи віддаленому комп'ютері через RPC. Наприклад, для виконання програми на локальному комп'ютері можна скористатися такою командою:

()″Win32_Process″).Create(′C:\Program Files\Hello.exe′)

А для виконання на віддаленому комп'ютері команда виглядатиме так:

()″\\remotecomputer\root\cimv2:Win32_Process″).Create(′C:\Program Files\Hello.exe′)

Як варіант, можна скористатися командлетом Invoke-WmiMethod:

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:Program FilesHello.exe″

Або командлетом Invoke-CimMethod:

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @(CommandLine=″C:\Program Files\Hello.exe″)

WMI запускає процес в окремому вікні та повертає об'єкт, що містить ідентифікатор процесу (ProcessID) та результат виконання (ReturnValue). ReturnValue може приймати такі значення:

0 - Sucsessful Completiom
2 - Access Denied
3 - Insufficient Privilege
8 - Uncnown Failure
9 - Path Not Found
21 - Invalid Parameter

Invoke-Command

Командлет Invoke-Command може виконувати команди на локальному або віддаленому комп'ютері, використовуючи WinRM. Наприклад, для запуску програми на локальному комп'ютері використовуємо команду:

Invoke-Command -ScriptBlock (C: Program Files Hello.exe)

За потреби у програму можна передати аргументи:

Invoke-Command -ScriptBlock (C: Program Files Hello.exe Hello, world)

Зверніть увагу, що Invoke-Command не дуже дружить з пробілами, тому, щоб уникнути помилок, доводиться хитруватися з лапками. Втім, подібних проблем можна уникнути, наприклад, комбінуючи використання командлета з оператором &:

Invoke-Command -ScriptBlock (& ​​'C:\Program Files\Hello.exe')

В основному Invoke-Command застосовується для віддаленого керування, його головна перевага - це можливість одночасного виконання на кількох комп'ютерах. Наприклад:

Invoke-Command -ScriptBlock ("C:\'Program Files'\Hello.exe") -ComputerName SRV1,SRV2,SRV3

$scriptblock = (C: Program Files Hello.exe)
$Computers = @('SRV1','SRV2','SRV3')
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Computers

За промовчанням командлет повертає результат виконання програми, а якщо запустити його у фоновому режимі (параметр AsJob), то повертає об'єкт Job:

Invoke-Command -ScriptBlock (C:\'Program Files'\Hello.exe) -ComputerName localhost -AsJob -JobName Hello

Invoke-Item

Командлет Invoke-Item призначений для застосування до файлу стандартної дії. Так запустити виконуваний файл можна командою:

Invoke-Item -Path ″C:Program FilesHello.exe″

Однак найзручніше використовувати Invoke-Item для відкриття певного типу файлів. Наприклад, так ми відкриємо текстовий файл:

Invoke-Item -Path ″C:\Files\test.txt″

А так усі текстові файли у папці:

Invoke-Item -Path ″C:\Files\*.txt″

CMD

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

cmd /c ″C:Program FilesHello.exe″

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

До речі, стаття написана за мотивами PowerShell: Deep Dive and Best Practice. Рекомендую почитати там ще багато цікавого.