Всем добрый день.
Эта статья является частью инструкции по настройке выполнения скриптов в Active Directory, но Вы можете рассматривать ее отдельно. Перед началом рекомендую ознакомиться с тем какие Execution Policy бывают. Если же вам надо просто запустить скрипт, то проще прочитать запуск скрипта PowerShell.
Для установки значения политики выполнения мне известно четыре способа: при запуске PowerShell, установкой ключей реестра, выполнением командлета Set-ExecutionPolicy и с помощью групповых политик. Мы рассмотрим два последних способа.
Установка ExectuionPolicy используя командлет Set-ExecutionPolicy
Для установки политики AllSigned используя Set-ExecutionPolicy на уровне LocalMachine вводим следующее:
1 |
Set-ExecutionPolicy AllSigned |
Для установки политики на уровне CurrentUser используем следующий синтаксис:
1 |
Set-ExecutionPolicy AllSigned -Scope CurrentUser |
Но как вы понимаете делать это на всех компьютерах в корпоративной сети — сильно долго. Поэтому воспользуемся групповыми политиками:
Установка ExectuionPolicy используя групповые политики
1. Запускаем Group Policy Manager
2. Создаем новый объект групповой политики с произвольным названием
3. Переходим в узел Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell
4. Выбираем Turn On Script Execution и включаем его
5. Устанавливаем политику в значение Allow only signed scripts, безусловно в групповой политике для ваших разработчиков вы на этом этапе выберете Allow only local scripts and remote signed scripts
После этого обновляем групповые политики на клиенский компьютерах, это можно сделать с помощью, например, Invoke-GPUpdate.
После этого на компьютерах установится политика AllSigned. Теперь если на компьютере установить политику выполнения с помощью командлета set-executionpolicy, то она будет действовать только если она более строгая, в нашем случае Restricted. Именно поэтому для наших разработчиков нужно либо сделать исключение, или создать другую групповую политику.
Мне кажется, что тут надо применять политику выполнения скриптов в «Конфигурации пользователя», а не в «Конфигурация компьютера», иначе разрабы будут привязаны только к определенным компам.
Дельный совет. На самом деле это тонкости применения групповых политик. Спасибо, я даже не подумал, что данный ключ есть и в узле «Конфигурация пользователя».
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. Так проще управлять и отслеживать.
Кстати полезная ссылка … забыл 🙂
https://technet.microsoft.com/ru-RU/library/hh847748.aspx