Більшість існуючих відповідей пояснює як , але дуже мало пояснює чому . І перед тим, як обійти виконання коду від сторонніх людей в Інтернеті, особливо код, який забороняє заходи безпеки, ви повинні зрозуміти, що саме ви робите. Тож ось трохи детальніше про цю проблему.
З сторінки TechNet про політику щодо виконання :
Політики виконання Windows PowerShell дозволяють визначати умови, за яких Windows PowerShell завантажує конфігураційні файли та запускає сценарії.
Переваги , які, як перераховуються PowerShell - Основи політики виконання підпису коду і , є:
- Контроль виконання - контроль рівня довіри до виконання сценаріїв.
- Command Highjack - запобігання введенню команд на мій шлях.
- Ідентичність - це сценарій, створений та підписаний розробником, якому я довіряю, та / або підписаний сертифікатом від сертифікаційного органу, якому я довіряю.
- Цілісність - скрипти не можуть бути змінені зловмисним програмним забезпеченням або зловмисниками.
Щоб перевірити поточну політику виконання, можна запустити Get-ExecutionPolicy
. Але ти, мабуть, тут, тому що хочеш це змінити.
Для цього ви запустите Set-ExecutionPolicy
командлет.
У вас буде два основні рішення, які слід прийняти під час оновлення політики виконання.
Тип політики виконання:
Restricted
† - У системі не може бути виконано жодного локального, віддаленого або завантаженого сценарію.
AllSigned
- Усі запущені сценарії вимагають цифрового підпису.
RemoteSigned
- Усі віддалені сценарії (UNC) або завантажені сценарії потрібно підписати.
Unrestricted
- Підпис для будь-якого типу сценарію не потрібно.
Сфера застосування нових змін
LocalMachine
† - Політика виконання стосується всіх користувачів комп'ютера.
CurrentUser
- Політика виконання стосується лише поточного користувача.
Process
- Політика виконання стосується лише поточного процесу Windows PowerShell.
† = За замовчуванням
Наприклад : якщо ви хочете змінити політику на RemoteSigned лише для CurrentUser, виконайте таку команду:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Примітка . Щоб змінити політику виконання, потрібно запустити PowerShell як адміністратор . Якщо ви перебуваєте у звичайному режимі та намагаєтесь змінити політику виконання, ви отримаєте таку помилку:
Доступ до ключа реєстру "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell" заборонено. Щоб змінити політику виконання для області за замовчуванням (LocalMachine), запустіть Windows PowerShell з опцією "Запустити як адміністратор".
Якщо ви хочете посилити внутрішні обмеження щодо власних скриптів, які не завантажені з Інтернету (або принаймні не містять метаданих UNC), ви можете змусити політику виконувати лише підписані скрипти. Щоб підписати власні сценарії, ви можете дотримуватися вказівок зі статті Скотта Хензельмана про підписання сценаріїв PowerShell .
Примітка : Більшість людей, ймовірно, отримують цю помилку щоразу, коли вони відкривають Powershell, оскільки перше, що PS намагається зробити при запуску, - це виконати сценарій профілю вашого користувача, який налаштовує ваше середовище, як би вам це не подобалося.
Зазвичай файл знаходиться в:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Точне місцезнаходження ви можете знайти, запустивши змінну powerhell
$profile
Якщо в профілі немає нічого, що вас цікавить, і ви не хочете метушитися зі своїми налаштуваннями безпеки, ви можете просто видалити його, і повноваження не знайдуть нічого, що він не може виконати.