Назад | Перейти на главную страницу

Политика выполнения Powershell в SQL Server

Кто-нибудь может помочь?

Во-первых, прошу прощения, если это неправильный форум и за объем текста, который вам нужно прочитать. Мне пока не разрешено публиковать изображения, а картинка стоит тысячи слов ...

При запуске powershell из SQLSMS 2008R2 и SQL2012 (щелкните правой кнопкой мыши экземпляр .... выберите «Запустить Powershell») он сообщает, что сценарии отключены для процесса. Я понимаю, что это параметр по умолчанию, и мне нужно его изменить, однако похоже, что импорт модуля SQLPS также не выполняется.

import-module: файл D: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ PowerShell \ Modules \ SQLPS \ Sqlps.ps1 не может быть загружен, поскольку выполнение сценариев отключено в этой системе. Дополнительные сведения см. В разделе «get-help about_signing». В строке: 1 символ: 14 + import-module <<<< SQLPS -DisableNameChecking + CategoryInfo: NotSpecified: (:) [Import-Module], PSSecurityException + FullyQualifiedErrorId: RuntimeException, Microsoft.PowerShell.Commands.ImportModuleCommand Convert-UrnToPath: The термин «Convert-UrnToPath» не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, убедитесь, что он правильный, и повторите попытку. В строке: 1 символ: 70 & {[System.Console] :: Title = 'SQL Server Powershell'; Convert-UrnToPath <<<< 'Server [@Name =' 'xxxx \ xxxx' ']' | cd} + CategoryInfo: ObjectNotFound: (Convert-UrnToPath: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Я не могу изменить политику выполнения.

set-executionpolicy: Windows PowerShell успешно обновила вашу политику выполнения, но этот параметр переопределяется политикой, определенной в более конкретной области. Из-за переопределения ваша оболочка сохранит свою текущую действующую политику выполнения «Ограничено». Введите «Get-ExecutionPolicy -List», чтобы просмотреть параметры политики выполнения. Для получения дополнительной информации см. «Get-Help Set-ExecutionPoli cy.» В строке: 1 символ: 20 + set-Executionpolicy <<<< unrestricted + CategoryInfo: PermissionDenied: (:) [Set-ExecutionPolicy], Sec urityException + FullyQualifiedErrorId: ExecutionPolicyOverride, Microsoft.PowerShell.Com
mands.SetExecutionPolicyCommand

Тем не менее, я установил задания PowerShell для агента SQL и sql2008R2 успешно работает, однако SQL2012 не работает с сообщением:

Выполняется от имени пользователя: xxxxxxx set-executionpolicy untre. Шаг задания получил ошибку в строке 1 в сценарии PowerShell. Соответствующая строка - «import-module SQLPS -DisableNameChecking». Исправьте сценарий и перенесите задание. PowerShell возвращает следующие сведения об ошибке: «При загрузке файла данных расширенного типа произошла следующая ошибка: Microsoft.PowerShell, D: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ PowerShell \ Modules \ SQLPS \ sqlprovider. types.ps1xml: файл пропущен из-за следующего исключения проверки: Ошибка проверки AuthorizationManager .. '. Код выхода из процесса -1. Шаг не удался.

Если я запускаю powershell под учетной записью SQL, которую использует SQL (D:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\SQLPS.exe), то я получаю то же сообщение об ошибке о невозможности загрузить модуль SQLPS (имеет смысл, если SQL не может его загрузить), однако, если я попытаюсь изменить политику выполнения под учетной записью SQL, я получаю сообщение об ошибке:

set-executionpolicy: Windows PowerShell успешно обновила вашу политику выполнения, но этот параметр переопределяется политикой, определенной в более конкретной области. Из-за переопределения ваша оболочка сохранит свою текущую действующую политику выполнения "Ограничено". Введите "Get-ExecutionPolicy -List", чтобы просмотреть параметры политики выполнения. Для получения дополнительной информации см. "Get-Help Set-ExecutionPolicy." : 1 символ: 20 + set-Executionpolicy <<<< unrestricted + CategoryInfo: PermissionDenied: (:) [Set-ExecutionPolicy], Sec urityException + FullyQualifiedErrorId: ExecutionPolicyOverride, Microsoft.PowerShell.Com mands.SetExecutionPolicyCommand

Таким образом, похоже, что этот параметр отменен политикой, определенной в более конкретной области. Где устанавливается эта политика? А что это за политика? Я спросил команду серверов, устанавливают ли они это на уровне политики AD, но они ответили, что нет.

Если я использую PowerShell (из раздела «Аксессуары» ... Windows PowerShell), то у меня нет проблем. Я искал в Интернете эти проблемы, и все говорят, что используйте set-execution-policy. Кажется, что никто не получает отказ загрузить модуль SQLPS или не может изменить политику выполнения.

Любой совет был бы очень принят!

Сначала запустите команду PowerShell «Get-ExecutionPolicy -List» (как указано в сообщении об ошибке). Это даст вам список различных областей политики выполнения и какой параметр определен в какой области.

Этот список областей имеет порядок приоритета (MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine). У каждой из этих областей могут быть разные настройки;

  • Ограниченный
  • AllSigned
  • RemoteSigned
  • Неограниченный
  • Обход
  • Неопределенный

Powershell оценит эти области в указанном порядке и применит первый параметр, для которого установлено значение, отличное от «Не определено».

Ошибка, возникающая при запуске «Set-ExecutionPolicy», указывает на то, что у вас есть параметр «Restricted», определенный в более конкретной области, чем значение по умолчанию для LocalMachine. Командлет Get-ExecutionPolicy -List сообщит вам, где.

Если параметр Restricted применяется в области LocalUser или Process, вы можете изменить это. Используйте командлет Set-ExecutionPolicy, но укажите область с помощью параметра -scope. Например;

Set-ExecutionPolicy -Scope Process RemoteSigned

Если параметр Restricted определен в областях MachinePolicy или UserPolicy, это означает, что администраторы вашего домена настроили групповую политику, которая переопределяет ваши локальные параметры. Здесь вам нужно будет пойти и поговорить с ними и посмотреть, можно ли применить менее строгие настройки через GPO.

Насколько мне известно, вы не можете легко переопределить настройки GPO локально; однако, если я ошибаюсь, кто-нибудь, пожалуйста, поправьте меня! :)

Я также подозреваю, что это проблема ExecutionPolicy, хотя и немного сложно правильно диагностировать.

Есть ли причина, по которой вы не используете эту команду?

PS C:\> Import-Module SQLPS

Несколько примечаний и шаги по устранению неполадок:

  • Ты можешь использовать Set-ExecutionPolicy -Scope MachinePolicy или Set-ExecutionPolicy -Scope UserPolicyпри условии, что у вашей учетной записи есть разрешения на внесение этих изменений.

  • Существует 32-битная версия PowerShell и 64-битная версия. Есть другой ExecutionPolicy для каждого из них. Вы должны проверить политику выполнения 32-битной версии (Windows PowerShell (x86) в меню Пуск). $env:PROCESSOR_ARCHITECTURE вернет x86 на 32-битной консоли и AMD64 на 64-битной консоли.

  • Убедитесь, что при запуске из SQL или консоли он работает от имени пользователя, чем вы ожидаете. $env:USERNAME скажу тебе.

  • Запустите консоль PowerShell от имени пользователя sql и запустите Get-ExecutionPolicy -list