Compartir a través de


Invoke-PolicyEvaluation

Invoca una o varias evaluaciones de directivas de administración basadas en directivas de SQL Server.

Sintaxis

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

Description

El cmdlet Invoke-PolicyEvaluation evalúa una o varias directivas de administración basadas en directivas en un conjunto de objetos de SQL Server denominados en el conjunto de destino.

Las directivas especifican los valores permitidos para varias propiedades asociadas a objetos de SQL Server, como establecer estándares de sitio para nombres de base de datos o intercalaciones.

Cuando este cmdlet se ejecuta en modo de comprobación, informa de si las propiedades actuales de los objetos del conjunto de destino cumplen las reglas de las definiciones de directiva.

Los objetos del conjunto de destino no se vuelven a configurar si sus propiedades no cumplen las directivas.

En el modo de configuración, este cmdlet vuelve a configurar los objetos del conjunto de destino que no cumplen las definiciones de directiva.

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

Ejemplos

Ejemplo 1: Evaluación de una directiva en la instancia predeterminada del equipo

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"

Este comando evalúa una directiva en la instancia predeterminada del equipo especificado. La directiva se lee desde un archivo XML y la conexión se autentica mediante la autenticación de Windows.

Ejemplo 2: Evaluación de directivas de archivos 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"

Este comando lee dos directivas de archivos XML en una carpeta y, a continuación, las pasa a Invoke-PolicyEvaluation mediante el operador de canalización.

Ejemplo 3: Evaluar directivas y dar formato a la salida según el 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

Este comando evalúa una directiva y da formato a la salida mediante el esquema De intercambio de lenguaje de modelado de servicios (SML-IF). La salida se redirige a un archivo.

Ejemplo 4: Evaluación de un conjunto filtrado de directivas

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'

El primer comando establece la ruta de acceso actual en un almacén de directivas de SQL Server.

El segundo comando usa Get-ChildItem para leer todas las directivas y, a continuación, usa Where-Object para filtrar la lista de las directivas que tienen su propiedad PolicyCategory establecida en "Microsoft Best Practices: Maintenance".

La salida se envía a Invoke-PolicyEvaluation mediante el operador de canalización.

Ejemplo 5: Evaluación de directivas de archivos XML mediante un 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

El primer comando establece la ubicación actual en una carpeta local que contiene evaulación de directivas en archivos XML.

El segundo comando usa New-Object para crear un objeto SqlStoreConnection.

El tercer comando evalúa la directiva de un archivo XML en el servidor definido por el objeto SqlStoreConnection.

Ejemplo 6: Evaluación de la directiva mediante un ensamblado cargado 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

El primer comando establece la ubicación de la carpeta actual.

El segundo comando carga una instancia del ensamblado de SQL Server Analysis Services.

El tercer comando crea un objeto Microsoft.AnalysisServices.

El cuarto comando usa el nuevo objeto AnalysisServices para abrir una conexión a la instancia de servidor predeterminada en el equipo local.

El quinto comando evalúa la directiva de configuración del área expuesta de Analysis Services.

Ejemplo 7: Evaluación de un conjunto filtrado de directivas

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

Este comando usa el parámetro TargetExpression para especificar una expresión de consulta que filtre la directiva de estado de la base de datos en la base de datos de ejemplo AdventureWorks2014 y realice la evaluación.

Ejemplo 8: Evaluación de la directiva de configuración del área expuesta de 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

Este comando carga el ensamblado de SQL Server Reporting Services, crea una conexión a la instancia de servidor predeterminada en el equipo local y ejecuta la directiva de configuración del área expuesta de Reporting Services.

Parámetros

-AdHocPolicyEvaluationMode

Especifica el modo de evaluación de directivas adhoc. Los valores válidos son:

  • Comprobar. Informe del estado de cumplimiento del conjunto de destino mediante las credenciales de la cuenta de inicio de sesión y sin volver a configurar ningún objeto.
  • CheckSqlScriptAsProxy. Ejecute un informe de comprobación mediante las credenciales de la cuenta de proxy ##MS_PolicyTSQLExecutionLogin###.
  • Configurar. Vuelva a configurar los objetos del conjunto de destino que no cumplan las directivas y notifique el estado resultante. Este cmdlet solo reconfigura las propiedades que se pueden establecer y deterministas.
Tipo:AdHocPolicyEvaluationMode
Valores aceptados:Check, Configure, CheckSqlScriptAsProxy
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-OutputXml

Indica que este cmdlet genera su informe en formato XML mediante el esquema service Modeling Language Interchange Format (SML-IF).

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Policy

Especifica una o varias directivas que se van a evaluar.

Las directivas se pueden almacenar en una instancia del motor de base de datos de SQL Server o como archivos XML exportados.

Para las directivas almacenadas en una instancia del motor de base de datos, use una ruta de acceso basada en la carpeta SQLSERVER:\SQLPolicy para especificar la ubicación de las directivas.

Para las directivas que se almacenan como archivos XML, use una ruta de acceso del sistema de archivos para especificar la ubicación de las directivas.

Este parámetro puede tomar una cadena que especifica los nombres de una o varias directivas que se van a evaluar.

Si solo se especifica un nombre de archivo o directiva en la cadena, este cmdlet usa la ruta de acceso actual.

Para las directivas almacenadas en una instancia del motor de base de datos, use el nombre de la directiva, como "Estado de la base de datos" o "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status". Para las directivas que se exportan como archivos XML, use el nombre del archivo, como "Database Status.xml" o "C:\MyPolicyFolder\Database Status.xml".

Este parámetro puede tomar un conjunto de objetos FileInfo, como la salida de Get-ChildItem ejecutar en una carpeta que contiene directivas XML exportadas.

Este parámetro también puede tomar un conjunto de objetos Policy, como la salida de Get-ChildItem ejecutar en una ruta de acceso SQLSERVER:\SQLPolicy.

Tipo:PSObject
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-ProgressAction

Determina cómo Responde PowerShell a las actualizaciones de progreso generadas por un script, cmdlet o proveedor, como las barras de progreso generadas por el cmdlet Write-Progress. El cmdlet Write-Progress crea barras de progreso que muestran el estado de un comando.

Tipo:ActionPreference
Alias:proga
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-TargetExpression

Especifica una consulta que devuelve la lista de objetos que definen el conjunto de destino.

Las consultas se especifican como una cadena que tiene nodos separados por el carácter "/".

Cada nodo tiene el formato ObjectType[Filter].

ObjectType es uno de los objetos del modelo de objetos Objetos de administración de SQL Server (SMO) y Filter es una expresión que filtra por objetos específicos en ese nodo. Los nodos deben seguir la jerarquía de los objetos SMO. Por ejemplo, la siguiente expresión de consulta devuelve la base de datos de ejemplo AdventureWorks:

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

Si se especifica TargetExpression, no especifique TargetObject.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-TargetObjects

Especifica el conjunto de objetos de SQL Server con los que se evalúa la directiva. Para conectarse a una instancia de SQL Server Analysis Services, especifique un objeto Microsoft.AnalysisServices.Server para TargetObject.

Si se especifica TargetObject, no especifique TargetExpression.

Tipo:PSObject[]
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-TargetServerName

Especifica la instancia del motor de base de datos que contiene el conjunto de destino.

Puede especificar una variable que contenga un objeto Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection.

También puede especificar una cadena que cumpla con los formatos que se usan en la propiedad ConnectionString de la clase System.Data.SqlClient.SqlConnection (v21 del módulo) o la clase Microsoft.Data.SqlClient.SqlConnection (v22+ del módulo) en .Net.

Entre ellas se incluyen cadenas como las creadas mediante System.Data.SqlClient.SqlConnectionStringBuilder o Microsoft.Data.SqlClient.SqlConnectionStringBuilder.

De forma predeterminada, este cmdlet se conecta mediante la autenticación de Windows.

Tipo:PSObject
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

System.Management.Automation.PSObject