Сообщение в PowerShell «Параметр переопределяется политикой, определенной в более конкретной области»

Чтобы иметь возможность запускать файлы сценариев PowerShell (PS1), потребуется изменить политику выполнения скриптов с Restricted (ограниченный) на Unrestricted (без ограничений). Для этого используется команда Set-ExecutionPolicy Value, где Value – уровень разрешения. Они могут быть разные. Например, AllSigned дает разрешение на выполнение всех скриптов с цифровой подписью доверенных издателей, а RemoteSigned – только для локальных скриптов.

Если вы изменили эту политику, после выполнения необходимых задач рекомендуется восстановить исходные настройки командой Set-ExecutionPolicy Default.

Вы выполняете эту команду и получаете сообщение:

«Оболочка Windows PowerShell успешно обновила вашу политику выполнения, но данный параметр переопределяется политикой, определенной в более конкретной области»

Текст сообщение выделен красным, но это не ошибка, а скорее важное уведомление.

Оно означает, что PowerShell принял команду, но не смог применить ее полностью, потому что есть другая политика, установленная в более конкретной области, например, для текущего пользователя или группы.

Оболочка Windows PowerShell успешно обновила вашу политику выполнения

В общем, если на более приоритетном уровне уже установлена другая политика, то ваш новый параметр будет проигнорирован.

Таких уровней пять, перечислены они в порядке приоритетности:

  • MachinePolicy – самая высокая (назначается через групповые политики для всей машины).
  • UserPolicy – назначается через групповые политики для конкретного пользователя.
  • Process – действует только в текущем окне PowerShell (временная).
  • CurrentUser – политика для текущего пользователя.
  • LocalMachine – политика по умолчанию для всех пользователей компьютера.

Чтобы узнать, какая политика перекрывает вашу настройку, нужно вывести их список командой:

Get-ExecutionPolicy -List

Как можно видеть из этого скриншота, более приоритетная политика CurrentUser имеет значение RemoteSigned, тогда как для менее приоритетной политики по умолчанию используется значение Restricted. Все остальные настройки пусты.

Get-ExecutionPolicy -List

Если вы хотите установить значение Restricted для CurrentUser или наоборот, RemoteSigned для LocalMachine, выполните такую команду:

Set-ExecutionPolicy Restricted -Scope Уровень

Set-ExecutionPolicy Restricted

Обратите внимание, что изменить политику из PowerShell, даже если консоль запущена с правами администратора, можно только для уровней Process, CurrentUser и LocalMachine.

Get-ExecutionPolicy

Настройки MachinePolicy и UserPolicy изменяются в редакторе локальных групповых политик.

Рекомендуем их не трогать, они используются только администраторами на корпоративных компьютер для установки более жестких ограничений запуска скриптов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *