Установка ExecutionPolicy

Всем добрый день.

Эта статья является частью инструкции по настройке выполнения скриптов в Active Directory, но Вы можете рассматривать ее отдельно. Перед началом рекомендую ознакомиться с тем какие Execution Policy бывают. Если же вам надо просто запустить скрипт, то проще прочитать запуск скрипта PowerShell.

Для установки значения политики выполнения мне известно четыре способа: при запуске PowerShell, установкой ключей реестра, выполнением командлета Set-ExecutionPolicy и с помощью групповых политик. Мы рассмотрим два последних способа.

Установка ExectuionPolicy используя командлет Set-ExecutionPolicy

Для установки политики AllSigned используя Set-ExecutionPolicy на уровне LocalMachine вводим следующее:

Для установки политики на уровне CurrentUser используем следующий синтаксис:

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

Установка ExectuionPolicy используя групповые политики

1. Запускаем Group Policy Manager

gp0

2. Создаем новый объект групповой политики с произвольным названием

gp1

3. Переходим в узел Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell

gp2

4. Выбираем Turn On Script Execution и включаем его

gp3

5. Устанавливаем политику в значение Allow only signed scripts, безусловно в групповой политике для ваших разработчиков вы на этом этапе выберете Allow only local scripts and remote signed scripts

gp4

После этого обновляем групповые политики на клиенский компьютерах, это можно сделать с помощью, например, Invoke-GPUpdate.

После этого на компьютерах установится политика AllSigned. Теперь если на компьютере установить политику выполнения с помощью командлета set-executionpolicy, то она будет действовать только если она более строгая, в нашем случае Restricted. Именно поэтому для наших разработчиков нужно либо сделать исключение, или создать другую групповую политику.

Почитать еще

get-help about_Execution_Policies -ShowWindow

get-help Set-ExecutionPolicy -ShowWindows

4 комментария

  1. Мне кажется, что тут надо применять политику выполнения скриптов в «Конфигурации пользователя», а не в «Конфигурация компьютера», иначе разрабы будут привязаны только к определенным компам.

    1. Дельный совет. На самом деле это тонкости применения групповых политик. Спасибо, я даже не подумал, что данный ключ есть и в узле «Конфигурация пользователя».

    2. 1. Приоритет областей идет сверх вниз , от сымой приоритетной до низко приоритетной.
      — Group Policy: Computer Configuration (MachinePolicy)
      — Group Policy: User Configuration (UserPolicy)
      — Execution Policy: Process (or PowerShell.exe -ExecutionPolicy)
      — Execution Policy: CurrentUser
      — Execution Policy: LocalMachine
      2. По умолчанию правило либо Restricted, либо RemoteSigned в зависимости от Windows.
      3. Если вы своим программистам настроите RemoteSigned в «Конфигурации пользователя», то будите уверены, что они смогут выполнить свои скрипты. НО раз они мигрируют у Вас с места на место, значит на эту машинку может зайти и другой пользователь. Предположим это терминальный сервер. И Вам надо будет для других пользователей желательно тоже указать политику пользователя, т. к. к примеру на Windows Server 2012 R2 по умолчанию и так RemoteSigned. Ну допустим вы настроите политику для абсолютно всех пользователей и выставите для них AllSigned.
      А теперь внимание. Скрипты пишутся обычно для автоматизации серверов да или хотя бы пользовательских компов на 90% и запускаются там от имени пользователя «система» и, чтобы назначить этому пользователю правила Вам по любому придется назначать политику MachinePolicy в AllSigned. И эта политика перекроит любые другие включая те, которые вы назначили программистам.

      Я к тому, что наивысший приоритет имеет именно MachinePolicy. И Ваш план одновременно управлять (писать скрипты) для тех машин, на которых сидят программисты и их же защищать не прокатит. В итоге проще всего поставить на все компы MachinePolicy AllSigned, а на компы программистов или на выделенный терминальный сервер MachinePolicy RemoteSigned. Так проще управлять и отслеживать.

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

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

CAPTCHA ImageChange Image