Compartilhar via


cmdlet Invoke-PolicyEvaluation

Invoke-PolicyEvaluation é um cmdlet do SQL Server que informa se um conjunto de destino de objetos do SQL Server está em conformidade com as condições especificadas em uma ou mais políticas de Gerenciamento Baseado em Políticas.

Usando Invoke-PolicyEvaluation

Invoke-PolicyEvaluation avalia uma ou mais políticas em relação a um conjunto de objetos do SQL Server chamado conjunto de destino. O conjunto de objetos de destino vem de um servidor de destino. Cada política define condições, que são os estados permitidos para os objetos de destino. Por exemplo, a política Banco de Dados Confiável afirma que a propriedade TRUSTWORTHY de um banco de dados deve ser definida como OFF.

O parâmetro -AdHocPolicyEvaluationMode especifica as ações executadas:

Verificação
Relate o status de conformidade dos objetos de destino usando as credenciais do logon atual. Não reconfigure nenhum objeto. Essa é a configuração padrão.

CheckSqlScriptAsProxy
Reporte o status de conformidade dos objetos de destino usando as credenciais do logon de proxy ##MS_PolicyTSQLExecutionLogin##. Não reconfigure nenhum objeto.

Configurar
Relate o status de conformidade dos objetos de destino usando as credenciais do logon atual. Reconfigure todas as opções configuráveis e determinísticas que não estejam em conformidade com as políticas.

Especificando políticas

A forma como você especifica uma política depende de onde a política é armazenada. As políticas podem ser armazenadas em dois formatos:

  • Eles podem ser objetos armazenados em um repositório de políticas, como uma instância do Mecanismo de Banco de Dados. Você pode usar a pasta SQLSERVER:\SQLPolicy para especificar o local das políticas em um repositório de políticas. Você pode usar cmdlets do Windows PowerShell para filtrar as políticas de entrada com base em suas propriedades, como usar Where-Object para filtrar na categoria de política ou Get-Item para filtrar o nome da política.

  • Eles podem ser exportados como arquivos XML. Você pode usar uma unidade do sistema de arquivos, como D:, para especificar o local dos arquivos XML. Você pode usar cmdlets do Windows PowerShell, como Where-Object para filtrar as políticas em suas propriedades de arquivo, como o nome do arquivo.

Se as políticas forem armazenadas em um repositório de políticas, você deverá passar um conjunto de PSObjects apontando para as políticas a serem avaliadas. Isso normalmente é feito canalizando a saída de um cmdlet, como Get-Item para Invoke-PolicyEvaluation, e não exige que você especifique o parâmetro -Policy . Por exemplo, se você importou as políticas de Práticas Recomendadas da Microsoft para sua instância do mecanismo de banco de dados, este comando avaliará a política de Status do Banco de Dados :

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

Este exemplo mostra como usar Where-Object para filtrar várias políticas de um repositório de políticas com base em sua propriedade PolicyCategory . Os objetos da saída canalizada de Where-Object são consumidos por Invoke-PolicyEvaluation.

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

Se as políticas forem armazenadas como arquivos XML, você deverá usar o parâmetro -Policy para fornecer o caminho e o nome de cada política. Se você não especificar um caminho no parâmetro -Policy , Invoke-PolicyEvaulation usará a configuração atual do caminho do sqlps . Por exemplo, este comando avalia uma das políticas de Melhores Práticas da Microsoft instaladas com o SQL Server no banco de dados padrão atribuído ao seu login.

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

Esse comando faz a mesma coisa, apenas ele usa o caminho sqlps atual para estabelecer o local do arquivo XML de política:

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

Este exemplo mostra como usar o cmdlet Get-ChildItem para recuperar vários arquivos XML de política e redirecionar os objetos para 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"  

Especificando o conjunto-alvo

Use três parâmetros para especificar o conjunto de objetos de destino:

  • -TargetServerName especifica a instância do SQL Server que contém os objetos de destino. Você pode especificar as informações em uma cadeia de caracteres que usa o formato definido para a propriedade ConnectionString da SqlConnection classe. Você pode usar a SqlConnectionStringBuilder classe para criar uma cadeia de conexão formatada corretamente. Você também pode criar um SqlStoreConnection objeto e passá-lo para -TargetServer. Se você fornecer uma cadeia de caracteres que tenha apenas o nome do servidor, Invoke-PolicyEvaluation usará a Autenticação do Windows para se conectar ao servidor.

  • -TargetObjects usa um objeto ou uma matriz de objetos que representam os objetos do SQL Server no conjunto de destino. Por exemplo, você pode criar uma matriz de objetos de Database classe para passar para -TargetObjects.

  • -TargetExpressions usa uma cadeia de caracteres que contém uma expressão de consulta que especifica os objetos no conjunto de destino. A expressão de consulta está na forma de nós separados pelo caractere '/'. Cada nó está no formato ObjectType[Filter]. O tipo de objeto é um dos componentes na hierarquia de objetos do SQL Server Management Objects (SMO). Filtro é uma expressão que filtra objetos nesse nó. Para obter mais informações, consulte Query Expressions and Uniform Resource Names.

Especifique -TargetObjects ou -TargetExpression, não ambos.

Este exemplo usa um objeto Sfc.SqlStoreConnection para especificar o servidor de destino:

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  

Este exemplo usa -TargetExpression para identificar o banco de dados específico a ser avaliado:

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']"  

Avaliando políticas do Analysis Services

Para avaliar políticas em uma instância do Analysis Services, você deve carregar e registrar um assembly no PowerShell, criar uma variável com um objeto de conexão do Analysis Services e passar a variável para o parâmetro -TargetObject . Este exemplo mostra a avaliação da política de configuração de superfície das Práticas Recomendadas para os Serviços de Análise:

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  

Avaliando políticas dos Serviços de Relatórios

Para avaliar as políticas do Reporting Services, você deve carregar e registrar um assembly no PowerShell, criar uma variável com um objeto de conexão do Reporting Services e passar a variável para o parâmetro -TargetObject . Este exemplo mostra a avaliação da política de configuração da área de superfície das Melhores Práticas para o 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  

Saída de formatação

Por padrão, a saída de Invoke-PolicyEvaluation é exibida na janela do prompt de comando como um relatório conciso no formato legível por humanos. Você pode usar o parâmetro -OutputXML para especificar que o cmdlet produza um relatório detalhado como um arquivo XML. Invoke-PolicyEvaluation usa o esquema de Formato de Intercâmbio de Linguagem de Modelagem de Sistemas (SML-IF) para que o arquivo possa ser lido por SML-IF leitores.

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

Consulte Também

Usar cmdlets do Mecanismo de Banco de Dados