Partager via


Invoke-PolicyEvaluation

Appelle une ou plusieurs évaluations de stratégie de gestion basées sur des stratégies SQL Server.

Syntaxe

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

L’applet de commande Invoke-PolicyEvaluation évalue une ou plusieurs stratégies de gestion basées sur des stratégies par rapport à un ensemble d’objets SQL Server nommés dans l’ensemble cible.

Les stratégies spécifient les valeurs autorisées pour différentes propriétés associées à des objets SQL Server, telles que l’établissement de normes de site pour les noms de base de données ou les classements.

Lorsque cette applet de commande s’exécute en mode vérification, elle indique si les propriétés actuelles des objets du jeu cible sont conformes aux règles des définitions de stratégie.

Les objets de l’ensemble cible ne sont pas reconfigurés si leurs propriétés ne sont pas conformes aux stratégies.

En mode de configuration, cette applet de commande reconfigure tous les objets de l’ensemble cible qui ne sont pas conformes aux définitions de stratégie.

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

Exemples

Exemple 1 : Évaluer une stratégie sur l’instance par défaut de l’ordinateur

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"

Cette commande évalue une stratégie sur l’instance par défaut de l’ordinateur spécifié. La stratégie est lue à partir d’un fichier XML et la connexion est authentifiée à l’aide de l’authentification Windows.

Exemple 2 : Évaluer des stratégies à partir de fichiers 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"

Cette commande lit deux stratégies à partir de fichiers XML dans un dossier, puis les transmet à Invoke-PolicyEvaluation à l’aide de l’opérateur de pipeline.

Exemple 3 : Évaluer les stratégies et mettre en forme la sortie en fonction du schéma 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

Cette commande évalue une stratégie et met en forme la sortie à l’aide du schéma d’échange de langage de modélisation des services (SML-IF). La sortie est redirigée vers un fichier.

Exemple 4 : Évaluer un ensemble de stratégies filtré

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'

La première commande définit le chemin d’accès actuel à un magasin de stratégies SQL Server.

La deuxième commande utilise Get-ChildItem pour lire toutes les stratégies, puis utilise Where-Object pour filtrer la liste des stratégies dont la propriété PolicyCategory est définie sur « Bonnes pratiques microsoft : maintenance ».

La sortie est envoyée à Invoke-PolicyEvaluation à l’aide de l’opérateur de pipeline.

Exemple 5 : Évaluer des stratégies à partir de fichiers XML à l’aide d’un objet 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

La première commande définit l’emplacement actuel sur un dossier local qui contient des évaulations de stratégie dans des fichiers XML.

La deuxième commande utilise New-Object pour créer un objet SqlStoreConnection.

La troisième commande évalue la stratégie à partir d’un fichier XML sur le serveur défini par l’objet SqlStoreConnection.

Exemple 6 : Évaluer la stratégie à l’aide d’un assembly chargé manuellement

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

La première commande définit l’emplacement actuel du dossier.

La deuxième commande charge une instance de l’assembly SQL Server Analysis Services.

La troisième commande crée un objet Microsoft.AnalysisServices.

La quatrième commande utilise le nouvel objet AnalysisServices pour ouvrir une connexion à l’instance de serveur par défaut sur l’ordinateur local.

La cinquième commande évalue la stratégie de configuration de surface d’exposition Analysis Services.

Exemple 7 : Évaluer un ensemble de stratégies filtré

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

Cette commande utilise le paramètre TargetExpression pour spécifier une expression de requête qui filtre la stratégie d’état de la base de données à évaluer par rapport à l’exemple de base de données AdventureWorks2014 et effectue l’évaluation.

Exemple 8 : Évaluer la stratégie de configuration de surface d’exposition 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

Cette commande charge l’assembly SQL Server Reporting Services, crée une connexion à l’instance de serveur par défaut sur l’ordinateur local et exécute la stratégie de configuration de surface d’exposition Reporting Services.

Paramètres

-AdHocPolicyEvaluationMode

Spécifie le mode d’évaluation de stratégie adhoc. Les valeurs valides sont les suivantes :

  • Vérifier. Signalez l’état de conformité de l’ensemble cible à l’aide des informations d’identification de votre compte de connexion et sans reconfigurer d’objets.
  • CheckSqlScriptAsProxy. Exécutez un rapport de vérification à l’aide des informations d’identification du compte proxy ##MS_PolicyTSQLExecutionLogin###.
  • Configurer. Reconfigurez les objets de jeu cible qui ne sont pas conformes aux stratégies et signalent l’état résultant. Cette applet de commande reconfigure uniquement les propriétés définies et déterministes.
Type:AdHocPolicyEvaluationMode
Valeurs acceptées:Check, Configure, CheckSqlScriptAsProxy
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-OutputXml

Indique que cette applet de commande produit son rapport au format XML à l’aide du schéma d’échange de langage de modélisation de service (SML-IF).

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Policy

Spécifie une ou plusieurs stratégies à évaluer.

Les stratégies peuvent être stockées dans une instance du moteur de base de données SQL Server ou sous forme de fichiers XML exportés.

Pour les stratégies stockées dans une instance du moteur de base de données, utilisez un chemin d’accès basé sur le dossier SQLSERVER :\SQLPolicy pour spécifier l’emplacement des stratégies.

Pour les stratégies stockées en tant que fichiers XML, utilisez un chemin d’accès au système de fichiers pour spécifier l’emplacement des stratégies.

Ce paramètre peut prendre une chaîne qui spécifie les noms d’une ou plusieurs stratégies à évaluer.

Si seul un fichier ou un nom de stratégie est spécifié dans la chaîne, cette applet de commande utilise le chemin d’accès actuel.

Pour les stratégies stockées dans une instance du moteur de base de données, utilisez le nom de la stratégie, tel que « État de la base de données » ou « SQLSERVER :\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status ». Pour les stratégies exportées en tant que fichiers XML, utilisez le nom du fichier, tel que « Base de données Status.xml» ou «C:\MyPolicyFolder\Database Status.xml».

Ce paramètre peut prendre un ensemble d’objets FileInfo, tels que la sortie de Get-ChildItem s’exécuter sur un dossier qui contient des stratégies XML exportées.

Ce paramètre peut également prendre un ensemble d’objets de stratégie, tels que la sortie de Get-ChildItem s’exécuter sur un chemin SQLSERVER :\SQLPolicy.

Type:PSObject
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-ProgressAction

Détermine comment PowerShell répond aux mises à jour de progression générées par un script, une applet de commande ou un fournisseur, telles que les barres de progression générées par l’applet de commande Write-Progress. L’applet de commande Write-Progress crée des barres de progression qui affichent l’état d’une commande.

Type:ActionPreference
Alias:proga
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-TargetExpression

Spécifie une requête qui retourne la liste des objets qui définissent l’ensemble cible.

Les requêtes sont spécifiées sous la forme d’une chaîne qui comporte des nœuds séparés par le caractère « / ».

Chaque nœud est au format ObjectType[Filter].

ObjectType est l’un des objets du modèle objet SMO (SQL Server Management Objects), et Filter est une expression qui filtre des objets spécifiques à ce nœud. Les nœuds doivent suivre la hiérarchie des objets SMO. Par exemple, l’expression de requête suivante retourne l’exemple de base de données AdventureWorks :

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

Si TargetExpression est spécifié, ne spécifiez pas TargetObject.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-TargetObjects

Spécifie l’ensemble d’objets SQL Server sur lesquels la stratégie est évaluée. Pour vous connecter à une instance de SQL Server Analysis Services, spécifiez un objet Microsoft.AnalysisServices.Server pour TargetObject.

Si TargetObject est spécifié, ne spécifiez pas TargetExpression.

Type:PSObject[]
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-TargetServerName

Spécifie l’instance du moteur de base de données qui contient le jeu cible.

Vous pouvez spécifier une variable qui contient un objet Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection.

Vous pouvez également spécifier une chaîne conforme aux formats utilisés dans la propriété ConnectionString de la classe System.Data.SqlClient.SqlConnection (v21 du module) ou à la classe Microsoft.Data.SqlClient.SqlConnection (v22+ du module) dans .Net.

Ces chaînes incluent des chaînes telles que celles créées à l’aide de System.Data.SqlClient.SqlConnectionStringBuilder ou de Microsoft.Data.SqlClient.SqlConnectionStringBuilder.

Par défaut, cette applet de commande se connecte à l’aide de l’authentification Windows.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

System.Management.Automation.PSObject