Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Invoke-PolicyEvaluation es un cmdlet de SQL Server que informa de si un conjunto de objetos de SQL Server de destino cumple las condiciones especificadas en una o varias directivas de administración basada en directivas.
Uso de Invoke-PolicyEvaluation
Invoke-PolicyEvaluation evalúa una o varias directivas en un conjunto de objetos de SQL Server denominado conjunto de destinos. El conjunto de objetos de destino procede de un servidor de destino. Cada directiva define las condiciones, que son los estados permitidos para los objetos de destino. Por ejemplo, la directiva Base de datos confiable indica que la propiedad de base de datos TRUSTWORTHY debe configurarse en OFF.
El parámetro -AdHocPolicyEvaluationMode especifica las acciones realizadas:
Comprobación
Informe del estado de cumplimiento de los objetivos mediante las credenciales de tu sesión actual. No vuelva a configurar ningún objeto. Esta es la configuración predeterminada.
CheckSqlScriptAsProxy
Informe del estado de cumplimiento de los objetos de destino mediante las credenciales del proxy de inicio de sesión ##MS_PolicyTSQLExecutionLogin##. No vuelva a configurar ningún objeto.
Configuración
Informe sobre el estado de cumplimiento de los objetivos utilizando las credenciales de su inicio de sesión actual. Reconfigure cualquier opción configurable y determinista que no cumpla con las políticas.
Especificar políticas
La forma de especificar una directiva depende de dónde se almacene la directiva. Las directivas se pueden almacenar en dos formatos:
Pueden ser objetos almacenados en un almacén de directivas, como una instancia del motor de base de datos. Puede usar la carpeta SQLSERVER:\SQLPolicy para especificar la ubicación de las directivas en un almacén de directivas. Puede usar cmdlets de Windows PowerShell para filtrar las directivas de entrada en función de sus propiedades, como usar Where-Object para filtrar por la categoría de directiva o Get-Item para filtrar por el nombre de la directiva.
Se pueden exportar como archivos XML. Puede usar una unidad del sistema de archivos, como D:, para especificar la ubicación de los archivos XML. Puede usar cmdlets de Windows PowerShell como Where-Object para filtrar las directivas en sus propiedades de archivo, como el nombre de archivo.
Si las directivas se almacenan en un almacén de directivas, debe proporcionar un conjunto de objetos PS que apunten a las directivas que se van a evaluar. Normalmente, esto se hace canalizando la salida de un cmdlet como Get-Item a Invoke-PolicyEvaluation y no requiere que especifique el parámetro -Policy . Por ejemplo, si ha importado las directivas de procedimientos recomendados de Microsoft en la instancia del motor de base de datos, este comando evalúa la directiva estado de la base de datos:
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
Get-Item "Database Status" | Invoke-PolicyEvaluation -TargetServerName "MYCOMPUTER"
En este ejemplo se muestra el uso de Where-Object para filtrar varias directivas de un almacén de directivas en función de su propiedad PolicyCategory . Los objetos de la salida canalizada de Where-Object son consumidos por Invoke-PolicyEvaluation.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
gci | Where-Object {$_.PolicyCategory -eq "Microsoft Best Practices: Maintenance"} | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"
Si las directivas se almacenan como archivos XML, debe usar el parámetro -Policy para proporcionar la ruta de acceso y el nombre de cada directiva. Si no especifica una ruta en el parámetro -Policy, Invoke-PolicyEvaluation usa la configuración actual de la ruta de sqlps. Por ejemplo, este comando evalúa una de las políticas de buenas prácticas de Microsoft instaladas con SQL Server en la base de datos predeterminada para tu inicio de sesión.
Invoke-PolicyEvaluation -Policy "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033\Database Status.xml" -TargetServerName "MYCOMPUTER"
Este comando hace lo mismo, sólo que usa la ruta actual de sqlps para establecer la ubicación del archivo XML de directiva.
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MYCOMPUTER"
En este ejemplo se muestra el uso del cmdlet Get-ChildItem para recuperar varios archivos XML de directiva y canalizar los objetos a 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"
Especificar el conjunto objetivo
Use tres parámetros para especificar el conjunto de objetos de destino:
-TargetServerName especifica la instancia de SQL Server que contiene los objetos de destino. Puede especificar la información en una cadena que usa el formato definido para la propiedad ConnectionString de la SqlConnection clase . Puede usar la SqlConnectionStringBuilder clase para crear una cadena de conexión con formato correcto. También puede crear un SqlStoreConnection objeto y pasarlo a -TargetServer. Si proporciona una cadena que tiene solo el nombre del servidor, Invoke-PolicyEvaluation usa la autenticación de Windows para conectarse al servidor.
-TargetObjects toma un objeto o matriz de objetos que representan los objetos de SQL Server del conjunto de destino. Por ejemplo, podría crear una matriz de objetos de Database clase para pasar a -TargetObjects.
-TargetExpressions toma una cadena que contiene una expresión de consulta que especifica los objetos del conjunto de destino. La expresión de consulta está en forma de nodos separados por el carácter "/". Cada nodo tiene el formato ObjectType[Filter]. El tipo de objeto es uno de los objetos de una jerarquía de objetos de objeto de administración de SQL Server (SMO). Filter es una expresión que filtra los objetos de ese nodo. Para más información, consulte Query Expressions and Uniform Resource Names.
Especifique -TargetObjects o -TargetExpression, no ambos.
En este ejemplo se usa un objeto Sfc.SqlStoreConnection para especificar el 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
En este ejemplo se usa -TargetExpression para identificar la base de datos específica que se va a evaluar:
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']"
Evaluación de directivas de Analysis Services
Para evaluar las directivas en una instancia de Analysis Services, debe cargar y registrar un ensamblado en PowerShell, crear una variable con un objeto de conexión de Analysis Services y pasar la variable al parámetro -TargetObject . En este ejemplo se muestra cómo evaluar la directiva de configuración de la superficie de prácticas recomendadas para 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
Evaluación de políticas de Reporting Services
Para evaluar las directivas de Reporting Services, debe cargar y registrar un ensamblado en PowerShell, crear una variable con un objeto de conexión de Reporting Services y pasar la variable al parámetro -TargetObject . En este ejemplo se muestra cómo evaluar la directiva de configuración del área de superficie de prácticas recomendadas para 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
Dar formato a la salida
Por defecto, la salida de Invoke-PolicyEvaluation se muestra en la ventana de la línea de comandos como un informe conciso en formato legible para humanos. Puede usar el parámetro -OutputXML para especificar que el cmdlet genere en su lugar un informe detallado como un archivo XML. Invoke-PolicyEvaluation usa el esquema Systems Modeling Language Interchange Format (SML-IF) para que los lectores de SML-IF puedan leer el archivo.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
Invoke-PolicyEvaluation -Policy "Datbase Status" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReports\DatabaseStatusReport.xml