Windows 10 разрешить выполнение сценариев powershell

По-умолчанию настройки Windows запрещают запуск скриптов PowerShell. Это необходимо для предотвращения запуска вредоносного кода на PowerShell. Настройки

По-умолчанию настройки Windows запрещают запуск скриптов PowerShell. Это необходимо для предотвращения запуска вредоносного кода на PowerShell. Настройки политик запуска PowerShell скриптов определяются в Execution Policy. В этой статье мы рассмотрим доступные политики запуска PS скриптов, как изменить Execution Policy и настроить политики использования PowerShell скриптов на компьютерах в домене.

Содержание:

  • Выполнение PowerShell скриптов запрещено для данной системы
  • Как разрешить запуск скриптов PowerShell с помощью Execution Policy?
  • Настройка PowerShell Execution Policy с помощью групповых политик
  • Способы обхода политики PowerShell Execution

Выполнение PowerShell скриптов запрещено для данной системы

При попытке выполнить PowerShell скрипт (файл с расширением PS1) на чистой Windows 10, появляется ошибка:

File C:ps.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Не удается загрузить файл.ps1, так как выполнение скриптов запрещено для данной системы.

Не удается загрузить файл ps1, так как выполнение скриптов запрещено для данной системы.

Текущее значение политики выполнения скриптов PowerShell на компьютере можно получить командой:

Get-ExecutionPolicy

Get-ExecutionPolicy

Доступны следующие значения PowerShell Execution Policy:

  • Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды в консоли;
  • AllSigned – разрешено выполнять только подписанные PS скрипты с цифровой подписью от доверенного издателя (можно подписать скрипт самоподписанным сертификатом и добавить его в доверенные). При запуске недоверенных скриптов появляется предупреждение:
    Do you want to run software from this untrusted publisher? File .ps1 is published by CN=test1 and is not trusted on your system. Only run scripts from trusted publishers

    вы хотите запустить powershell скрипт от недоверенного издателя?

  • RemoteSigned – можно запускать локальные PowerShell скрипты без ограничения. Можно запускать удаленные PS файлы с цифровой подписью (нельзя запустить PS1 файлы, скачанные из Интернета, запущенные из сетевой папки по UNC пути и т.д.);
  • Unrestricted – разрешен запуск всех PowerShell скриптов;

    При запуске сторонних PowerShell скриптов может появляется предупреждение с подтверждением запуска, см. ниже.

  • Bypass – разрешён запуск любых PS файлов (предупреждения не выводятся) – эта политика обычно используется для автоматического запуска PS скриптов без вывода каких-либо уведомлений (например при запуске через GPO, SCCM, планировщик и т.д.) и не рекомендуется для постоянного использования;
  • Default – сброс настроек выполнения скриптов на стандартную;

    В Windows 10 значение политики выполнения PowerShell по-умолчанию Restricted, а в Windows Server 2016 — RemoteSigned.

  • Undefined – не задано. Применяется политика Restricted для десктопных ОС и RemoteSigned для серверных.

Как разрешить запуск скриптов PowerShell с помощью Execution Policy?

Чтобы изменить текущее значение политики запуска PowerShell скриптов, используется командлет Set-ExecutionPolicy.

Например, разрешим запуск локальных скриптов:

Set-ExecutionPolicy RemoteSigned

Подтвердите изменение политики запуска PS1 скриптов, нажав Y или A.

Set-ExecutionPolicy RemoteSigned разрешить запуск локальных powershell скриптов

Чтобы запрос не появлялся, можно использовать параметр Force.

Set-ExecutionPolicy RemoteSigned –Force

Если вы установили значение политики PowerShell Execution Policy в Unrestricted, то при запуске удаленных скриптов из сетевых каталогов по UNC пути, скачанных из интернета файлов, все равно будет появляться предупреждение:

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the
Unblock-File cmdlet to allow the script to run without this warning message.
Do you want to run?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D")

Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning message

Как PowerShell различает локальные и удаленные скрипты? Все дело в идентификаторе зоны ZoneId, которую выставляет браузер в альтернативном потоке при загрузке файла (см. статью “Как Windows определяет, что файл скачан из Интернета?”). Вы можете разблокировать такой файл, поставив галку “Разблокирвать” в его свойствах или очиститься метку зоны с помощью комадлета Unblock-File.

Также следует различать различные области действия политик выполнения скриптов PowerShell (scopes):

  • MachinePolicy – действует для всех пользователей компьютера, настраивается через GPO;
  • UserPolicy – действует на пользователей компьютера, также настраивается через GPO;
  • Process — настройки ExecutionPolicy действует только для текущего сеанса PowerShell.exe (сбрасываются при закрытии процесса);
  • CurrentUser – политика ExecutionPolicy применяется только к текущему пользователю (параметр из ветки реестра HKEY_CURRENT_USER);
  • LocalMachine – политика для всех пользователей компьютера (параметр из ветки реестра HKEY_LOCAL_MACHINE);

Область применения политики можно указать с помощью параметр Scope командлета Set-ExecutionPolicy. Например:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force

Проверим текущие настройки ExecutionPolicy для всех областей:

Get-ExecutionPolicy -List

Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Bypass
CurrentUser Undefined
LocalMachine RemoteSigned

Get-ExecutionPolicy scopes области действия

Значение политики выполнения, которые вы задаете с помощью командлета Set-ExecutionPolicy для областей CurrentUser и LocalMachine, хранятся в реестре. Например, выполните командлет:

Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted –Force

Откройте ветку реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell и проверьте значение REG_SZ параметра ExecutionPolicy. Оно изменилось на Restricted (допустимые значения параметра Restricted, AllSigned, RemoteSigned, Bypass, Unrestricted и Undefined).

ExecutionPolicy в реестре

Аналогичные настройки для области CurrentUser находятся в разделе реестра пользователя HKEY_CURRENT_USERSOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShell.

Отметим, что чаще всего в корпоративной среде используется ExecutionPolicy со значением AllSigned на уровне LocalMachine. Это обеспечивает максимальный баланс между безопасностью и удобством. Для личного пользования на компьютере можно использовать RemoteSigned. Ну а Bypass политику лучше использовать только для запуска отдельных задач (например для запуска скриптов через GPO или заданий планировщика).

Настройка PowerShell Execution Policy с помощью групповых политик

Вы можете настроить политику выполнения PowerShel скриптов на серверах или компьютерах домена с помощью групповых политик.

  1. С помощью редактора доменных GPO (gpmc.msc) создайте новую GPO (или отредактируйте) существующую и назначьте ее на OU с компьютерами, к которым нужно применить политику запуска PowerShell скриптов;
  2. В редакторе политики перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows PowerShell и найдите политику Turn on Script Execution (Включить выполнение сценариев);

    Аналогичная политика есть в пользовательском разделе GPO — User Configuration, но политика компьютера имеет приоритет.

  3. Для политики доступны три значения:
    • Allow only signed scripts (Разрешать только подписанные сценарии) — соответствует политике AllSigned;
    • Allow local scripts and remote signed scripts (Разрешать локальные и удаленные подписанные сценарии) — соответствует политике PS RemoteSigned;
    • Allow all scripts (Разрешать все сценарии) — политика Unrestricted. групповая политика Turn on Script Execution
  4. Выберите необходимое значение политики, сохраните GPO и обновите политики на компьютере.
  5. Проверьте, что для области MachinePolicy теперь действуют новые настройки выполнения. политка executionpolicy настроена через ПЗЩ

После настройки политики выполнения через GPO вы не сможете изменить настройки политики выполнения скриптов вручную. При попытке изменить настройки Execution Policy на компьютере, на который применяется такая GPO, появится ошибка:

Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope. Due to the override, your shell will retain its current effective execution policy of RemoteSigned. Type "Get-ExecutionPolicy -List" to view your execution policy settings.

Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope

Способы обхода политики PowerShell Execution

Есть несколько трюков, которые могут помочь вам, когда нужно запустить на компьютере PowerShell скрипт, не изменяя настройки политики выполнения. Например, я хочу запустить простой PS1 скрипт, который поверяет, что запущен с правами администратора.

Можно с помощью Get-Content получить содержимое скрипта и перенаправить его в стандартныq поток ввода консоли PS.

Get-Content c:pscheck_process_elevation.ps1 | PowerShell.exe -noprofile –

Либо можно запустить новый процесс powershell.exe с политикой выполнения Bypass:

powershell.exe -noprofile -executionpolicy bypass -file c:pscheck_process_elevation.ps1

обход действия powershell execution политики

Содержание

  • Способ 1: Настройка локальной политики
  • Способ 2: Редактирование реестра
  • Способ 3: Консольная команда
  • Вопросы и ответы

Как включить выполнение сценариев PowerShell в Windows 10

Способ 1: Настройка локальной политики

По умолчанию запуск сценариев PowerShell запрещен политикой выполнения функций средства, что обусловлено требованиями безопасности и призвано предотвратить возможность исполнения отдельных вредоносных скриптов в среде Windows. Изменить такое положение вещей в общем-то несложно, а основной способ это сделать подразумевает привлечение «Редактора локальной групповой политики» («РЛГП»).

«РЛГП» по умолчанию доступен только в Windows 10 редакций «Pro» и «Enterprise», пользователям «Home»-выпуска операционки с конечной целью запуска PowerShell-сценариев следует сразу переходить к рассмотрению инструкций «Способ 2» и «3» в этой статье.

  1. Открываем окно «Редактора локальной групповой политики». Проще всего это сделать введя запрос Изменение групповой политики в системный «Поиск» Виндовс,
    Как включить выполнение сценариев PowerShell в Windows 10 07

    также возможно через оснастку «Выполнить» (открывается по нажатию «Win»+«R» на клавиатуре) – оправляем с её помощью на выполнение команду:

    gpedit.msc

    Как включить выполнение сценариев PowerShell в Windows 10 08

    Читайте также: Запуск «Редактора локальной групповой политики» в Windows 10

  2. Задействовав средства левой части окна РЛГП, в разделе «Конфигурация компьютера» поочередно разворачиваем каталоги: «Административные шаблоны»,
    Как включить выполнение сценариев PowerShell в Windows 10 09

    затем из него — «Компоненты Windows».

  3. Как включить выполнение сценариев PowerShell в Windows 10 10

  4. В содержимом «Компоненты Windows» находим и кликом выделяем каталог «Windows Powershell».
  5. Как включить выполнение сценариев PowerShell в Windows 10 11

  6. Перемещаемся в область справа окна Редактора, кликаем правой кнопкой манипулятора (ПКМ) по наименованию политики «Включить выполнение сценариев».
    Как включить выполнение сценариев PowerShell в Windows 10 12

    В отобразившемся меню выбираем «Изменить».

  7. Как включить выполнение сценариев PowerShell в Windows 10 13

  8. В открывшемся средстве изменения параметров политики «Включить выполнение сценариев» переводим расположенную в правой верхней части окна радиокнопку в положение «Включено».
    Как включить выполнение сценариев PowerShell в Windows 10 14

    Кроме того, переходим здесь в блок «Параметры:», щёлкаем по изначально пустому раскрывающемуся списку «Политика выполнения»,

    Как включить выполнение сценариев PowerShell в Windows 10 16

    Lumpics.ru

    выбираем в нём «Разрешать все сценарии».

  9. Как включить выполнение сценариев PowerShell в Windows 10 17

  10. Завершив конфигурирование политики вышеуказанным образом, нажимаем «ОК».
    Как включить выполнение сценариев PowerShell в Windows 10 18

    На этом всё, закрываем окно средства изменения локальной групповой политики – возможность запуска, по сути, любых сценариев PowerShell в текущем экземпляре Windows 10 получена.

  11. Как включить выполнение сценариев PowerShell в Windows 10 19

Способ 2: Редактирование реестра

Параметры политик выполнения сценариев ПоверШелл для локального компьютера, а также его текущего пользователя сохранены в главной базе данных настроек Виндовс 10 — системном реестре. Соответственно, изменив здесь значения отдельных записей, можно решить в том числе и задачу из заголовка этой статьи.

  1. Открываем «Редактор реестра». Существует множество способов это сделать, наиболее быстрые: отыскать ссылку на запуск приложения через системный «Поиск»,

    Как включить выполнение сценариев PowerShell в Windows 10 20

    отправить команду regedit через оснастку «Выполнить».

    Подробнее: Способы открытия «Редактора реестра» в Windows 10

  2. Как включить выполнение сценариев PowerShell в Windows 10 21

  3. Кликая по разворачивающим разделы из перечня слева в окне «Редактора реестра» элементам, переходим по следующему пути:

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows

    Как включить выполнение сценариев PowerShell в Windows 10 23

    Другой метод перемещения в нужный раздел реестра: копируем путь к нему из текста этой статьи в буфер обмена Windows 10, затем вставляем данные в поле под строкой меню Редактора, нажимаем «Enter».

    Как включить выполнение сценариев PowerShell в Windows 10 24

  4. Выделив (щелчком ЛКМ по наименованию в панели слева окна Редактора) расположенную по указанному выше пути папку «Windows», вызываем меню «Правка»,

    Как включить выполнение сценариев PowerShell в Windows 10 25

    кликаем в нём «Создать»«Раздел».

  5. Как включить выполнение сценариев PowerShell в Windows 10 26

  6. Далее вводим имя сформированного каталога – PowerShell,
    Как включить выполнение сценариев PowerShell в Windows 10 27

    нажимаем «Ввод» на клавиатуре.

  7. Как включить выполнение сценариев PowerShell в Windows 10 28

  8. Переходим в правую часть окна Редактора, кликаем ПКМ в её свободной от значков и записей области, в открывшемся контекстном меню нажимаем «Создать»«Параметр DWORD (32 бита)».
  9. Как включить выполнение сценариев PowerShell в Windows 10 29

  10. Присваиваем созданному объекту наименование EnableScripts,
    Как включить выполнение сценариев PowerShell в Windows 10 30

    дважды щёлкаем по нему.

  11. Как включить выполнение сценариев PowerShell в Windows 10 31

  12. В поле «Значение» отобразившегося окошка «Изменение параметра DWORD (32 бита)» вместо 0 пишем 1,
    Как включить выполнение сценариев PowerShell в Windows 10 32

    после этого кликаем «ОК».

  13. Как включить выполнение сценариев PowerShell в Windows 10 33

  14. Вновь кликаем ПКМ в отображающей параметры из раздела реестра «PowerShell» области, теперь выбираем в меню «Создать»«Строковый параметр».
  15. Как включить выполнение сценариев PowerShell в Windows 10 34

  16. В качестве имени параметра вводим ExecutionPolicy,
    Как включить выполнение сценариев PowerShell в Windows 10 35

    после чего двойным кликом по получившемуся объекту открываем окошко его изменения.

  17. Как включить выполнение сценариев PowerShell в Windows 10 36

  18. В поле «Значение:» вводим RemoteSigned,
    Как включить выполнение сценариев PowerShell в Windows 10 37

    щёлкаем «ОК» мышкой.

  19. Как включить выполнение сценариев PowerShell в Windows 10 38

  20. На этом всё – закрываем окно «Редактора реестра», перезагружаем компьютер и можем приступать к отныне беспроблемному и практически ничем не ограничиваемому запуску сценариев PowerShell.
  21. Как включить выполнение сценариев PowerShell в Windows 10 39

Способ 3: Консольная команда

Еще один метод устранения предусмотренных в Windows 10 преград для выполнения PowerShell-сценариев реализовать гораздо проще, нежели вышеописанные подходы, но решение в большей степени единоразовое (действует в рамках одного сеанса работы с консольной оболочкой). Подойдёт, когда нужно задействовать один-единственный скрипт рассматриваемого типа или это требуется редко.

  1. Запускаем приложение PowerShell от имени Администратора. Один из вариантов это сделать – средствами системной оснастки «Выполнить»:
    • Нажимаем «Win»+«R» на клавиатуре, вводим в поле «Открыть» отобразившегося окошка такую команду:

      рowershell

    • Как включить выполнение сценариев PowerShell в Windows 10 40

    • Далее нажимаем «Ctrl»+«Shift» на клавиатуре и, удерживая эти клавиши, кликаем «ОК» в окне «Выполнить» левой кнопкой мыши.
    • Как включить выполнение сценариев PowerShell в Windows 10 41

    • Подтверждаем («Да») поступивший из системного модуля «Контроль учётных записей» запрос.
    • Как включить выполнение сценариев PowerShell в Windows 10 42

    Читайте также: Запуск «PowerShell» в ОС Windows 10

  2. Вводим и запускаем команду перевода политики выполнения сценариев PowerShell в состояние, когда ею ничего не блокируется:

    Set-ExecutionPolicy Bypass

  3. Как включить выполнение сценариев PowerShell в Windows 10 43

  4. Введя Y и затем нажав «Enter», подтверждаем запрос системы «Вы хотите изменить политику выполнения?».
  5. Как включить выполнение сценариев PowerShell в Windows 10 44

  6. На этом всё – возможности выполнять сценарии теперь ничего не препятствует и так будет продолжаться до момента закрытия сессии ПоверШелл. Вводим в консоль путь на диске ПК, по которому расположен целевой исполняемый файл рассматриваемого типа, инициируем его запуск.
  7. Как включить выполнение сценариев PowerShell в Windows 10 46

Читайте также: Как скачать ISO-образ Windows при помощи PowerShell-скрипта Fido

Еще статьи по данной теме:

Помогла ли Вам статья?

По умолчанию выполнение сценариев Windows PowerShell в системе запрещено. По соображениям безопасности все скрипты PowerShell должны быть подписаны цифровой подписью, данный метод называется — политика выполнения.

Если скрипт не соответствует этому условию, то выполнение сценариев PowerShell в системе запрещено. Это связано в первую очередь с тем, что в скрипте может находиться вредоносный код, который может нанести вред операционной системе.

PowerShell имеет несколько режимов выполнения, которые определяют, какой тип кода разрешается выполнять. Существует 5 различных режимов выполнения:

  1. Ограниченный (Restricted) — значение по умолчанию. Блокируется выполнение любых скриптов и разрешается работа интерактивных команд.
  2. Все подписанные (All Signed) — разрешено выполнение скриптов, имеющих цифровую подпись.
  3. Удаленные подписанные (Remote Signed) — локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
  4. Неограниченный (Unrestricted) — разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
  5. Обходной (Bypass) — ничего не блокируется, никакие предупреждения и запросы не появляются.

По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает как интерактивная оболочка. Если вы ранее не настраивали PowerShell, то вместо работы скрипта вы увидите сообщение об ошибке, написанное красным шрифтом как на скриншоте ниже.

Самым безопасным способом решения этой проблемы является – изменение политики выполнения на неограниченную, запуск скрипта, и затем обратный возврат к ограниченной политике.

Для изменения политики выполнения на неограниченную, воспользуемся консолью PowerShell открытую с правами Администратора и выполним следующую команду:

Set-ExecutionPolicy Unrestricted

После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y (Да).

Теперь можно запустить скрипт. Однако, вы подвергаете систему серьезному риску, так что по окончании работы скрипта, не забудьте вернуть политику выполнения назад в ограниченный режим. Сделать это можно с помощью следующей команды:

Set-ExecutionPolicy Restricted

После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y (Да)

Далее ниже представлены все команды для изменения политики выполнения.

Блокируется выполнение любых скриптов. Значение по умолчанию.

Set-ExecutionPolicy Restricted

Разрешено выполнение скриптов, имеющих цифровую подпись.

Set-ExecutionPolicy AllSigned

Скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета — только при наличии цифровой подписи.

Set-ExecutionPolicy RemoteSigned

Разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.

Set-ExecutionPolicy Unrestricted

Ничего не блокируется, никакие предупреждения и запросы не появляются.

Set-ExecutionPolicy Bypass

Для выполнения выше представленных команд без подтверждения изменения, воспользуйтесь параметром -Force, например выполните команду:

Set-ExecutionPolicy Bypass -Force

Теперь при выполнении команд не нужно подтверждать производимые изменения.

Download PC Repair Tool to quickly find & fix Windows errors automatically

If you want to turn on or off Windows PowerShell script execution in Windows 10, follow this step by step guide. We will use the Registry Editor and Local Group Policy Editor to enable or disable this functionality.

Windows PowerShell is an essential and handy tool included in the Windows operating system. There are mainly two types of scripts – Signed by a trusted publisher and Local scripts. Local scripts are what you create on your personal computer, whereas the other one is what a trusted publisher has signed to perform a specific task.

To turn on or off Windows PowerShell script execution using Group Policy Editor, follow these steps-

  1. Search for gpedit.msc in the Taskbar search box.
  2. Click on Edit group policy in the search result.
  3. Go to Windows PowerShell in Computer Configuration.
  4. Double-click on Turn on Script Execution.
  5. Select the Enabled option.
  6. Choose an Execution Policy from the drop-down list.
  7. Select the Disabled option to turn off script execution.
  8. Click on Apply and OK.

Let’s check out these steps in detail.

At first, you will have to open the Local Group Policy Editor on your computer. For that, search for gpedit.msc in the Taskbar search box and click on Edit group policy in the search result. After opening this tool, navigate to the following path-

Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell

In the Windows PowerShell folder, you will see a setting called Turn on Script Execution. Double-click on it and select the Enabled option.

Turn on or off Windows PowerShell script execution

After that, choose an Execution Policy from the drop-down list. You will see these three options-

  • Allow only signed scripts
  • Allow local scripts and remote signed scripts
  • Allow all scripts

If you want to turn off the script execution in Windows PowerShell, choose the Disabled option.

Either way, click on Apply and OK to save the change.

As said earlier, it is possible to make the same change using Registry Editor. Before that, it is recommended to create a System Restore point and backup all Registry files.

Enable or disable Windows PowerShell script execution using Registry

To enable or disable Windows PowerShell script execution, follow these steps-

  1. Press Win+R.
  2. Type regedit and press the Enter button.
  3. Click on the Yes button.
  4. Go to Windows inside HKLM key.
  5. Right-click on Windows > New > Key.
  6. Name it as PowerShell.
  7. Right-click on PowerShell > New DWORD (32-bit) Value.
  8. Name it as EnableScripts.
  9. Double-click on it to set the Value data as 1.
  10. Right-click PowerShell > New > String Value.
  11. Name it as ExecutionPolicy.
  12. Double-click on it to set the Value data as mentioned below.

If you want to learn more, keep reading.

To get started, press Win+R, type regedit and hit the Enter button. If you see the UAC prompt, click on the Yes button to open Registry Editor on your computer. After that, navigate to the following path-

HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows

Right-click on Windows, select New > Key, and name it as PowerShell.

How to turn on or off Windows PowerShell script execution

You will have to create a DWORD (32-bit) Value and a String Value in the PowerShell key. For that, right-click on PowerShell > New > DWORD (32-bit) Value and name it as EnableScripts.

How to turn on or off Windows PowerShell script execution

Double-click on EnableScripts to set the Value data as or 0. If you want to enable this functionality, make it 1. Otherwise, let it be 0.

How to turn on or off Windows PowerShell script execution

Now, you will have to set the execution policy. For that, right-click on PowerShell > New > String Value, and name it as ExecutionPolicy.

How to turn on or off Windows PowerShell script execution

After that, double-click on it and enter the Value data as said below-

  • AllSigned: Allow only signed scripts
  • RemoteSigned: Allow local scripts and remote signed scripts
  • Unrestricted: Allow all scripts

How to turn on or off Windows PowerShell script execution

At last, click the OK button to save the change.

That’s all! Hope it helps.

Ezoic

Anand Khanse is the Admin of TheWindowsClub.com, a 10-year Microsoft MVP (2006-16) & a Windows Insider MVP (2016-2022). Please read the entire post & the comments first, create a System Restore Point before making any changes to your system & be careful about any 3rd-party offers while installing freeware.

Download PC Repair Tool to quickly find & fix Windows errors automatically

If you want to turn on or off Windows PowerShell script execution in Windows 10, follow this step by step guide. We will use the Registry Editor and Local Group Policy Editor to enable or disable this functionality.

Windows PowerShell is an essential and handy tool included in the Windows operating system. There are mainly two types of scripts – Signed by a trusted publisher and Local scripts. Local scripts are what you create on your personal computer, whereas the other one is what a trusted publisher has signed to perform a specific task.

To turn on or off Windows PowerShell script execution using Group Policy Editor, follow these steps-

  1. Search for gpedit.msc in the Taskbar search box.
  2. Click on Edit group policy in the search result.
  3. Go to Windows PowerShell in Computer Configuration.
  4. Double-click on Turn on Script Execution.
  5. Select the Enabled option.
  6. Choose an Execution Policy from the drop-down list.
  7. Select the Disabled option to turn off script execution.
  8. Click on Apply and OK.

Let’s check out these steps in detail.

At first, you will have to open the Local Group Policy Editor on your computer. For that, search for gpedit.msc in the Taskbar search box and click on Edit group policy in the search result. After opening this tool, navigate to the following path-

Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell

In the Windows PowerShell folder, you will see a setting called Turn on Script Execution. Double-click on it and select the Enabled option.

Turn on or off Windows PowerShell script execution

After that, choose an Execution Policy from the drop-down list. You will see these three options-

  • Allow only signed scripts
  • Allow local scripts and remote signed scripts
  • Allow all scripts

If you want to turn off the script execution in Windows PowerShell, choose the Disabled option.

Either way, click on Apply and OK to save the change.

As said earlier, it is possible to make the same change using Registry Editor. Before that, it is recommended to create a System Restore point and backup all Registry files.

Enable or disable Windows PowerShell script execution using Registry

To enable or disable Windows PowerShell script execution, follow these steps-

  1. Press Win+R.
  2. Type regedit and press the Enter button.
  3. Click on the Yes button.
  4. Go to Windows inside HKLM key.
  5. Right-click on Windows > New > Key.
  6. Name it as PowerShell.
  7. Right-click on PowerShell > New DWORD (32-bit) Value.
  8. Name it as EnableScripts.
  9. Double-click on it to set the Value data as 1.
  10. Right-click PowerShell > New > String Value.
  11. Name it as ExecutionPolicy.
  12. Double-click on it to set the Value data as mentioned below.

If you want to learn more, keep reading.

To get started, press Win+R, type regedit and hit the Enter button. If you see the UAC prompt, click on the Yes button to open Registry Editor on your computer. After that, navigate to the following path-

HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows

Right-click on Windows, select New > Key, and name it as PowerShell.

How to turn on or off Windows PowerShell script execution

You will have to create a DWORD (32-bit) Value and a String Value in the PowerShell key. For that, right-click on PowerShell > New > DWORD (32-bit) Value and name it as EnableScripts.

How to turn on or off Windows PowerShell script execution

Double-click on EnableScripts to set the Value data as or 0. If you want to enable this functionality, make it 1. Otherwise, let it be 0.

How to turn on or off Windows PowerShell script execution

Now, you will have to set the execution policy. For that, right-click on PowerShell > New > String Value, and name it as ExecutionPolicy.

How to turn on or off Windows PowerShell script execution

After that, double-click on it and enter the Value data as said below-

  • AllSigned: Allow only signed scripts
  • RemoteSigned: Allow local scripts and remote signed scripts
  • Unrestricted: Allow all scripts

How to turn on or off Windows PowerShell script execution

At last, click the OK button to save the change.

That’s all! Hope it helps.

Ezoic

Anand Khanse is the Admin of TheWindowsClub.com, a 10-year Microsoft MVP (2006-16) & a Windows Insider MVP (2016-2022). Please read the entire post & the comments first, create a System Restore Point before making any changes to your system & be careful about any 3rd-party offers while installing freeware.

При разработке PowerShell особое внимание было уделено безопасности. Одной из мер безопасности является наличие политики выполнения (Execution Policy), которая определяет, могут ли скрипты PowerShell выполняться в системе, и если могут, то какие именно.

Для примера возьмем чистую Windows 10, откроем консоль PowerShell и попробуем выполнить простой скрипт. Попытка завершится ошибкой, поскольку, как видно из сообщения, выполнение скриптов в системе запрещено.

Сообщение при попытке выполнить скрипт

Это сработала политика выполнения, и если мы все же хотим выполнить скрипт, то ее необходимо изменить. Выбрать можно одно из следующих значений:

• Restricted — в системе запрещено выполнение любых скриптов, допускается только выполнение отдельных команд. Это политика по умолчанию для клиентских ОС Windows;
• AllSigned — разрешено выполнение только скриптов, имеющих цифровую подпись от доверенного издателя;
• RemoteSigned — для удаленных скриптов требуется наличие цифровой подписи, локальные скрипты выполняются без ограничений. Удаленными считаются скрипты, полученные из удаленных источников (загруженные из интернета, полученные по электронной почте и т.п.), локальными — скрипты, созданные на локальном компьютере. Это политика по умолчанию для серверных ОС Windows;
• Unrestricted — разрешено выполнение любых скриптов, как локальных так и удаленных. При выполнении удаленного скрипта без цифровой подписи будет выдано предупреждение. Это дефолтная и единственно возможная политика для всех ОС, отличных от Windows;
• Bypass — разрешено выполнение любых скриптов, никакие предупреждения и запросы не выводятся;
• Default — сбрасывает политику на значение по умолчанию. Для серверов это RemoteSigned, для клиентов Restricted;
• Undefined — не определено. В случае, если значение политики не определено, то применяется политика Restricted.

Теоретически все понятно, проверим на практике. Для просмотра параметров политики используется командлет Get-ExecutionPolicy, а для  изменения Set-ExecutionPolicy.

Для начала выведем действующую политику выполнения командой:

Get-ExecutionPolicy

Как и ожидалось, текущая политика Restricted. Разрешим выполнение скриптов, установив для политики значение Unrestricted:

Set-ExecutionPolicy Unrestricted -Force

И еще попробуем запустить скрипт. На сей раз он выполнился без ошибок.

изменение политики выполнение на Unrestricted

Политика Unrestricted разрешает выполнение любых скриптов, но у нее все же есть ограничения. Для проверки я подготовил два скрипта, локальный localscript.ps1 и удаленный remotescript.ps1. Сначала запустим локальный, он выполнится без проблем. А вот при запуске удаленного скрипта PowerShell выдаст предупреждение и потребует подтвердить его запуск. При ручном выполнении это не является большой проблемой, а вот в случае автоматического запуска (напр. из планировщика) скрипт может не отработать.

выполнение локального и удаленного скрипта

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

установка политики выполнения Bypass

Следующим пунктом нашего меню идет политика RemoteSigned. Она является наиболее сбалансированной как с точки зрения безопасности, так и удобства использования, поэтому на серверах включена по умолчанию. Установим для политики значение RemoteSigned и проверим ее действие. Локальный скрипт снова выполняется без проблем, а удаленный выдает ошибку, поскольку у него нет подписи.

установка политики выполнения RemoteSigned

У вас может возникнуть вопрос, как именно PowerShell различает локальные и удаленные скрипты. Тут все просто. При загрузке файла приложение (напр. браузер) добавляет файл идентификатор зоны (ZoneId), который и определяет, откуда был взят файл. Идентификатор хранится в альтернативном потоке и имеет значение от 0 до 4:

• Локальный компьютер (0)
• Местная сеть (1)
• Надежные сайты (2)
• Интернет (3)
• Опасные сайты (4)

Если файл имеет ZoneId 3 или 4, то PowerShell считает его удаленным. А если на компьютере включена конфигурация усиленной безопасности Internet Explorer, то файлы, взятые из локальной сети, тоже могут считаться удаленными.

Как выполнить удаленный скрипт? Во первых его  можно разблокировать (превратить в локальный), для этого есть специальный командлет Unblock-File. Хотя если просто открыть скрипт на локальном компьютере и внести в него изменения, то он тоже станет локальным.

Ну и во вторых удаленный скрипт можно подписать. Подписывание скриптов — это тема отдельной статьи, поэтому вдаваться в подробности не будем. Просто подпишем его уже имеющимся сертификатом, проверим подпись и выполним. На сей раз успешно.

выполнение подписанного скрипта

Переходим к политике AllSigned. Это наиболее жесткая политика, требующая подписывания всех без исключения скриптов, как удаленных так и локальных. И даже с подписанными скриптами она работает не так, как RemoteSigned. Для примера сменим политику на AllSigned и снова запустим подписанный скрипт. В этот раз для его выполнения потребуется подтверждение, т.к. PowerShell посчитал подпись недоверенной.

запрос на выполнение подписанного скрипта

Области применения

Политика выполнения имеет свою область действия (scope). Всего есть 5 областей:

• LocalMachine — политика действует на всех пользователей данного компьютера. Значение хранится в реестре, в разделе HKEY_LOCAL_MACHINE;
• CurrentUser — политика действует только на текущего пользователя. Хранится в разделе реестра HKEY_CURRENT_USER;
• Process — действие политики распространяется только на текущий сеанс PowerShell. Значение хранится в переменной окружения $PSExecutionPolicyPreference и при закрытии сеанса удаляется;
• Userpolicy — политика действует на всех пользователей данного компьютера. Распространяется с помощью групповых политик. Значение хранится в разделе пользователя, соответственно политика применяется при входе пользователя в систему;
• MachinePolicy — действует на всех пользователей данного компьютера. Распространяется с помощью групповых политик. Значение хранится в разделе компьютера, политика применяется при загрузке системы;

Вывести значение политики для всех областей можно командой:

Get-ExecutionPolicy -List

Области действия политики выполнения

Получается, что при установке политики без указания области изменяется значение LocalMachine. Если же требуется указать конкретную область действия, то сделать это можно с помощью параметра Scope командлета Set-ExecutionPolicy. Для примера установим для области СurrentUser политику Bypass:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force

Затем проверим значение политики в текущем сеансе и убедимся в том, что оно изменилось на Bypass.

изменяем политику выполнения для текущего пользователя

Теперь установим политику Unrestricted для области Process:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force

Еще раз проверим текущую политику, теперь она имеет значение Unrestricted. Т.е. более ″конкретная″ политика всегда имеет больший приоритет.

изменяем политику выполнения для процесса

Для областей UserPolicy и MachinePolicy значение политики задаются через GPO. За настройку отвечает параметр Turn on Script Execution (Включить выполнение сценариев), находящийся в разделе Administrative TemplatesWindows ComponentsWindows PowerShell. Для UserPolicy он находится в конфигурации пользователя (User Configuration), для MachinePolicy — в конфигурации компьютера (Computer Configuration). Политика, применяемая к компьютеру, имеет приоритет перед политикой пользователя.

групповые политики PowerShell

Для установки политики надо включить параметр и выбрать одно из трех значений:

• Allow only signed scripts (Разрешать только подписанные сценарии) — политика AllSigned;
• Allow local scripts and remote signed scripts (разрешать локальные и удаленные подписанные сценарии) — политика RemoteSigned;
• Allow all scripts (Разрешать все сценарии) — политика Unrestricted.

Политика Bypass считается небезопасной и ее нельзя установить через групповые политики.

Установка политики выполнения через GPO

Для примера установим для MachinePolicy политику RemoteSigned и проверим результат. Как видите, политика, назначенная через GPO, имеет больший приоритет и переопределяет все остальные политики.

список политик выполнения по областям

Более того, при использовании GPO становится невозможным переназначить политики вручную. При попытке изменения выдается предупреждение, а текущая политика остается без изменений.

попытка изменения политики выполнения

А что будет, если ни для одной области политика не определена, т.е. везде стоит значение Undefined?  В этом случае все просто, выполнение всех скриптов запрещается, а текущая политика принимает значение Restricted.

политика Undefined

Обход политики

Можно ли как то  запустить скрип в обход политики выполнения, не изменяя ее значение? В принципе можно, есть несколько способов.

К примеру для того, чтобы выполнить скрипт, достаточно открыть его в проводнике, кликнуть правой клавишей мыши и выбрать пункт Выполнить с помощью PowewrShell (Run with PowerShell).  Это запускает оболочку PowerShell c политикой Bypass. При этом политика применяется только для выполнения конкретного скрипта, значение политики в реестре не изменяется.

Этот способ называется  ″Run with PowerShell″ и у него есть некоторые ограничения. Скрипты, запущенные таким образом, не могут взаимодействовать с пользователем (выводить сообщения на экран, требовать ввода данных и т.п.). Скрипт просто запускается, выполняется и немедленно закрывается.

выполнение скрипта PowerShell из проводника

Собственно говоря, предыдущий способ использует запуск PowerShell с указанием требуемой политики. Сделать это можно из командной строки, например для запуска скрипта можно попробовать такую команду:

powershell.exe -file .script.ps1 -Executionpolicy Bypass

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

ошибка при использовании политики Bypass

Еще один вариант — это попробовать изменить политику выполнения для области Process. Эта операция не вносит изменений в реестр и не требует прав администратора. Но в том случае, если для назначения политики выполнения используются групповые политики, этот способ не сработает.

Ну и наконец можно просто считать содержимое скрипта и выполнить его в виде команды. Например так:

$script = Get-Content ./script.ps1
Invoke-Expression -Command ″$script″

выполнение скрипта в обход политики

В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell. Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script). PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.

Сценарий (script) — простая программа написана в коде, который работает линейно на нашем компьютере. Мы можем создавать и выполнять собственные сценарии для автоматизации задач, или приложения могут выполнять их для выполнения определенных конфигураций и задач. По умолчанию Windows 10 не запрещает ни приложениям, ни нам запускать сценарии в системе, если они подписаны или являются «своими». Проблема возникает, когда мы запускаем свой скрипт, и нам выдает ошибку «Выполнение сценариев отключено в этой системе«. Это многоуровневая мера безопасности в PowerShell, которая предотвращает запуск вредоносных сценариев и может нанести вред системе. Давайте разберем, как изменить политики безопасности для PowerShell.

Политики выполнения скриптов в PowerShell

Если вы увидели ошибку «Выполнение сценариев отключено в этой системе«, то можем проверить конфигурацию политик для запуска сценариев, которые настроены в Windows 10. Откройте PowerShell от имени администратора и:

  • Get-ExecutionPolicy -List

Мы можем видеть несколько уровней разрешений политик для запуска сценариев.

Конфигурация политик powershell

Чтобы изменить политику запуска скрипта, вы должны знать различные уровни привилегий, которые мы можем назначить каждому из областей.

  • Restricted: заблокировано выполнение любых скриптов, но разрешается работа интерактивных команд.
  • RemoteSigned: загруженные скрипты должны быть подписаны доверенным издателем. Локальные скрипты работают без подписи
  • AllSigned: разрешает выполнение любого подписанного скрипта, как локального, так и удаленного (загруженного).
  • Unrestricted: без ограничений. Вы можете запустить все сценарии, даже те, которые не подписаны.

Когда вы знаете условия и ограничения скриптов, то можете изменить их. К примеру, чтобы исправить ошибку «Выполнение сценариев отключено в этой системе» достаточно ввести один апплет. Откройте PowerShell от имени админа и:

channel

  • Set-ExecutionPolicy Unrestricted -Scope CurrentUser — запуск без ограничения для пользователя.
  • Set-ExecutionPolicyRestricted -Scope CurrentUser вернуть назад, если будет нужно.

Разрешает без ограничений выполнять сценарии для локального пользователя. Ключ -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser«, то применяется только к текущему пользователю, а когда вы вводите «LocalMachine«, он применяется ко всей системе.

Разрешает без ограничений выполнять сценарии для локального пользователя

Если выше способ не помог вам запустить свой скрипт и ошибка «Выполнение сценариев отключено в этой системе» появляется, то можно снять полностью ограничения. Вы должны понимать, что это большой риск и ваш скрипт должен быть безопасен на 101%. Откройте PowerShell от имени админа и:

  • Set-ExecutionPolicy Unrestricted — разрешить выполнение скриптов без ограничений.
  • Set-ExecutionPolicy Restricted— вернуть назад по умолчанию.

разрешить выполнение скриптов без ограничений


Смотрите еще:

  • Что за папка ProgramData Windows 10
  • Исправить ошибку Boot Device Not Found на ноутбуке или ПК
  • Antimalware Service Executable (MsMpEng) — Грузит Систему
  • Ошибка 0x80070490 в Центре обновления Windows 10
  • Защитник Windows: Ограничить нагрузку на процессор

[ Telegram | Поддержать ]

Если вы знаете, как писать простые сценарии PowerShell или пакетные сценарии, вы можете автоматизировать довольно много вещей в Windows 10. На самом деле, даже если вам нужно потратить немного времени на написание идеального сценария для чего-то, время будет сэкономлено, когда все будет готово. будет стоить времени, потраченного на его написание. Тем не менее, сценарии могут быть опасными: когда вы пытаетесь запустить сценарии в PowerShell, вы получаете довольно длинное сообщение об ошибке, которое, по сути, сообщает вам, что «выполнение сценариев отключено в этой системе».

Это мера безопасности в PowerShell для предотвращения запуска вредоносных сценариев и потенциального вреда для системы. Конечно, сценарий, который вы написали самостоятельно, не будет вредоносным и должен быть запущен. Чтобы решить эту проблему, вам необходимо изменить политику выполнения в PowerShell. Вот как.

Исправление запущенных скриптов отключено в этой системе

Откройте PowerShell с правами администратора и выполните следующую команду.

Get-ExecutionPolicy -List

Это покажет вам политику выполнения, установленную для вашего пользователя и вашего компьютера. Вероятно, что для обеих или, по крайней мере, для политики CurrentUser задано значение Restricted.

Чтобы исправить ошибку «запущенные сценарии отключены в этой системе», вам необходимо изменить политику для CurrentUser. Для этого выполните следующую команду.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Подтвердите, что вы хотите внести изменения, и вы сможете запустить сценарий.

Это должно позволить вам запускать большинство скриптов, однако, если вы по-прежнему получаете ту же ошибку, вам, вероятно, нужно изменить политику выполнения для машины. Для этого вы можете изменить предыдущую команду, но для этого вам потребуются права администратора.

Запустите эту команду.

Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

Подтвердите, что вы хотите внести изменения, а затем попробуйте запустить сценарий.

Это должно помочь, если вы сами написали сценарий, если вы загрузили его в Интернете, и он не подписан, вам необходимо изменить политику выполнения на Unrestricted. Для этого замените «RemoteSigned» во всех вышеперечисленных командах на «Unrestricted». Будьте очень осторожны при запуске скриптов, если вы их загружаете. Они могут быть опасными.

Set-ExecutionPolicy

Это довольно простая команда для настройки политики выполнения в PowerShell. Эта команда может иметь четыре различных параметра или состояния: Restricted, AllSigned, RemoteSigned и Unrestricted.

Переключатель -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser», он применяется только к текущему пользователю, а когда вы вводите «LocalMachine», он применяется ко всей системе.

Что вы думаете об этой статье?

Like this post? Please share to your friends:
  • Windows 10 разный фон на разных мониторах
  • Windows 10 разница в сборках windows
  • Windows 10 размытые шрифты на рабочем столе
  • Windows 10 размытые шрифты в приложениях
  • Windows 10 разметка диска через командную строку