Все статьи
21 сентября 2026 г.·3 мин чтения

«Выполнение сценариев отключено в этой системе»: как исправить в PowerShell без риска

Почему PowerShell не даёт активировать venv, запустить npm, yarn или Activate.ps1, и как это исправить: RemoteSigned только для своего пользователя, разовый обход, запуск через cmd. Что делать, если политику задаёт администратор.

.\venv\Scripts\Activate.ps1 : Невозможно загрузить файл C:\project\venv\Scripts\Activate.ps1,
так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений
см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=135170.
    + CategoryInfo          : Ошибка безопасности: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

В английской Windows то же звучит как cannot be loaded because running scripts is disabled on this system. Обычно ошибка вылезает при активации виртуального окружения Python, при запуске npm, yarn, pnpm, ng или любого .ps1 из инструкции.

С файлом всё в порядке. Это политика выполнения PowerShell: на домашних версиях Windows она по умолчанию запрещает запуск любых скриптов .ps1. Исправляется одной командой, но важно выбрать правильную.

Сначала посмотри, что стоит сейчас

Get-ExecutionPolicy -List

Выведется таблица из пяти уровней:

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine      Restricted

Действует самый верхний уровень, где стоит не Undefined. Если MachinePolicy или UserPolicy что-то задают, это групповая политика администратора, и команды ниже её не перебьют. Про этот случай — в конце статьи.

Исправление: RemoteSigned для своего пользователя

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Подтверди Y. Права администратора не нужны, меняется только твоя учётная запись.

RemoteSigned значит: скрипты, созданные на этом компьютере (в том числе Activate.ps1 внутри твоего venv и npm.ps1, который поставил установщик Node.js), запускаются. Скачанные из интернета запускаются, только если подписаны. Это разумный баланс, и именно так политика настроена по умолчанию на Windows Server.

В Windows 11 то же самое переключается мышкой: «Параметры → Система → Для разработчиков → PowerShell», пункт про запуск локальных скриптов без подписи.

Чего не делать. Советы «поставь Unrestricted» или Bypass для LocalMachine снимают защиту для всех пользователей и всех скриптов, включая скачанные. Для venv и npm это не нужно.

Разовый обход, без изменения настроек

Если менять политику не хочется, разреши скрипты только в текущем окне. Закроешь окно — всё вернётся:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
.\venv\Scripts\Activate.ps1

Обход без PowerShell вообще

Политика касается только .ps1. У большинства инструментов рядом лежит версия для обычной командной строки:

Что падаетЧто запустить вместо
.\venv\Scripts\Activate.ps1в cmd: venv\Scripts\activate.bat
npm install в PowerShellnpm.cmd install
yarn, pnpm, npxyarn.cmd, pnpm.cmd, npx.cmd
Терминал VS CodeCtrl+Shift+P → «Terminal: Select Default Profile» → Command Prompt

Для venv активация вообще необязательна: можно сразу вызывать его Python, .\venv\Scripts\python.exe main.py и .\venv\Scripts\python.exe -m pip install ....

Если скрипт скачан из интернета

При RemoteSigned скачанный .ps1 без подписи всё равно не запустится, только ошибка будет другой: «файл не имеет цифровой подписи». Если ты доверяешь источнику и прочитал скрипт, сними отметку «скачано из интернета»:

Unblock-File -Path .\install.ps1

Отдельно про популярные однострочники вида irm https://... | iex. Они скачивают и сразу выполняют чужой код, минуя всякие проверки. Запускай такое, только если знаешь, чей это код и что он делает. Инструкции «активировать Windows одной командой» сюда не относятся — их запускать не стоит.

Если политику задаёт администратор

Когда в Get-ExecutionPolicy -List заполнены MachinePolicy или UserPolicy, компьютер управляется групповой политикой, обычно рабочей. Set-ExecutionPolicy выдаст предупреждение, что настройка переопределена. Тут два честных пути: обходы через cmd и .cmd-файлы из таблицы выше или просьба к администратору. Ломать корпоративную политику не надо: это нарушение правил компании, и её всё равно вернут при следующем обновлении политик.

Как с этим работает агент

Дока выполняет команды на Windows через cmd.exe, поэтому политика PowerShell её собственную работу не блокирует: агент сам запустит activate.bat, npm.cmd или вызовет Python из venv напрямую. Если нужно поменять политику для тебя, он покажет команду с -Scope CurrentUser и выполнит её только после подтверждения. Каждую команду ты видишь заранее.

Что дальше, когда окружение активировалось, но скрипт падает на импорте, — в статье про ModuleNotFoundError: No module named.