Partager via


Invoke-PolicyEvaluation (applet de commande)

Invoke-PolicyEvaluation est une applet de commande SQL Server qui indique si un ensemble cible d’objets SQL Server est conforme aux conditions spécifiées dans une ou plusieurs stratégies de gestion basée sur des stratégies.

Utilisation d'Invoke-PolicyEvaluation

Invoke-PolicyEvaluation évalue une ou plusieurs stratégies par rapport à un jeu d’objets SQL Server appelé « jeu cible ». Le jeu d'objets cibles provient d'un serveur cible. Chaque stratégie définit des conditions qui représentent les états autorisés pour les objets cibles. Par exemple, la stratégie Trustworthy Database stipule que la propriété de base de données TRUSTWORTHY doit avoir la valeur OFF.

Le paramètre -AdHocPolicyEvaluationMode spécifie les actions effectuées :

Vérification
Indique l'état de conformité des objets cibles à l'aide des informations d'identification de votre connexion actuelle. Ne reconfigure pas d'objets. Il s'agit du paramètre par défaut.

CheckSqlScriptAsProxy
Indique l’état de conformité des objets cibles à l’aide des informations d’identification de la connexion proxy ##MS_PolicyTSQLExecutionLogin## . Ne reconfigure pas d'objets.

Configurer
Indique l'état de conformité des objets cibles à l'aide des informations d'identification de votre connexion actuelle. Reconfigure toutes les options définissables et déterministes qui ne sont pas conformes aux stratégies.

Spécification de stratégies

La façon dont vous spécifiez une stratégie dépend de l'emplacement de stockage de la stratégie. Les stratégies peuvent être stockées dans deux formats :

  • Elles peuvent être constituées d'objets stockés dans un magasin de stratégies, par exemple une instance du moteur de base de données. Vous pouvez utiliser le dossier SQLSERVER:\SQLPolicy pour spécifier l'emplacement de stratégies dans un magasin de stratégies. Vous pouvez utiliser des applets de commande Windows PowerShell pour filtrer les stratégies d'entrée selon leurs propriétés, par exemple Where-Object pour appliquer un filtre sur la catégorie de la stratégie ou Get-Item pour appliquer un filtre sur le nom de la stratégie.

  • Elles peuvent être exportées en tant que fichiers XML. Vous pouvez utiliser un lecteur du système de fichiers, tel que D:, pour spécifier l'emplacement des fichiers XML. Vous pouvez utiliser des applets de commande Windows PowerShell tels que Where-Object pour filtrer les stratégies selon les propriétés du fichier, par exemple le nom du fichier.

Si les stratégies sont stockées dans un magasin de stratégies, vous devez passer un jeu de PSObjects pointant vers les stratégies à évaluer. Pour ce faire, dirigez la sortie d’une applet de commande, telle que Get-Item, vers Invoke-PolicyEvaluation. Inutile de spécifier le paramètre -Policy . Par exemple, si vous avez importé les stratégies Recommandations de Microsoft dans votre instance du moteur de base de données, cette commande évalue la stratégie État de la base de données :

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

Cet exemple montre comment utiliser Where-Object pour filtrer plusieurs stratégies d’un magasin de stratégies, en fonction de leur propriété PolicyCategory . Les objets de la sortie dirigée de Where-Object sont consommés par Invoke-PolicyEvaluation.

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

Si les stratégies sont stockées sous la forme de fichiers XML, vous devez utiliser le paramètre -Policy pour fournir le chemin et le nom de chaque stratégie. Si vous ne spécifiez pas de chemin dans le paramètre -Policy , Invoke-PolicyEvaluation utilise le paramètre actuel du chemin sqlps . Par exemple, cette commande évalue l'une des stratégies Recommandations de Microsoft installées avec SQL Server par rapport à la base de données par défaut pour votre connexion :

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

Cette commande a le même effet, sauf qu’elle utilise le chemin d’accès sqlps courant pour établir l’emplacement du fichier XML de la stratégie :

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

Cet exemple montre comment utiliser l’applet de commande Get-ChildItem pour récupérer plusieurs fichiers XML de stratégie et diriger les objets vers 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"  

Spécification du jeu de cibles

Utilisez trois paramètres pour spécifier le jeu d'objets cibles :

  • -TargetServerName spécifie l’instance de SQL Server contenant les objets cibles. Vous pouvez spécifier les informations dans une chaîne qui utilise le format défini pour la propriété ConnectionString de la classe SqlConnection . Vous pouvez utiliser la classe SqlConnectionStringBuilder pour générer une chaîne de connexion correctement mise en forme. Vous pouvez également créer un objet SqlStoreConnection et le transmettre à -TargetServer. Si vous spécifiez une chaîne qui ne contient que le nom du serveur, Invoke-PolicyEvaluation utilise l’authentification Windows pour se connecter au serveur.

  • -TargetObjects accepte un objet ou un tableau d’objets représentant les objets SQL Server dans le jeu cible. Par exemple, vous pouvez créer un tableau d’objets de classe Database à transmettre à -TargetObjects.

  • -TargetExpressions accepte une chaîne contenant une expression de requête qui spécifie les objets dans le jeu cible. L'expression de requête se présente sous la forme de nœuds séparés par le caractère « / ». Chaque nœud se présente sous la forme ObjectType[Filter]. Le type d’objet est l’un des objets d’une hiérarchie d’objets SQL Server Management Object (SMO). Le filtre est une expression qui filtre les objets au niveau de ce nœud. Pour plus d’informations, consultez Expressions de requête et noms URN.

Spécifiez -TargetObjects ou -TargetExpression, mais pas les deux.

Cet exemple utilise un objet Sfc.SqlStoreConnection pour spécifier le serveur cible :

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  

Cet exemple utilise -TargetExpression pour identifier la base de données à évaluer :

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

Évaluation de stratégies Analysis Services

Pour évaluer des stratégies par rapport à un instance d’Analysis Services, vous devez charger et inscrire un assembly dans PowerShell, créer une variable avec un objet de connexion Analysis Services et passer la variable au paramètre -TargetObject. Cet exemple montre l’évaluation de la stratégie de configuration de surface de surface recommandée pour 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  

Évaluation de stratégies Reporting Services

Pour évaluer Reporting Services stratégies, vous devez charger et inscrire un assembly dans PowerShell, créer une variable avec un objet de connexion Reporting Services et passer la variable au paramètre -TargetObject. Cet exemple montre l’évaluation de la stratégie de configuration de surface de surface recommandée pour 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  

Mise en forme de la sortie

Par défaut, la sortie de Invoke-PolicyEvaluation s’affiche dans la fenêtre d’invite de commandes sous la forme d’un rapport concis au format explicite. Vous pouvez utiliser le paramètre -OutputXML pour que l’applet de commande génère plutôt un rapport détaillé sous la forme d’un fichier XML. Invoke-PolicyEvaluation utilise le schéma SML-IF (Systems Modeling Language Interchange Format) pour que le fichier soit lisible par les lecteurs SML-IF.

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

Voir aussi

Utiliser les applets de commande du Moteur de base de données