Ошибка «Невозможно загрузить файл ….ps1, так как выполнение сценариев отключено в этой системе» (РЕШЕНО)
В настоящее время в каждую Windows предустановлен PowerShell.
PowerShell — это не только консоль предоставляющая доступ к утилитам командной строки, но и мощное средство администрирования и автоматизации. В PowerShell реализовано множество команд и функций, которые могут добавляться как модули устанавливаемым программным обеспечением.
PowerShell поддерживает как выполнение отдельных команд, так и пакетные файлы с набором команд, то есть скрипты. Эти скрипты можно назвать аналогами файлов .bat для оболочки CMD (которая, кстати, по-прежнему доступна в Windows).
Но при попытке запуска скрипта PowerShell вас, вероятно, ждёт неприятный сюрприз. К примеру, моя попытка выполнить файл PowerShell с расширением .ps1:
.\Invoke-SMBClient.ps1
Эта команда вызвала ошибку:
.\Invoke-SMBClient.ps1 : Невозможно загрузить файл C:\Users\MiAl\Downloads\Invoke-TheHash-ma ster\Invoke-SMBClient.ps1, так как выполнение сценариев отключено в этой системе. Для получе ния дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/f wlink/?LinkID=135170. строка:1 знак:1 + .\Invoke-SMBClient.ps1 + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : Ошибка безопасности: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Ключевой является информация:
Невозможно загрузить файл . ps1, так как выполнение сценариев отключено в этой системе
Причина ошибки в том, что в системе Windows по умолчанию запрещено запускать пакетные файлы, скрипты PowerShell.
Как разрешить в Windows выполнение скриптов PowerShell
Проблема заключается в том, что политика выполнения скриптов запрещает выполнять эти самые скрипты. Узнать текущее значение политики можно командой:
Get-ExecutionPolicy
Для своей системы я получил значение:
Restricted
Чтобы разрешить выполнение файлов с расширением .ps1, то есть чтобы запустить скрипт PowerShell в Windows, выполните команду:
Set-ExecutionPolicy unrestricted
Когда поступит запрос, введите Y.
Данные команды нужно выполнять в PowerShell, а не в CMD.
Как запретить в Windows выполнение скриптов PowerShell
Чтобы вновь включить запрет на выполнение пакетных файлов в PowerShell достаточно выполнить команду:
Set-ExecutionPolicy Restricted
Опасно ли разрешать выполнение файлов со скриптами PowerShell в Windows?
При выполнении команды по изменению политика запуска скриптов каждый раз показывается сообщение:
Изменение политики выполнения Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения? [Y] Да - Y [A] Да для всех - A [N] Н
Предупреждение кажется довольно страшным, но в самой справке, на которую дана ссылка, написано, что данная политика запрета запуска скриптов не является мерой безопасности, поскольку пользователь по-прежнему может выполнить команды одну за другой. Более того, у хакеров есть возможность обойти этот запрет и запустить скрипт даже при отключённой политике.
Как сказано в документации, это мера для предотвращения случайного выполнения скриптов PowerShell и случайных изменений.
То есть в целом изменение этой настройки не уменьшает уровень безопасности системы. Но если вы редко запускаете скрипты PowerShell, то можете установить уровень Restricted, то есть запрет выполнения сценариев.
Ошибка «»Set-ExecutionPolicy» не является внутренней или внешней командой, исполняемой программой или пакетным файлом»
Если при выполнении
C:\Windows\system32>Set-ExecutionPolicy unrestricted
вы получили ошибку
"Set-ExecutionPolicy" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то это означает, что вы запускаете указанную команду в CMD (командная строка Windows), а не в PowerShell. Чтобы ошибка исчезла, откройте PowerShell и выполните команду там.
Ошибки «Отказано в доступе к разделу реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds» и «Access to the path ‘C:\Program Files\PowerShell\7-preview\powershell.config.json’ is denied»
Во время выполнения команды
Set-ExecutionPolicy unrestricted
Вы можете столкнуться с ошибкой:
Set-ExecutionPolicy : Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell". Чтобы изменить политику выполнения для области (LocalMachine), используемой по умолчанию, запустите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить политику выполнения для текущего пользователя, выполните "Set-ExecutionPolicy -Scope CurrentUser". строка:1 знак:1 + Set-ExecutionPolicy unrestricted + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
В PowerShell 7.* ошибка выглядит так:
Set-ExecutionPolicy: Access to the path 'C:\Program Files\PowerShell\7-preview\powershell.config.json' is denied. To change the execution policy for the default (LocalMachine) scope, start PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".
Причина ошибки в том, что указанную команду нужно выполнять с правами администратора.
Чтобы запустить PowerShell с правами администратора, нажмите «Win+x», либо правой кнопкой мыши по меню «Пуск».
И выберите «PowerShell (Администратор)» либо «Терминал Windows (Администратор)».
Смотрите также:
- Как установить PowerShell 7 в Windows 10
- Настройка рабочего окружения PowerShell в Windows и Linux
- Доступен новый Windows Terminal — он потрясающий
PowerShell: Не удается загрузить файл, так как выполнение скриптов запрещено для данной системы

В целях безопасности, в операционных системах Windows, по умолчанию запрещено выполнение созданных вручную файлов ps1, они же скрипты PowerShell. Так что, когда вы попытаетесь запустить какой-либо скрипт через PowerShell, то скорее всего получите следующее уведомление:
Не удается загрузить файл C:\Documents and Settings\Recluse\Рабочий стол\script.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.
В данном случае выполнению скрипта препятствует включенный запрет на выполнение неподписанных скриптов.
Отключение запрета на выполнение скриптов через PowerShell
Отключить запрет можно следующей командой PowerShell:
Set-ExecutionPolicy Unrestricted
Однако, в таком случае можно будет выполнить любой скрипт PowerShell, даже запущенный «из интернета». Поэтому, куда безопаснее будет отключить проверку подписи для скриптов PowerShell только для локальных скриптов. Делается это так:
Set-ExecutionPolicy RemoteSigned
Для того, чтобы вернуть все как было (запретить выполнение любых скриптов), нужно выполнить команду:
Set-ExecutionPolicy Restricted
Кроме этого, можно обойти запрет на выполнение скрипта просто используя параметр -ExecutionPolicy Bypass запуска для PowerShell. То есть, если Вам нужно выполнить файл script.ps1, то можно это сделать следующим образом:
PowerShell.exe -ExecutionPolicy Bypass -File script.ps1
Отключение запрета через групповые политики

Настройки PowerShell находятся в отдельном разделе групповых политик — Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Windows PowerShell. Конкретно, для разрешения выполнения скриптов, нужно открыть параметр «Включить выполнение сценариев«, и задать ему значение «Разрешить локальные сценарии и удаленные подписанные сценарии«.
Отключение запрета через реестр
- Restricted
- AllSigned
- RemoteSigned
- Unrestricted
powershell выполнение сценариев отключено в этой системе
если выполнять из C:\Windows\system32 то все хорошо, если с D:\SCRIPTS\sc.ps1 то все не хочет, как это можно исправить?
Невозможно загрузить файл D:\SCRIPTS\sc.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу http://go.microsoft.com/fwlink/?LinkID=135170. + CategoryInfo : Ошибка безопасности: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnauthorizedAccess
$ipv4 = (Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString $num = $ipv4.split(".")[-1] $ie = Invoke-WebRequest -Uri "http://****/indata.php?nt=$num" -Method POST -ContentType "text/plain; charset=utf-8"
Отслеживать
задан 22 янв 2019 в 11:55
641 1 1 золотой знак 6 6 серебряных знаков 15 15 бронзовых знаков
Переходил по указанному адресу? about_Execution_Policies
22 янв 2019 в 11:57
Да там сказано через Set-ExecutionPolicy Unrestricted но это ничем хорошим не закончится
22 янв 2019 в 11:59
Там кроме Unrestricted еще 5 политик есть
22 янв 2019 в 12:01
там только либо разрешить всем сценариям работать либо нет, можно как то работать с одним сценарием?
22 янв 2019 в 12:02
можно разрешить на текущий сеанс только.
22 янв 2019 в 12:05
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
- Открываем терминал от админа.
- Пишем и запускаем: Set-ExecutionPolicy RemoteSigned
- На вопрос отвечаем: A (Да для всех)
Отслеживать
ответ дан 2 ноя 2019 в 8:59
Serg The Bright Serg The Bright
1,466 1 1 золотой знак 8 8 серебряных знаков 7 7 бронзовых знаков
Это единственный во всем интернете, включая англоязычный, простой и верный ответ.
4 дек 2019 в 12:57
Спасибо за ответ!
8 ноя 2020 в 10:46
Единственное что тут можно добавить — это рекомендацию: если это нужно для разовой установки чего-то — то лучше потом вернуть состояние в стандартное: Set-ExecutionPolicy Default. Это поможет избежать вредоносного ПО 🙂
2 дек 2020 в 9:06
По ссылке, которая указанна у сообщении об ошибке, идет описание политик выполнения.
Для запуска локальных скриптов, нужно установить минимум политику REMOTESIGNED, в этом случае можно будет запускать локальные не подписанные скрипты.
Для установки политики можно воспользоваться командой
Set-ExecutionPolicy -ExecutionPolicy
Так же можно ограничить область применения данной политики, для этого можно воспользоваться параметром -Scope . По умолчанию политика устанавливается для всех пользователей на локальном компьютере, однако с помощью значения CurrentUser , можно ограничить применение только для текущего пользователя, а с помощью значения Process применение ограничится текущим запущенным процессом PowerShell.
Таким образом для выполнения можно выполнить сначала команду:
> Set-ExecutionPolicy RemoteSigned -Scope Process
и затем запустить нужный скрипт.
Как решить проблему с терминалом PyCharm?

Новичок в python. Подскажите, пожалуйста, почему терминал выдает ошибку и невозможно загрузить библиотеку из-за этого.. Как исправить?? Пишет
Невозможно загрузить файл C:\Users\User\PycharmProjects\pythonProject2\venv\Scripts\activate.ps1, так как выполнение сценариев отключено в этой системе. Для получени
я дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=135170.
+ CategoryInfo : Ошибка безопасности: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\User\PycharmProjects\pythonProject2>
Прикрепляю скрин:
- Вопрос задан более года назад
- 42395 просмотров
2 комментария
Простой 2 комментария

Модератор @TosterModerator
Всю текстовую информацию следует размещать в виде текста. Код оборачивать тегом code.
Не следует злоупотреблять bold и другими выделениями шрифтов текста.
Максим Якимов @Melomanium
Добрый день villanelle1. Обновите PowerShell. У меня на данный момент версия (7.2.5). Зайдите в PyCharm IDE, далее Settings/Tools/Terminal. В параметрах ShellPath выбираете путь до ранее установленной обновленной версии PowerShell, примените настройки. Перезапустите программу, все проблемы исчезнут. Пс. Предварительно Вам надо посмотреть какая групповая политика у Вас сейчас есть. Делается это командой Get-ExecutionPolicy в PowerShell, должна быть она Unrestricted, если другая, командой Set-ExecutionPolicy Unrestricted -Force, можно ее включить. Примечание — У меня есть подозрение что должно работать и после обновления и замены пути к PowerShell. Удачи!
Решения вопроса 0
Ответы на вопрос 5
Максим Якимов @Melomanium
«Системный администратор»

Добрый день villanelle1. Обновите PowerShell. У меня на данный момент версия (7.2.5). Зайдите в PyCharm IDE, далее Settings/Tools/Terminal. В параметрах ShellPath выбираете путь до ранее установленной обновленной версии PowerShell, примените настройки. Перезапустите программу, все проблемы исчезнут. Пс. Предварительно Вам надо посмотреть какая групповая политика у Вас сейчас есть. Делается это командой Get-ExecutionPolicy в PowerShell, должна быть она Unrestricted, если другая, командой Set-ExecutionPolicy Unrestricted -Force, можно ее включить. Примечание — У меня есть подозрение что должно работать после обновления и замены пути к PowerShell. Удачи!
Ответ написан более года назад
Комментировать
Нравится 11 Комментировать

Работаю с Python/Django
Set-ExecutionPolicy Unrestricted #Позволит запускать любые скрипты (более низкий уровень безопасности) Set-ExecutionPolicy RemoteSigned # Позволит запускать локальные скрипты