Partager via


applet de commande Invoke-PolicyEvaluation

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 de Invoke-PolicyEvaluation

Invoke-PolicyEvaluation évalue une ou plusieurs stratégies par rapport à un ensemble d’objets SQL Server appelés l’ensemble cible. L’ensemble d’objets cibles provient d’un serveur cible. Chaque stratégie définit des conditions, qui sont les états autorisés pour les objets cibles. Par exemple, la stratégie de base de données de confiance indique que la propriété de base de données TRUSTWORTHY doit être définie sur OFF.

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

Vérifier
Signalez l’état de conformité des objets cibles à l’aide des informations d’identification de votre connexion actuelle. Ne reconfigurez aucun objet. Il s'agit du paramètre par défaut.

CheckSqlScriptAsProxy
Signalez l’état de conformité des objets cibles à l’aide des informations d’identification de la connexion proxy ##MS_PolicyTSQLExecutionLogin### . Ne reconfigurez aucun objet.

Configurer
Signalez l’état de conformité des objets cibles à l’aide des informations d’identification de votre connexion actuelle. Reconfigurez toutes les options paramétrables et déterministes qui ne sont pas conformes aux politiques.

Spécification de politiques

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

  • Ils peuvent être des objets stockés dans un magasin de stratégies, comme une instance du moteur de base de données. Vous pouvez utiliser le dossier SQLSERVER :\SQLPolicy pour spécifier l’emplacement des 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 en fonction de leurs propriétés, telles que l’utilisation de Where-Object pour filtrer sur la catégorie de stratégie ou les Get-Item pour filtrer sur le nom de la stratégie.

  • Ils peuvent être exportés en tant que fichiers XML. Vous pouvez utiliser un lecteur de système de fichiers, tel que D :, pour spécifier l’emplacement des fichiers XML. Vous pouvez utiliser des applets de commande Windows PowerShell telles que Where-Object pour filtrer les stratégies sur leurs propriétés de fichier, telles que le nom de fichier.

Si les stratégies sont stockées dans un magasin de stratégies, vous devez transmettre un groupe de PSObjects qui indiquent les stratégies à évaluer. Cette opération est généralement effectuée en pipant la sortie d’une applet de commande telle que Get-Item à Invoke-PolicyEvaluation et ne nécessite pas que vous spécifiiez le paramètre -Policy . Par exemple, si vous avez importé les stratégies Microsoft Best Practices dans votre instance du moteur de base de données, cette commande évalue la stratégie d’état de la base de données :

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

Cet exemple montre l’utilisation de Where-Object pour filtrer plusieurs polices à partir d’un entrepôt de polices en fonction de leur propriété PolicyCategory. Les objets de la sortie redirigé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 en tant que fichiers XML, vous devez utiliser le paramètre -Policy pour fournir le chemin d’accès et le nom de chaque stratégie. Si vous ne spécifiez pas de chemin dans le paramètre -Policy , Invoke-PolicyEvaulation utilise le paramètre actuel du chemin sqlps . Par exemple, cette commande évalue l’une des stratégies Microsoft Best Practice 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 fait la même chose, seule elle utilise le chemin sqlps actuel pour établir l’emplacement du fichier XML de 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 dans 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 de l'ensemble cible

Utilisez trois paramètres pour spécifier l’ensemble d’objets cibles :

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

  • -TargetObjects prend un objet ou un tableau d’objets qui représentent les objets SQL Server dans l’ensemble cible. Par exemple, vous pouvez créer un tableau d’objets de Database classe pour les transmettre à -TargetObjects.

  • -TargetExpressions prend une chaîne contenant une expression de requête qui spécifie les objets dans l’ensemble 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 trouve sous forme ObjectType[Filter]. Le type d’objet est l’un des objets d’une hiérarchie d’objets SMO (SQL Server Management Object). Filtre est une expression qui filtre les objets à ce nœud. Pour plus d’informations, consultez Expressions de requête et noms URN.

Spécifiez -TargetObjects ou -TargetExpression, et non 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 spécifique à é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 des stratégies Analysis Services

Pour évaluer des stratégies sur une 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 la surface de fonctionnalité selon les meilleures pratiques 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 des politiques des Services de rapports

Pour évaluer les stratégies Reporting Services, 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 comment évaluer la stratégie de configuration de l'espace suivant les meilleures pratiques 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 lisible par l’homme. Vous pouvez utiliser le paramètre -OutputXML pour spécifier que l’applet de commande produit plutôt un rapport détaillé en tant que fichier XML. Invoke-PolicyEvaluation utilise le schéma System Modeling Language Interchange Format (SML-IF) afin que le fichier puisse être lu par SML-IF lecteurs.

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