Гид по технологиям

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

8 min read Windows PowerShell Обновлено 26 Dec 2025
Включить выполнение скриптов PowerShell в Windows
Включить выполнение скриптов PowerShell в Windows

Windows PowerShell: включение политики выполнения скриптов

PowerShell по умолчанию позволяет запускать отдельные команды в консоли. Чтобы выполнить файл-скрипт, сохраните код в файле с расширением .ps1 и запустите его через консоль PowerShell. Можно также вставить содержимое скрипта прямо в окно консоли.

При первой попытке выполнения вы, скорее всего, столкнётесь с ошибкой: «Running scripts is disabled on this system» — выполнение скриптов отключено. Это защитная мера, чтобы предотвратить запуск вредоносных скриптов. В этой статье показаны два основных способа включить выполнение скриптов в Windows: через системные Параметры и через сам PowerShell, а также дополнительные рекомендации по безопасности и отладке.

Как проверить текущую политику выполнения

Проверка текущей политики выполнения PowerShell

Прежде чем менять что‑то, узнайте текущую политику выполнения. Это поможет понять, нужно ли что‑то менять и для какой области (scope).

Шаги:

  1. Запустите Windows PowerShell.
  2. Если вы планируете менять системные политики, откройте PowerShell от имени администратора: нажмите Пуск, найдите PowerShell, правый клик → Запуск от имени администратора.
  3. Чтобы узнать политику для текущего процесса, введите команду и нажмите Enter:
Get-ExecutionPolicy
  1. Чтобы увидеть политики во всех областях (scopes), выполните:
Get-ExecutionPolicy -List

Обычно при ошибке вы увидите значение Restricted для текущей области. Если политика уже RemoteSigned или более либеральная, менять ничего не нужно.

Включение выполнения скриптов через Параметры Windows

Вы можете переключить разрешение на выполнение локальных скриптов с помощью приложения «Параметры» в Windows 11/10 — это удобный графический способ для пользователей, не знакомых с командной строкой.

Пошагово:

  1. Нажмите Win + I, чтобы открыть «Параметры».
  2. Перейдите в раздел «Конфиденциальность и безопасность» (Privacy & Security).
  3. Откройте раздел «Для разработчиков» (For developers).
  4. Найдите блок «PowerShell» и разверните его.
  5. Переключите опцию, чтобы разрешить локальные PowerShell-скрипты запускаться без цифровой подписи; при этом для скриптов, загруженных из интернета, будет требоваться подпись — это эквивалент RemoteSigned.

Windows 11: раздел Для разработчиков в Параметрах

После изменения откройте PowerShell и проверьте текущую политику:

Get-ExecutionPolicy

Должно быть RemoteSigned для текущего пользователя (или другой ожидаемый результат).

Важно: этот способ доступен не во всех версиях Windows и может быть ограничен корпоративными групповыми политиками.

Включение выполнения скриптов через PowerShell

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

Самый гибкий способ — командлет Set-ExecutionPolicy. Он позволяет указать политику и область (Scope).

Примеры команд:

  • Установить RemoteSigned для всей системы (требуются права администратора):
Set-ExecutionPolicy RemoteSigned
  • Установить RemoteSigned только для текущего пользователя:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Если будет запрос подтверждения, нажмите A (Yes to All) или Y, в зависимости от версии PowerShell.

Замечание: имя политики должно быть написано корректно: RemoteSigned. Опечатки (например, RemoteSgined) приведут к ошибке.

Отключение выполнения скриптов через PowerShell

Отключение политики выполнения — Undefined

Если вы хотите восстановить состояние по умолчанию или запретить выполнение скриптов, можно установить политику Undefined. Это вернёт политику к поведению по умолчанию (для клиентских Windows — Restricted).

Примеры команд:

  • Для всех пользователей (требуются права администратора):
Set-ExecutionPolicy Undefined
  • Для текущего пользователя:
Set-ExecutionPolicy Undefined -Scope CurrentUser

После выполнения всегда проверяйте результат:

Get-ExecutionPolicy -List

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

Политика выполнения управляет тем, какие скрипты PowerShell разрешено запускать. Основная идея — предотвратить невольный запуск вредоносного кода.

Краткое описание доступных политик:

ПолитикаЧто делает
DefaultЗначение по умолчанию: на клиентских Windows обычно Restricted, на серверных — RemoteSigned.
AllSignedРазрешает запуск только скриптов, подписанных доверенным издателем.
BypassПолный обход проверок политики выполнения; используется для совместимости или запусков от доверенных средств.
RemoteSignedРазрешает запуск локально созданных скриптов; скрипты, загруженные из интернета, требуют подписи.
RestrictedПо умолчанию — выполнение скриптов запрещено; можно запускать только отдельные команды.
UndefinedСбрасывает значение политики в состояние по умолчанию (как будто политика не задана).
UnrestrictedРазрешает запуск неподписанных скриптов, но предупреждает при запуске скриптов, загруженных из интернета.

Области (scopes) определяют, к каким пользователям и сессиям применяется политика:

ОбластьЧто делает
MachinePolicyУстанавливается групповой политикой для всех пользователей на машине; более приоритетна.
UserPolicyУстанавливается групповой политикой для текущего пользователя; более приоритетна.
LocalMachineПрименяется ко всем пользователям на локальной машине; хранится в реестре.
CurrentUserПрименяется только к текущему пользователю; хранится в пользовательском разделе реестра.
ProcessПрименяется только к текущему запуску PowerShell и исчезает при закрытии сессии.

Важно: групповые политики (MachinePolicy/UserPolicy) имеют приоритет над настройками, заданными через Set-ExecutionPolicy. Если в домене администраторы задали политику через GPO, вы не сможете её переопределить локально.

Быстрые команды и шпаргалка

Шпаргалка команд для частых задач:

  • Проверить политику:
Get-ExecutionPolicy
Get-ExecutionPolicy -List
  • Установить политику для всех пользователей (админ):
Set-ExecutionPolicy RemoteSigned
  • Установить политику только для текущего пользователя:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Временно запустить конкретный скрипт, не меняя политику навсегда:
powershell.exe -ExecutionPolicy Bypass -File "C:\path\to\script.ps1"
  • Пустить файл через стандартный ввод (полезно для одноразового запуска без изменения политики):
Get-Content .\script.ps1 | powershell -noprofile -
  • Отключить выполнение (сбросить в Undefined):
Set-ExecutionPolicy Undefined

Когда изменение политики не поможет

  • Group Policy (GPO) переопределяет локальные изменения. Если администратор домена задал MachinePolicy/UserPolicy, локальный Set-ExecutionPolicy не будет иметь эффекта.
  • Ограниченный режим языка (Constrained Language Mode) или режим блокировки приложения могут препятствовать выполнению скриптов даже при разрешённой политике.
  • Если у пользователя нет прав администратора, команды, меняющие глобальные параметры (LocalMachine), не применятся.
  • PowerShell Core (pwsh) и Windows PowerShell могут иметь отдельные настройки. Проверьте версию и соответствующие политики.

Альтернативные подходы и сценарии применения

  • Одноразовый запуск без изменения политики: используйте флаг -ExecutionPolicy Bypass при запуске powershell.exe.
  • Запуск скрипта через систему автоматизации (CI/CD): лучше хранить политику в конфигурации агента или запускать процессы с нужными параметрами, чем менять глобальные политики на всех хостах.
  • Подписывание скриптов: для корпоративного окружения рекомендуется подписывать скрипты и использовать AllSigned или RemoteSigned, чтобы обеспечить цепочку доверия.

Методология выбора политики (микро‑руководство)

  1. Оцените среду: рабочая станция пользователя, сервер в датацентре, контролируемый агент CI.
  2. Если скрипты готовятся и проверяются внутри организации — предпочтительна политика RemoteSigned или AllSigned.
  3. Для тестовых стендов можно использовать Unrestricted или Bypass временно, но затем вернуть безопасные настройки.
  4. В продакшене избегайте Bypass и Unrestricted без веской причины.

Уровни зрелости безопасности (рекомендации)

  • Низкий: Development — временно Unrestricted/Bypass для удобства. Но ограничьте сеть и права.
  • Средний: Test/QA — RemoteSigned; подписывайте важные скрипты. Логи и аудирование включены.
  • Высокий: Production — AllSigned; подписи и проверка целостности, ограниченный доступ к ключам подписи.

Чек-листы по ролям

Администратор:

  • Проверить Group Policy и реестр на наличие ограничений.
  • Установить политику с учётом всех пользователей и процессов.
  • Документировать изменение и причину.

Разработчик:

  • Подписывать скрипты при необходимости.
  • Использовать профиль PowerShell с безопасными настройками.
  • При тестах применять временные флаги запуска, а не менять глобальные политики.

Служба поддержки:

  • Помочь пользователю запустить конкретный скрипт через powershell -ExecutionPolicy Bypass -File.
  • Проверить права запуска и версию PowerShell.

Критерии приёмки

Чтобы считать задачу «включить выполнение скриптов» выполненной:

  • Команда Get-ExecutionPolicy -List показывает ожидаемую политику в целевой области.
  • Простой тестовый скрипт выполняется без ошибки “running scripts is disabled”.
  • Документированы сделанные изменения и назначение областей (Scope).

Пример тестового скрипта (сохранить как test.ps1):

Write-Output "PowerShell script execution works: $(Get-Date)"

Выполнить:

.\test.ps1

Если вывод появляется — всё настроено корректно.

Факт-бокс

  • Default: на клиентских Windows обычно Restricted. На серверах — чаще RemoteSigned.
  • RemoteSigned: удобный баланс между безопасностью и удобством для локальной разработки.
  • Group Policy имеет приоритет над локальными настройками.
  • Для одноразового запуска скрипта используйте -ExecutionPolicy Bypass, чтобы не менять политику навсегда.

Совместимость и миграция

  • PowerShell Core (pwsh, кроссплатформенная версия) использует схожую модель политик, но поведение может отличаться по умолчанию. Проверяйте версию и конфигурации на целевых хостах.
  • В доменной среде перед изменением политик координируйтесь с командой по безопасности: изменения могут потребовать внесения в GPO.

Пример сценариев и тестовых кейсов

Тест 1: Проверка текущей политики

  • Действие: Выполнить Get-ExecutionPolicy -List.
  • Ожидаемый результат: Политика отображена для всех областей.

Тест 2: Установка RemoteSigned для текущего пользователя

  • Действие: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser; затем Get-ExecutionPolicy -List.
  • Ожидаемый результат: CurrentUser = RemoteSigned.

Тест 3: Одноразовый запуск скрипта без изменения политик

  • Действие: powershell.exe -ExecutionPolicy Bypass -File script.ps1
  • Ожидаемый результат: Скрипт выполнен корректно, политика не изменилась.

Диагностика проблем

  • Если Set-ExecutionPolicy не меняет значение — проверьте Get-ExecutionPolicy -List: наличие MachinePolicy или UserPolicy означает применение GPO.
  • Проверьте, запускаете ли вы PowerShell от имени администратора для изменений в LocalMachine.
  • Убедитесь, что скрипт не помечен как «загружен из интернета» (Zone.Identifier). Чтобы снять пометку, можно удалить соответствуюший атрибут или править файл через Properties → Unblock.

Decision flow для выбора подхода

flowchart TD
  A[Нужно выполнить скрипт?] --> B{Это одноразово или часто?}
  B -->|Одноразово| C[Запустить c флагом -ExecutionPolicy Bypass]
  B -->|Часто| D{Контроль окружения?}
  D -->|Локальная машина/Dev| E[RemoteSigned для CurrentUser]
  D -->|Сервер/Production| F[AllSigned + подпись скриптов]
  D -->|Доменная среда| G[Согласовать с администратором GPO]
  C --> H[Проверить выполнение]
  E --> H
  F --> H
  G --> H

Вопросы и ответы

Как запустить отдельный скрипт, не меняя политику навсегда?

Используйте:

powershell.exe -ExecutionPolicy Bypass -File "C:\path\to\script.ps1"

Это применит обход политики только для текущего запуска.

Как вернуть настройки по умолчанию?

Выполните:

Set-ExecutionPolicy Undefined

Затем проверьте Get-ExecutionPolicy -List.

Что делать, если политика не меняется из-за GPO?

Скоординируйтесь с администратором домена. Локально вы не сможете переопределить MachinePolicy или UserPolicy, заданные через Group Policy.

Примечания по безопасности

  • Не используйте Bypass или Unrestricted в продакшене без строгой необходимости и без аудита.
  • Подписывайте скрипты для повышения доверия и контроля в корпоративной среде.
  • Документируйте любые изменения политик и их обоснование.

Короткое резюме

Изменение политики выполнения PowerShell даёт гибкость, но требует осторожности. Для большинства сценариев разработки и локального тестирования RemoteSigned — разумный выбор. В продакшене предпочтительнее AllSigned и проверка подписей. Если не хотите менять политику навсегда, используйте флаг -ExecutionPolicy Bypass для одноразового запуска.

Часто используемые ресурсы

  • Команды: Get-ExecutionPolicy, Set-ExecutionPolicy
  • Локации настроек: Параметры → Конфиденциальность и безопасность → Для разработчиков
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство