Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как устранить проблему, возникающую, когда политика компьютера контроллера домена не имеет значения RemoteSigned групповой политики для SQL Server.
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 2995870
Симптомы
При открытии консоли SQL Server PowerShell microsoft SQL Server 2012 или Microsoft SQL Server 2014 и политике компьютера контроллера домена не задано значение RemoteSigned по объекту групповой политики (GPO), может появиться следующее сообщение об ошибке:
Set-executionpolicy: Windows PowerShell успешно обновила политику выполнения, но параметр переопределяется политикой, определенной в более конкретной области. Из-за переопределения оболочка сохранит текущую эффективную политику выполнения неограниченного действия. Введите Get-ExecutionPolicy -List для просмотра параметров политики выполнения.
Дополнительные сведения см. в разделе
Get-Help Set-ExecutionPolicy.
В строке: 1 символ: 1
+ set-executionpolicy RemoteSigned -scope process -Force
Кроме того, задание завершается сбоем на третьем шаге, syspolicy_purge_history если контроллер домена не имеет значения RemoteSigned с помощью групповой политики, и может появиться следующее сообщение об ошибке:
Выполнено как пользователь: AJ\devARsqlagt. Для шага задания возникла ошибка в строке 1 в скрипте PowerShell. Соответствующая строка — set-executionpolicy RemoteSigned -scope process -Force. Исправьте скрипт и запланируйте задание заново. Сведения об ошибке, возвращаемые PowerShell: "Ошибка безопасности. '. Код выхода процесса -1. Шаг завершился с ошибкой.
Причина
Эта проблема возникает, так как политика компьютера не имеет значения RemoteSigned по объекту групповой политики и отправляется на серверы-члены. Например, если политика выполнения для настройки контроллера домена выглядит следующим образом:
Scope - ExecutionPolicy
--------------------------------------------------------------
MachinePolicy - Unrestricted
UserPolicy - Undefined
Process - RemoteSigned
CurrentUser - Undefined
LocalMachine - RemoteSigned
MachinePolicy имеет приоритет над всеми другими политиками.
Групповая политика отправляется с контроллера домена на серверы-члены, связанные с этой групповой политикой. Это задает режим без ограничений MachinePolicy , а SQL Server PowerShell пытается выполнить с RemoteSigned политикой выполнения. Поэтому конфликтующая ситуация возникает, и задание завершается ошибкой syspolicy_purge_history . То же задание успешно выполняется в SQL Server независимо от политики компьютера в контроллере домена.
Обходное решение
В качестве меры безопасности SQL Server 2012 запускает SQL PowerShell в политике RemoteSigned. Это приводит к сбою задания и возникает предыдущая проблема.
Неограниченные ограничения определенно не рекомендуется с точки зрения безопасности, так как это означает отсутствие ограничений. Именно поэтому при запуске с SQL 2012 скрипты PowerShell выполняются успешно, когда MachinePolicy устанавливается как RemoteSigned в контроллере домена.
Чтобы обойти эту проблему, воспользуйтесь одним из описанных ниже методов.
Не устанавливайте политику компьютера контроллера домена с помощью групповой политики. Если это не определено, это означает, что политика следующего уровня (например, UserPolicy, то Process, то CurrentUser, а затем LocalMachine) будет иметь приоритет.
Создайте подразделение в Пользователи и компьютеры Active Directory и свяжите эту подразделение с групповой политикой. Затем включите его для политики RemoteSigned. Для этого выполните следующие шаги.
Перейдите к Пользователи и компьютеры Active Directory.
Щелкните правой кнопкой мыши домен ->New ->Организационный блок, чтобы создать подразделение.
Введите gpmc.msc в run, а затем щелкните правой кнопкой мыши объект групповой политики ->New, чтобы создать новый объект групповой политики.
Щелкните правой кнопкой мыши только что созданный объект групповой политики ->Edit. Откроется новое окно.
Перейдите к конфигурации компьютера -Политики ->>Административные шаблоны ->Компоненты Windows ->Windows PowerShell —> дважды щелкните "Включить выполнение скрипта".
Задайте политику выполнения, чтобы разрешить локальные скрипты и удаленные подписанные скрипты.
Щелкните Применить, затем щелкните ОК.
Перейдите к Пользователи и компьютеры Active Directory и щелкните "Компьютеры". Список компьютеров для домена. Щелкните правой кнопкой мыши компьютеры, которые нужно переместить в только что созданное подразделение. Таким образом, можно переместить одну или группу компьютеров в подразделение.
Перейдите к управлению групповыми политиками, щелкните правой кнопкой мыши только что созданную подразделение, щелкните ссылку на существующий объект групповой политики, выберите только что созданный объект групповой политики и нажмите кнопку "ОК".
Обновите политику на контроллере домена и на клиентском компьютере, выполнив эту команду в PowerShell.
gpupdate /forceУбедитесь, что политика компьютера для подразделения и компонента клиента должна быть удалена.