Ошибка скрипты заблокированы в системе в терминале PowerShell

Как исправить ошибку скрипты заблокированы в системе в терминале PowerShell

Ошибка "скрипты заблокированы в системе" в PowerShell исправляется изменением политики выполнения скриптов через команду Set-ExecutionPolicy. По умолчанию Windows запрещает запуск незаверенных скриптов в целях безопасности, но эту политику можно временно или постоянно изменить с правами администратора.

Причины проблемы

  • Windows по умолчанию устанавливает политику выполнения Restricted, которая полностью блокирует запуск всех скриптов PowerShell
  • Политика AllSigned разрешает только скрипты, подписанные цифровой подписью, что блокирует большинство локальных скриптов разработчика
  • Скрипты блокируются даже если они находятся на локальном компьютере и созданы пользователем, так как Windows считает их потенциально опасными
  • При скачивании скрипта из интернета Windows автоматически отмечает его как опасный файл, что также блокирует его выполнение
  • Обновления Windows иногда сбрасывают политику выполнения на значение по умолчанию, что вызывает повторное появление ошибки
  • Если PowerShell запущен без прав администратора, некоторые изменения политики выполнения будут невозможны
  • Корпоративные политики GPO (Group Policy Object) могут переопределять локальные настройки политики выполнения
  • Использование служебных скриптов, профилей или модулей PowerShell требует разрешение на выполнение скриптов

Пошаговая инструкция

  1. Откройте меню Пуск и найдите приложение PowerShell
  2. Кликните правой кнопкой мыши на Windows PowerShell и выберите Запустить от имени администратора
  3. Если появится диалог контроля учётных записей, нажмите Да для подтверждения запуска с правами администратора
  4. Проверьте текущую политику выполнения, выполнив команду Get-ExecutionPolicy
  5. Дождитесь вывода текущей политики (например, Restricted, AllSigned или RemoteSigned)
  6. Для временного разрешения выполнения скриптов в текущей сессии выполните Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
  7. Введите Y (Yes) и нажмите Enter для подтверждения изменения политики
  8. Для постоянного изменения политики выполните Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  9. Подтвердите изменение, введя Y и нажав Enter
  10. Проверьте, что политика была изменена, выполнив Get-ExecutionPolicy ещё раз
  11. Убедитесь, что выводится RemoteSigned вместо Restricted
  12. Если нужна полная разрешительная политика, выполните Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
  13. Закройте PowerShell и откройте его заново для применения изменений политики
  14. Попытайтесь запустить ваш скрипт, используя команду .\имя-скрипта.ps1
  15. Если скрипт был скачан из интернета, кликните на файл правой кнопкой мыши и выберите Свойства
  16. В окне свойств найдите кнопку Разблокировать внизу и нажмите на неё
  17. Нажмите Применить и затем OK для сохранения изменений
  18. После разблокировки файла попытайтесь запустить скрипт снова через PowerShell
  19. Если возникает ошибка при выполнении скрипта, убедитесь, что путь к скрипту указан с префиксом ..\ (например, .\скрипт.ps1)
  20. Для просмотра всех доступных политик выполните Get-ExecutionPolicy -List
  21. Обратите внимание на разные уровни политики: MachinePolicy, UserPolicy, Process, CurrentUser и LocalMachine
  22. Если политика переопределяется на уровне MachinePolicy, это означает, что используется корпоративная политика GPO
  23. Для проверки в корпоративной среде обратитесь к администратору IT для изменения группировки политик
  24. Если нужно временно запустить один скрипт, используйте команду powershell -ExecutionPolicy Bypass -File путь\к\скрипту.ps1
  25. Для возврата к более строгой политике выполните Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope CurrentUser

Часто задаваемые вопросы

Какая разница между RemoteSigned и Unrestricted? Политика RemoteSigned разрешает локальные скрипты и подписанные удалённые скрипты, а Unrestricted разрешает все скрипты без проверки подписей, что менее безопасно.

Почему мой скрипт всё ещё не запускается после изменения политики? Проверьте, что файл скрипта не был разблокирован (кликните правой кнопкой на файл > Свойства > Разблокировать), и что PowerShell перезапущен после изменения политики.

Как вернуть политику выполнения на значение по умолчанию? Выполните команду Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope CurrentUser для восстановления стандартной защиты.

Похожие материалы

Инициализация проекта и установка зависимости через npm install
Полезные расширения для VS Code упрощающих написание кода
Visual Studio Code для верстки HTML и CSS