Поделиться через


Invoke-PolicyEvaluation командлет

Invoke-PolicyEvaluation — это командлет SQL Server, который сообщает, соответствует ли целевой набор объектов SQL Server условиям, указанным в одной или нескольких политиках управления на основе политик.

Использование Invoke-PolicyEvaluation

Invoke-PolicyEvaluation оценивает одну или несколько политик по набору объектов SQL Server, называемых целевым набором. Набор целевых объектов поставляется с целевого сервера. Каждая политика определяет условия, которые являются допустимыми состояниями для целевых объектов. Например, политика надежной базы данных указывает, что свойство базы данных TRUSTWORTHY должно иметь значение OFF.

Параметр -AdHocPolicyEvaluationMode указывает действия, выполняемые:

Проверьте
Сообщите о состоянии соответствия целевых объектов с помощью учетных данных текущего входа. Не перенастраивайте объекты. Это параметр по умолчанию.

CheckSqlScriptAsProxy
Сообщите о соответствии целевых объектов, используя учетные данные прокси-логина ##MS_PolicyTSQLExecutionLogin##. Не перенастраивайте никакие объекты.

Настройка
Сообщите о состоянии соответствия целевых объектов с помощью учетных данных текущего входа. Перенастройте все настраиваемые и детерминированные параметры, которые не соответствуют политикам.

Указание политики

То, как указывается политика, зависит от места её хранения. Политики можно хранить в двух форматах:

  • Они могут быть объектами, хранящимися в хранилище политик, например экземпляр ядра СУБД. Папку SQLSERVER:\SQLPolicy можно использовать для указания расположения политик в хранилище политик. Командлеты Windows PowerShell можно использовать для фильтрации входных полиций на основе их свойств, таких как использование Where-Object для фильтрации по категории политики или Get-Item для фильтрации по имени политики.

  • Их можно экспортировать как XML-файлы. Для указания расположения XML-файловых файлов можно использовать диск файловой системы, например D:. Командлеты Windows PowerShell, такие как Where-Object, можно использовать для фильтрации политик по их свойствам файла, например имени файла.

Если политики хранятся в хранилище политик, необходимо передать набор объектов PSObject, указывающих на политики для оценки. Обычно это делается путем отправки выходных данных командлета, например Get-Item в Invoke-PolicyEvaluation, и не требует указания параметра -Policy . Например, если вы импортировали политики Microsoft Best Practices в экземпляр вашего ядра СУБД, эта команда проведет оценку политики Состояния базы данных.

sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"  
Get-Item "Database Status" | Invoke-PolicyEvaluation -TargetServerName "MYCOMPUTER"  

В этом примере показано использование Where-Object для фильтрации нескольких политик из хранилища политик на основе их свойства PolicyCategory . Объекты из канала выходных данных Where-Object потребляются Invoke-PolicyEvaluation.

sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"  
gci | Where-Object {$_.PolicyCategory -eq "Microsoft Best Practices: Maintenance"} | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"  

Если политики хранятся в виде XML-файлов, необходимо использовать параметр -Policy , чтобы указать путь и имя для каждой политики. Если не указать путь в параметре -Policy , Invoke-PolicyEvaulation использует текущий параметр пути sqlps . Например, эта команда оценивает одну из политик Microsoft Best Practice, установленных с SQL Server для базы данных по умолчанию для входа:

Invoke-PolicyEvaluation -Policy "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033\Database Status.xml" -TargetServerName "MYCOMPUTER"  

Эта команда делает то же самое, только он использует текущий путь sqlps для установления расположения XML-файла политики:

sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MYCOMPUTER"  

В этом примере показано использование командлета Get-ChildItem для получения нескольких XML-файлов политики и передачи объектов в Invoke-PolicyEvaluation:

sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"  
gci "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"  

Указание целевого набора

Используйте три параметра для указания набора целевых объектов:

  • -TargetServerName указывает экземпляр SQL Server, содержащий целевые объекты. Вы можете указать сведения в строке, которая использует формат, определенный для свойства SqlConnection ConnectionString класса. Вы можете использовать класс SqlConnectionStringBuilder для создания правильно форматированной строки подключения. Вы также можете создать SqlStoreConnection объект и передать его в -TargetServer. Если указать строку, которая имеет только имя сервера, Invoke-PolicyEvaluation использует проверку подлинности Windows для подключения к серверу.

  • -TargetObjects принимает объект или массив объектов, представляющих объекты SQL Server в целевом наборе. Например, можно создать массив объектов класса для передачи Database в -TargetObjects.

  • -TargetExpressions принимает строку, содержащую выражение запроса, указывающее объекты в целевом наборе. Выражение запроса находится в виде узлов, разделенных символом "/". Каждый узел находится в форме ObjectType[Filter]. Тип объекта является одним из объектов в иерархии объектов sql Server Management Object (SMO). Фильтр — это выражение, которое фильтрует объекты на этом узле. Дополнительные сведения см. в разделе "Выражения запросов" и "Универсальные имена ресурсов".

Укажите либо -TargetObjects, либо -TargetExpression, а не оба.

В этом примере используется объект Sfc.SqlStoreConnection для указания целевого сервера:

sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"  
$conn = New-Object Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection("server='MYCOMPUTER';Trusted_Connection=True")  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName $conn  

В этом примере используется -TargetExpression для определения конкретной базы данных для оценки:

sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MyComputer" -TargetExpression "Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']"  

Оценка политик служб Analysis Services

Чтобы оценить политики для экземпляра служб Analysis Services, необходимо загрузить и зарегистрировать сборку в PowerShell, создать переменную с объектом подключения служб Analysis Services и передать переменную параметру -TargetObject . В этом примере показано, как оценить политику конфигурации области применения лучших практик для служб Analysis Services:

sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\AnalysisServices\1033"  
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")  
$SSASsvr = New-Object Microsoft.AnalysisServices.Server  
$SSASsvr.Connect("Data Source=Localhost")  
Invoke-PolicyEvaluation -Policy "Surface Area Configuration for Analysis Services Features.xml" -TargetObject $SSASsvr  

Оценка политик службы отчетности

Чтобы оценить политики служб Reporting Services, необходимо загрузить и зарегистрировать сборку в PowerShell, создать переменную с объектом подключения Служб Reporting Services и передать переменную параметру -TargetObject . В этом примере показано, как оценить политику конфигурации области воздействия рекомендаций по лучшим практикам для служб SQL Reporting Services.

sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\ReportingServices\1033"  
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Dmf.Adapters")  
$SSRSsvr = new-object Microsoft.SqlServer.Management.Adapters.RSContainer('MyComputer')  
Invoke-PolicyEvaluation -Policy "Surface Area Configuration for Reporting Services 2008 Features.xml" -TargetObject $SSRSsvr  

Форматирование выходных данных

По умолчанию выходные данные Invoke-PolicyEvaluation отображаются в окне командной строки в виде краткого отчета в формате, доступном для чтения. Параметр -OutputXML можно использовать для указания того, что командлет вместо этого создает подробный отчет в виде XML-файла. Invoke-PolicyEvaluation использует схему формата обмена языка моделирования систем (SML-IF), чтобы файл можно было считывать средствами SML-IF.

sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"  
Invoke-PolicyEvaluation -Policy "Datbase Status" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReports\DatabaseStatusReport.xml  

См. также

Используйте командлеты движка базы данных