- PowerShell: Выполнение сценариев отключено в этой системе
- Политики выполнения скриптов в PowerShell
- linux
- PowerShell: Выполнение сценариев отключено в этой системе
- Политики выполнения скриптов в PowerShell
- PowerShell: Не удается загрузить файл, так как выполнение скриптов запрещено для данной системы
- О запрете на выполнение скриптов PowerShell
- Отключение запрета на выполнение скриптов через PowerShell
- Отключение запрета через групповые политики
- Отключение запрета через реестр
- Как включить выполнение сценариев PowerShell в Windows 10
- Включить выполнение сценариев PowerShell в групповых политиках
- Включить выполнение сценариев PowerShell в редакторе реестра
- Настройка политики запуска скриптов (Execution Policy) PowerShell
- Выполнение PowerShell скриптов запрещено для данной системы
- Как разрешить запуск скриптов PowerShell с помощью Execution Policy?
- Настройка PowerShell Execution Policy с помощью групповых политик
- Способы обхода политики PowerShell Execution
PowerShell: Выполнение сценариев отключено в этой системе
В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell. Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script). PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.
Сценарий (script) — простая программа написана в коде, который работает линейно на нашем компьютере. Мы можем создавать и выполнять собственные сценарии для автоматизации задач, или приложения могут выполнять их для выполнения определенных конфигураций и задач. По умолчанию Windows 10 не запрещает ни приложениям, ни нам запускать сценарии в системе, если они подписаны или являются «своими». Проблема возникает, когда мы запускаем свой скрипт, и нам выдает ошибку «Выполнение сценариев отключено в этой системе«. Это многоуровневая мера безопасности в PowerShell, которая предотвращает запуск вредоносных сценариев и может нанести вред системе. Давайте разберем, как изменить политики безопасности для PowerShell.
Политики выполнения скриптов в PowerShell
Если вы увидели ошибку «Выполнение сценариев отключено в этой системе«, то можем проверить конфигурацию политик для запуска сценариев, которые настроены в Windows 10. Откройте PowerShell от имени администратора и:
- Get-ExecutionPolicy -List
Мы можем видеть несколько уровней разрешений политик для запуска сценариев.
Чтобы изменить политику запуска скрипта, вы должны знать различные уровни привилегий, которые мы можем назначить каждому из областей.
- Restricted: заблокировано выполнение любых скриптов, но разрешается работа интерактивных команд.
- RemoteSigned: загруженные скрипты должны быть подписаны доверенным издателем. Локальные скрипты работают без подписи
- AllSigned: разрешает выполнение любого подписанного скрипта, как локального, так и удаленного (загруженного).
- Unrestricted: без ограничений. Вы можете запустить все сценарии, даже те, которые не подписаны.
Когда вы знаете условия и ограничения скриптов, то можете изменить их. К примеру, чтобы исправить ошибку «Выполнение сценариев отключено в этой системе» достаточно ввести один апплет. Откройте PowerShell от имени админа и:
- Set-ExecutionPolicy Unrestricted -Scope CurrentUser — запуск без ограничения для пользователя.
- Set-ExecutionPolicyRestricted -Scope CurrentUser вернуть назад, если будет нужно.
Разрешает без ограничений выполнять сценарии для локального пользователя. Ключ -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser«, то применяется только к текущему пользователю, а когда вы вводите «LocalMachine«, он применяется ко всей системе.
Если выше способ не помог вам запустить свой скрипт и ошибка «Выполнение сценариев отключено в этой системе» появляется, то можно снять полностью ограничения. Вы должны понимать, что это большой риск и ваш скрипт должен быть безопасен на 101%. Откройте PowerShell от имени админа и:
- Set-ExecutionPolicy Unrestricted — разрешить выполнение скриптов без ограничений.
- Set-ExecutionPolicy Restricted — вернуть назад по умолчанию.
linux
PowerShell: Выполнение сценариев отключено в этой системе
- Получить ссылку
- Твиттер
- Электронная почта
- Другие приложения
В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell. Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script). PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.
Сценарий (script) — простая программа написана в коде, который работает линейно на нашем компьютере. Мы можем создавать и выполнять собственные сценарии для автоматизации задач, или приложения могут выполнять их для выполнения определенных конфигураций и задач. По умолчанию Windows 10 не запрещает ни приложениям, ни нам запускать сценарии в системе, если они подписаны или являются «своими». Проблема возникает, когда мы запускаем свой скрипт, и нам выдает ошибку «Выполнение сценариев отключено в этой системе». Это многоуровневая мера безопасности в PowerShell, которая предотвращает запуск вредоносных сценариев и может нанести вред системе. Давайте разберем, как изменить политики безопасности для PowerShell.
Политики выполнения скриптов в PowerShell
Если вы увидели ошибку «Выполнение сценариев отключено в этой системе», то можем проверить конфигурацию политик для запуска сценариев, которые настроены в Windows 10. Откройте PowerShell от имени администратора и:
Get-ExecutionPolicy -List
Мы можем видеть несколько уровней разрешений политик для запуска сценариев.
Чтобы изменить политику запуска скрипта, вы должны знать различные уровни привилегий, которые мы можем назначить каждому из областей.
Restricted: заблокировано выполнение любых скриптов, но разрешается работа интерактивных команд.
RemoteSigned: загруженные скрипты должны быть подписаны доверенным издателем. Локальные скрипты работают без подписи
AllSigned: разрешает выполнение любого подписанного скрипта, как локального, так и удаленного (загруженного).
Unrestricted: без ограничений. Вы можете запустить все сценарии, даже те, которые не подписаны.
Когда вы знаете условия и ограничения скриптов, то можете изменить их. К примеру, чтобы исправить ошибку «Выполнение сценариев отключено в этой системе» достаточно ввести один апплет. Откройте PowerShell от имени админа и:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser — запуск без ограничения для пользователя.
Set-ExecutionPolicyRestricted -Scope CurrentUser вернуть назад, если будет нужно.
Разрешает без ограничений выполнять сценарии для локального пользователя. Ключ -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser», то применяется только к текущему пользователю, а когда вы вводите «LocalMachine», он применяется ко всей системе.
Если выше способ не помог вам запустить свой скрипт и ошибка «Выполнение сценариев отключено в этой системе» появляется, то можно снять полностью ограничения. Вы должны понимать, что это большой риск и ваш скрипт должен быть безопасен на 101%. Откройте PowerShell от имени админа и:
Set-ExecutionPolicy Unrestricted — разрешить выполнение скриптов без ограничений.
Set-ExecutionPolicy Restricted- вернуть назад по умолчанию.
PowerShell: Не удается загрузить файл, так как выполнение скриптов запрещено для данной системы
О запрете на выполнение скриптов PowerShell
В целях безопасности, в операционных системах Windows, по умолчанию запрещено выполнение созданных вручную файлов ps1, они же скрипты PowerShell. Так что, когда вы попытаетесь запустить какой-либо скрипт через PowerShell, то скорее всего получите следующее уведомление:
Не удается загрузить файл C:\Documents and Settings\Recluse\Рабочий стол\script.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
В данном случае выполнению скрипта препятствует включенный запрет на выполнение неподписанных скриптов.
Отключение запрета на выполнение скриптов через PowerShell
Отключить запрет можно следующей командой PowerShell:
Однако, в таком случае можно будет выполнить любой скрипт PowerShell, даже запущенный «из интернета». Поэтому, куда безопаснее будет отключить проверку подписи для скриптов PowerShell только для локальных скриптов. Делается это так:
Для того, чтобы вернуть все как было (запретить выполнение любых скриптов), нужно выполнить команду:
Кроме этого, можно обойти запрет на выполнение скрипта просто используя параметр -ExecutionPolicy Bypass запуска для PowerShell. То есть, если Вам нужно выполнить файл script.ps1, то можно это сделать следующим образом:
Отключение запрета через групповые политики
Настройки PowerShell находятся в отдельном разделе групповых политик — Конфигурация компьютера — Политики — Административные шаблоны — Компоненты Windows — Windows PowerShell. Конкретно, для разрешения выполнения скриптов, нужно открыть параметр «Включить выполнение сценариев», и задать ему значение «Разрешить локальные сценарии и удаленные подписанные сценарии».
Отключение запрета через реестр
Еще одним способом отключения ограничения на выполнение скриптов Powershell, является редактирование реестра. Параметр, который отвечает за выполнение скриптов PowerShell находится по следующему адресу: HKEY_CURRENT_USER\Software\MicrosoftPowerShell\1\ShellIds\Microsoft.PowerShell , и носит название ExcutionPolicy . У данного параметра возможны следующие значения:
- Restricted
- AllSigned
- RemoteSigned
- Unrestricted
Как включить выполнение сценариев PowerShell в Windows 10
Сегодня мы рассмотрим как включить выполнение сценариев PowerShell в Windows 10.
Включить выполнение сценариев PowerShell в групповых политиках
Данный способ работает в Windows 10 Pro, Enterprise или Education, если у вас домашняя версия десятки – переходите ко второму способу.
1. Откройте групповые политики: в строке поиска или в меню выполнить (выполнить вызывается клавишами Win+R) введите gpedit.msc и нажмите клавишу Enter.
2. Зайдите в “Конфигурация компьютера” => “Административные шаблоны” => “Компоненты Windows” => “Windows PowerShell” => откройте параметр “Включить выполнение сценариев”.
3. Поставьте точку в поле “Включено”, в строке “Политика выполнения” выберите нужное и нажмите на “ОК”:
- разрешать только подписанные сценарии;
- разрешать локальные сценарии и удаленные подписанные сценарии;
- разрешать все сценарии.
Включить выполнение сценариев PowerShell в редакторе реестра
1. В строке поиска или в меню “Выполнить” (Win+R) введите команду regedit и нажмите клавишу Enter.
2. Перейдите по пути HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows, нажмите на раздел Windows правой кнопкой мыши, выберите “Создать” => “Раздел” => назовите новый раздел PowerShell
3. Нажмите на раздел PowerShell правой кнопкой мыши, выберите “Создать” => “Параметр DWORD (32 бита)” => назовите новый параметр EnableScripts
4. Откройте параметр EnableScripts в поле “Значение” введите 1 и нажмите на “ОК”.
5. Нажмите на раздел PowerShell правой кнопкой мыши, выберите “Создать” => “Строковый параметр” => назовите новый параметр ExecutionPolicy
6. Откройте параметр ExecutionPolicy в поле “Значение” введите нужное значение:
AllSigned чтобы разрешать только подписанные сценарии;
RemoteSigned разрешать локальные сценарии и удаленные подписанные сценарии;
Unrestricted разрешать все сценарии.
Когда введете нужное значение нажмите на “ОК” и закройте редактор реестра. На сегодня все, если вы знаете другие способы – пишите в комментариях! Удачи Вам 🙂
Настройка политики запуска скриптов (Execution Policy) PowerShell
По-умолчанию настройки Windows запрещают запуск скриптов PowerShell. Это необходимо для предотвращения запуска вредоносного кода на PowerShell. Настройки политик запуска PowerShell скриптов определяются в Execution Policy. В этой статье мы рассмотрим доступные политики запуска PS скриптов, как изменить Execution Policy и настроить политики использования PowerShell скриптов на компьютерах в домене.
Выполнение PowerShell скриптов запрещено для данной системы
При попытке выполнить PowerShell скрипт (файл с расширением PS1) на чистой Windows 10, появляется ошибка:
Текущее значение политики выполнения скриптов PowerShell на компьютере можно получить командой:
Доступны следующие значения PowerShell Execution Policy:
- Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды в консоли;
- AllSigned – разрешено выполнять только подписанные PS скрипты с цифровой подписью от доверенного издателя (можно подписать скрипт самоподписанным сертификатом и добавить его в доверенные). При запуске недоверенных скриптов появляется предупреждение:
- RemoteSigned – можно запускать локальные PowerShell скрипты без ограничения. Можно запускать удаленные PS файлы с цифровой подписью (нельзя запустить PS1 файлы, скачанные из Интернета, запущенные из сетевой папки по UNC пути и т.д.);
- Unrestricted – разрешен запуск всех PowerShell скриптов;
Как разрешить запуск скриптов PowerShell с помощью Execution Policy?
Чтобы изменить текущее значение политики запуска PowerShell скриптов, используется командлет Set-ExecutionPolicy.
Например, разрешим запуск локальных скриптов:
Подтвердите изменение политики запуска PS1 скриптов, нажав Y или A.
Чтобы запрос не появлялся, можно использовать параметр Force.
Set-ExecutionPolicy RemoteSigned –Force
Если вы установили значение политики PowerShell Execution Policy в Unrestricted, то при запуске удаленных скриптов из сетевых каталогов по UNC пути, скачанных из интернета файлов, все равно будет появляться предупреждение:
Также следует различать различные области действия политик выполнения скриптов 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 для всех областей:
Значение политики выполнения, которые вы задаете с помощью командлета Set-ExecutionPolicy для областей CurrentUser и LocalMachine, хранятся в реестре. Например, выполните командлет:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted –Force
Откройте ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell и проверьте значение REG_SZ параметра ExecutionPolicy. Оно изменилось на Restricted (допустимые значения параметра Restricted, AllSigned, RemoteSigned, Bypass, Unrestricted и Undefined).
Аналогичные настройки для области CurrentUser находятся в разделе реестра пользователя HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.
Отметим, что чаще всего в корпоративной среде используется ExecutionPolicy со значением AllSigned на уровне LocalMachine. Это обеспечивает максимальный баланс между безопасностью и удобством. Для личного пользования на компьютере можно использовать RemoteSigned. Ну а Bypass политику лучше использовать только для запуска отдельных задач (например для запуска скриптов через GPO или заданий планировщика).
Настройка PowerShell Execution Policy с помощью групповых политик
Вы можете настроить политику выполнения PowerShel скриптов на серверах или компьютерах домена с помощью групповых политик.
- С помощью редактора доменных GPO (gpmc.msc) создайте новую GPO (или отредактируйте) существующую и назначьте ее на OU с компьютерами, к которым нужно применить политику запуска PowerShell скриптов;
- В редакторе политики перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows PowerShell и найдите политику Turn on Script Execution (Включить выполнение сценариев);
После настройки политики выполнения через GPO вы не сможете изменить настройки политики выполнения скриптов вручную. При попытке изменить настройки Execution Policy на компьютере, на который применяется такая GPO, появится ошибка:
Способы обхода политики PowerShell Execution
Есть несколько трюков, которые могут помочь вам, когда нужно запустить на компьютере PowerShell скрипт, не изменяя настройки политики выполнения. Например, я хочу запустить простой PS1 скрипт, который поверяет, что запущен с правами администратора.
Можно с помощью Get-Content получить содержимое скрипта и перенаправить его в стандартныq поток ввода консоли PS.