Invoke-PolicyEvaluation

Invoca um ou mais SQL Server avaliações de política de gerenciamento baseadas em políticas.

Syntax

Invoke-PolicyEvaluation
      [-Policy] <PSObject>
      [-AdHocPolicyEvaluationMode <AdHocPolicyEvaluationMode>]
      -TargetServerName <PSObject>
      [-TargetExpression <String>]
      [-OutputXml]
      [<CommonParameters>]
Invoke-PolicyEvaluation
      [-Policy] <PSObject>
      [-AdHocPolicyEvaluationMode <AdHocPolicyEvaluationMode>]
      -TargetObjects <PSObject[]>
      [-OutputXml]
      [<CommonParameters>]

Description

O cmdlet Invoke-PolicyEvaluation avalia uma ou mais políticas de gerenciamento baseadas em políticas em relação a um conjunto de objetos SQL Server nomeados no conjunto de destino.

As políticas especificam os valores permitidos para diversas propriedades que estão associadas a objetos SQL Server, como estabelecer padrões do site para nomes ou ordenações de bancos de dados.

Quando esse cmdlet é executado no modo marcar, ele relata se as propriedades atuais dos objetos no conjunto de destino estão em conformidade com as regras nas definições de política.

Os objetos no conjunto de destino não estão reconfiguradas se suas propriedades não forem compatíveis com as políticas.

No modo de configuração, esse cmdlet reconfigura todos os objetos no conjunto de destino que não estão em conformidade com as definições de política.

Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.

Exemplos

Exemplo 1: Avaliar uma política na instância padrão do computador

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Policies\DatabaseEngine\1033"
PS C:\> Invoke-PolicyEvaluation -Policy "Trustworthy Database.xml" -TargetServer "MYCOMPUTER"

Esse comando avalia uma política na instância padrão do computador especificado. A política é lida de um arquivo XML e a conexão é autenticada usando a Autenticação do Windows.

Exemplo 2: Avaliar políticas de arquivos XML

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Policies\DatabaseEngine\1033"
PS C:\> Get-ChildItem "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"

Esse comando lê duas políticas de arquivos XML em uma pasta e as passa para Invoke-PolicyEvaluation usando o operador de pipeline.

Exemplo 3: Avaliar políticas e formatar a saída de acordo com o esquema SMLIF

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Policies\DatabaseEngine\1033"
PS C:\> Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReportFolder\MyReport.xml

Esse comando avalia uma política e formata a saída usando o esquema SML-IF (Services Modeling Language Interchange Format). A saída é redirecionada para um arquivo.

Exemplo 4: Avaliar um conjunto filtrado de políticas

PS C:\> Set-Location "SQLSERVER:\SQLPolicy\MYCOMPUTER\DEFAULT\Policies"
PS C:\> Get-ChildItem | Where-Object { $_.PolicyCategory -eq "Microsoft Best Practices: Maintenance" } | Invoke-PolicyEvaluation -TargetServer 'MYCOMPUTER'

O primeiro comando define o caminho atual como um repositório de políticas SQL Server.

O segundo comando usa Get-ChildItem para ler todas as políticas e usa Where-Object para filtrar a lista para as políticas que têm sua propriedade PolicyCategory definida como "Práticas Recomendadas da Microsoft: Manutenção".

A saída é enviada para Invoke-PolicyEvaluation usando o operador de pipeline.

Exemplo 5: Avaliar políticas de arquivos XML usando um objeto SqlStoreConnection

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Policies\DatabaseEngine\1033"
PS C:\> $Connection = New-Object Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection("server='MYCOMPUTER';Trusted_Connection=True")
PS C:\> Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServer $Connection

O primeiro comando define o local atual como uma pasta local que contém evaulações de política em arquivos XML.

O segundo comando usa New-Object para criar um objeto SqlStoreConnection.

O terceiro comando avalia a política de um arquivo XML em relação ao servidor definido pelo objeto SqlStoreConnection.

Exemplo 6: Avaliar a política usando um assembly carregado manualmente

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\140\ tools\Policies\analysisservices\1033"
PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")
PS C:\> $SSASsvr = New-Object Microsoft.AnalysisServices.Server
PS C:\> $SSASsvr.Connect("Data Source=localhost")
PS C:\> Invoke-PolicyEvaluation "Surface Area Configuration for Analysis Services Features.xml" -TargetObject $SSASsvr

O primeiro comando define o local da pasta atual.

O segundo comando carrega uma instância do assembly SQL Server Analysis Services.

O terceiro comando cria um objeto Microsoft.AnalysisServices.

O quarto comando usa o novo objeto AnalysisServices para abrir uma conexão com a instância de servidor padrão no computador local.

O quinto comando avalia a política de configuração da área de superfície do Analysis Services.

Exemplo 7: Avaliar um conjunto filtrado de políticas

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
PS C:\> Invoke-PolicyEvaluation "Database Status.xml" -TargetServer "MYCOMPUTER" -TargetExpression "Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2014']"

Esse comando usa o parâmetro TargetExpression para especificar uma expressão de consulta que filtra o banco de dados status política seja avaliada em relação ao banco de dados de exemplo AdventureWorks2014 e executa a avaliação.

Exemplo 8: Avaliar a política de configuração da área de superfície do Reporting Services

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

Esse comando carrega o assembly SQL Server Reporting Services, cria uma conexão com a instância de servidor padrão no computador local e executa a política de configuração da área de superfície Reporting Services.

Parâmetros

-AdHocPolicyEvaluationMode

Especifica o modo de avaliação da política ad hoc. Os valores válidos são:

  • Verificar. Relate o status de conformidade do conjunto de destino usando as credenciais da sua conta de logon e sem reconfigurar nenhum objeto.
  • CheckSqlScriptAsProxy. Execute um relatório de marcar usando as credenciais da conta proxy ##MS_PolicyTSQLExecutionLogin###.
  • Configurar. Reconfigure os objetos do conjunto de destino que não estão em conformidade com as políticas e relate os status resultantes. Esse cmdlet reconfigura apenas as propriedades que são configuráveis e determinísticas.
Type:AdHocPolicyEvaluationMode
Accepted values:Check, Configure, CheckSqlScriptAsProxy
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputXml

Indica que esse cmdlet produz seu relatório no formato XML usando o esquema SML-IF (Service Modeling Language Interchange Format).

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Policy

Especifica uma ou mais políticas a serem avaliadas.

As políticas podem ser armazenadas em uma instância do mecanismo de banco de dados SQL Server ou como arquivos XML exportados.

Para políticas armazenadas em uma instância do mecanismo de banco de dados, use um caminho baseado na pasta SQLSERVER:\SQLPolicy para especificar o local das políticas.

Para políticas que estão armazenadas como arquivos XML, use um caminho do sistema de arquivos para especificar o local das políticas.

Esse parâmetro pode usar uma cadeia de caracteres que especifica os nomes de uma ou mais políticas a serem avaliadas.

Se apenas um nome de arquivo ou política for especificado na cadeia de caracteres, esse cmdlet usará o caminho atual.

Para políticas armazenadas em uma instância do mecanismo de banco de dados, use o nome da política, como "Status do Banco de Dados" ou "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status". Para políticas exportadas como arquivos XML, use o nome do arquivo, como "Status.xml de banco de dados" ou "C:\MyPolicyFolder\Database Status.xml".

Esse parâmetro pode pegar um conjunto de objetos FileInfo, como a saída de Get-ChildItem executado em uma pasta que contém políticas XML exportadas.

Esse parâmetro também pode usar um conjunto de objetos Policy, como a saída de Get-ChildItem executado em um caminho SQLSERVER:\SQLPolicy.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TargetExpression

Especifica uma consulta que retorna a lista de objetos que definem o conjunto de destino.

As consultas são especificadas como uma cadeia de caracteres que tem nós que são separados pelo caractere '/'.

Cada nó está no formato ObjectType[Filtro].

ObjectType é um dos objetos no modelo de objetos do SMO (SQL Server Management Objects) e Filter é uma expressão que filtra objetos específicos nesse nó. Os nós devem seguir a hierarquia dos objetos SMO. Por exemplo, a seguinte expressão de consulta retorna o banco de dados de exemplo AdventureWorks:

[@Name='MyComputer']/Database[@Name='AdventureWorks']

Se TargetExpression for especificado, não especifique TargetObject.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TargetObjects

Especifica o conjunto de objetos SQL Server em relação ao qual a política é avaliada. Para se conectar a uma instância do SQL Server analysis services, especifique um objeto Microsoft.AnalysisServices.Server para TargetObject.

Se TargetObject for especificado, não especifique TargetExpression.

Type:PSObject[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-TargetServerName

Especifica a instância do mecanismo de banco de dados que contém o conjunto de destino.

Você pode especificar uma variável que contém um objeto Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection.

Você também pode especificar uma cadeia de caracteres que esteja em conformidade com os formatos usados na propriedade ConnectionString da classe System.Data.SqlClient.SqlConnection (v21 do módulo) ou da classe Microsoft.Data.SqlClient.SqlConnection (v22+ do módulo) no .Net.

Elas incluem cadeias de caracteres como aquelas criadas usando System.Data.SqlClient.SqlConnectionStringBuilder ou Microsoft.Data.SqlClient.SqlConnectionStringBuilder.

Por padrão, esse cmdlet se conecta usando a Autenticação do Windows.

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Entradas

System.Management.Automation.PSObject