cmdlet Invoke-PolicyEvaluationInvoke-PolicyEvaluation cmdlet

Invoke-PolicyEvaluation è un cmdlet di SQL ServerSQL Server che segnala se un set di destinazioni di oggetti di SQL Server è conforme alle condizioni specificate in uno o più criteri della gestione basata su criteri.Invoke-PolicyEvaluation is a SQL ServerSQL Server cmdlet that reports whether a target set of SQL Server objects complies with the conditions specified in one or more Policy-Based Management policies.

Utilizzo di Invoke-PolicyEvaluationUsing Invoke-PolicyEvaluation

Invoke-PolicyEvaluation valuta uno o più criteri rispetto a un set di oggetti di SQL Server denominato set di destinazioni.Invoke-PolicyEvaluation evaluates one or more policies against a set of SQL Server objects called the target set. Il set di oggetti di destinazione proviene da un server di destinazione.The set of target objects comes from a target server. I criteri definiscono delle condizioni, che sono gli stati consentiti per gli oggetti di destinazione.Each policy defines conditions, which are the allowed states for the target objects. Ad esempio, i criteri Database con proprietà trustworthy dichiarano che la proprietà di database TRUSTWORTHY deve essere impostata su OFF.For example, the Trustworthy Database policy states that the TRUSTWORTHY database property must be set to OFF.

Il parametro -AdHocPolicyEvaluationMode specifica le azioni intraprese:The -AdHocPolicyEvaluationMode parameter specifies the actions taken:

ControllaCheck
Consente di segnalare lo stato di conformità degli oggetti di destinazione utilizzando le credenziali dell'accesso corrente.Report the compliance status of the target objects using the credentials of your current login. Non riconfigura alcun oggetto.Do no reconfigure any objects. Si tratta dell'impostazione predefinita.This is the default setting.

CheckSqlScriptAsProxyCheckSqlScriptAsProxy
Consente di segnalare lo stato di conformità degli oggetti di destinazione usando le credenziali dell'accesso proxy ##MS_PolicyTSQLExecutionLogin## .Report the compliance status of the target objects using the credentials of the ##MS_PolicyTSQLExecutionLogin## proxy login. Non riconfigura alcun oggetto.Do no reconfigure any objects.

ConfiguraConfigure
Consente di segnalare lo stato di conformità degli oggetti di destinazione utilizzando le credenziali dell'accesso corrente.Report the compliance status of the target objects using the credentials of your current login. Riconfigura qualsiasi opzione deterministica e configurabile che non è conforme ai criteri.Reconfigure any settable and deterministic options that are not in compliance with the policies.

Definizione di criteriSpecifying Polices

La modalità utilizzata per specificare i criteri dipende dalla posizione di archiviazione dei criteri.How you specify a policy depends on where the policy is stored. I criteri possono essere archiviati in due formati:Policies can be stored in two formats:

  • Possono essere oggetti archiviati in un archivio criteri, ad esempio un'istanza del Motore di database.They can be objects stored in a policy store, such as an instance of the Database Engine. È possibile utilizzare la cartella SQLSERVER:\SQLPolicy per specificare il percorso di criteri in un archivio criteri.You can use the SQLSERVER:\SQLPolicy folder to specify the location of policies in a policy store. È possibile utilizzare i cmdlet di Windows PowerShell per filtrare i criteri di input in base alle relative proprietà, ad esempio utilizzando Where-Object per applicare il filtro in base alla categoria di criteri oppure Get-Item per applicare il filtro in base al nome dei criteri.You can use Windows PowerShell cmdlets to filter the input polices based on their properties, such as using Where-Object to filter on the policy category or Get-Item to filter on policy name.

  • I criteri possono essere esportati come file XML.They can be exported as XML files. È possibile utilizzare un'unità del file system, ad esempio D:, per specificare il percorso dei file XML.You can use a file system drive, such as D:, to specify the location of the XML files. È possibile utilizzare i cmdlet di Windows PowerShell, ad esempio Where-Object, per filtrare i criteri in base alle proprietà dei file, ad esempio il nome del file.You can use Windows PowerShell cmdlets such as Where-Object to filter the policies on their file properties, such as file name.

    Se i criteri vengono archiviati in un archivio criteri, è necessario passare un set di oggetti PSObject che punta ai criteri da valutare.If the policies are stored in a policy store, you must pass in a set of PSObjects pointing to the policies to be evaluated. Questo avviene in genere inoltrando tramite pipe a Invoke-PolicyEvaluationl'output di un cmdlet, ad esempio Get-Item, e non richiede la specifica del parametro -Policy .This is typically done by piping the output of a cmdlet such as Get-Item to Invoke-PolicyEvaluation, and does not require that you specify the -Policy parameter. Ad esempio, se sono stati importati i criteri delle procedure consigliate Microsoft nell'istanza del motore di database, questo comando valuta i criteri Stato del database :For example, if you have imported the Microsoft Best Practices policies into your instance of the database engine, this command evaluates the Database Status policy:

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

Questo esempio illustra l'uso di Where-Object per filtrare più criteri da un archivio criteri in base alla relativa proprietà PolicyCategory .This example shows using Where-Object to filter multiple policies from a policy store based on their PolicyCategory property. Gli oggetti dall'output inoltrato tramite pipe di Where-Object vengono usati da Invoke-PolicyEvaluation.The objects from the piped output of Where-Object is consumed by Invoke-PolicyEvaluation.

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

Se i criteri sono archiviati come file XML, è necessario usare il parametro -Policy per specificare il percorso e il nome per tutti i criteri.If the policies are stored as XML files, you must use the -Policy parameter to supply both the path and name for each policy. Se non si specifica un percorso nel parametro -Policy , Invoke-PolicyEvaulation usa l'impostazione corrente del percorso sqlps .If you do not specify a path in the -Policy parameter, Invoke-PolicyEvaulation uses the current setting of the sqlps path. Ad esempio, questo comando valuta uno dei criteri di Procedura consigliata di Microsoft installato con SQL Server rispetto al database predefinito per l'accesso:For example, this command evaluates one of the Microsoft Best Practice policies installed with SQL Server against the default database for your login:

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

Questo comando consente di eseguire la stessa operazione, solo che usa il percorso sqlps corrente per stabilire il percorso del file XML dei criteri:This command does the same thing, only it uses the current sqlps path to establish the location of the policy XML file:

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

Questo esempio illustra l'uso del cmdlet Get-ChildItem per recuperare più file XML di criteri e inoltrare tramite pipe gli oggetti in Invoke-PolicyEvaluation:This example shows using the Get-ChildItem cmdlet to retrieve multiple policy XML files and pipe the objects into Invoke-PolicyEvaluation:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"  
gci "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"  

Specifica del set di destinazioniSpecifying the Target Set

Utilizzare tre parametri per specificare il set di oggetti di destinazione:Use three parameters to specify the set of target objects:

  • -TargetServerName consente di specificare l'istanza di SQL Server che contiene gli oggetti di destinazione.-TargetServerName specifies the instance of SQL Server containing the target objects. È possibile specificare le informazioni in una stringa che utilizza il formato definito per la proprietà ConnectionString della classe SqlConnection .You can specify the information in a string that uses the format defined for the ConnectionString property of the SqlConnection class. È possibile usare la classe SqlConnectionStringBuilder per compilare una stringa di connessione con formato corretto.You can use the SqlConnectionStringBuilder class to build a correctly formatted connection string. È inoltre possibile creare un oggetto SqlStoreConnection e passarlo a -TargetServer.You can also create a SqlStoreConnection object and pass it to -TargetServer. Se si specifica una stringa che contiene solo il nome del server, Invoke-PolicyEvaluation userà l'autenticazione di Windows per connettersi al server.If you supply a string that has only the name of the server, Invoke-PolicyEvaluation uses Windows Authentication to connect to the server.

  • -TargetObjects accetta un oggetto o una matrice di oggetti che rappresenta gli oggetti di SQL Server nel set di destinazioni.-TargetObjects takes an object or array of objects that represent the SQL Server objects in the target set. È possibile ad esempio creare una matrice di oggetti di classe Database da passare in -TargetObjects.For example, you could create an array of Database class objects to pass in to -TargetObjects.

  • -TargetExpressions consente di prendere una stringa contenente un'espressione di query che specifica gli oggetti nel set di destinazioni.-TargetExpressions takes a string containing a query expression that specifies the objects in the target set. L'espressione di query è nel formato di nodi separati dal carattere barra (/).The query expression is in the form of nodes separated by the '/' character. Ogni nodo è nel formato ObjectType[Filter].Each node is in the form ObjectType[Filter]. ObjectType è uno degli oggetti in una gerarchia di oggetti SMO (SQL Server Management Objects).Object type is one of the objects in a SQL Server Management Object (SMO) object hieararchy. Filter è un'espressione che filtra gli oggetti in corrispondenza di quel nodo.Filter is an expression that filters for objects at that node. Per altre informazioni, vedere Espressioni di query e Uniform Resource Name.For more information, see Query Expressions and Uniform Resource Names.

    Specificare il parametro -TargetObjects o -TargetExpression, ma non entrambi.Specify either -TargetObjects or -TargetExpression, not both.

    In questo esempio viene utilizzato un oggetto Sfc.SqlStoreConnection per specificare il server di destinazione:This example uses an Sfc.SqlStoreConnection object to specify the target server:

sl "C:\Program Files\Microsoft SQL Server\130\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  

In questo esempio viene usato -TargetExpression per identificare il database specifico da valutare:This example uses -TargetExpression to identify the specific database to evaluate:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MyComputer" -TargetExpression "Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']"  

Valutazione di criteri di Analysis ServicesEvaluating Analysis Services Policies

Per valutare i criteri rispetto a un'istanza di Analysis ServicesAnalysis Services, è necessario caricare e registrare un assembly in PowerShell, creare una variabile con un oggetto di connessione di Analysis Services e passarla al parametro -TargetObject .To evaluate policies against an instance of Analysis ServicesAnalysis Services, you must load and register an assembly into PowerShell, create a variable with an Analysis Services connection object, and pass the variable to the -TargetObject parameter. In questo esempio viene illustrata la valutazione dei criteri di configurazione della superficie di attacco di Procedure consigliate per Analysis ServicesAnalysis Services:This example shows evaluating the Best Practices surface area configuration policy for Analysis ServicesAnalysis Services:

sl "C:\Program Files\Microsoft SQL Server\130\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  

Valutazione di criteri di Reporting ServicesEvaluating Reporting Services Policies

Per valutare criteri di Reporting ServicesReporting Services , è necessario caricare e registrare un assembly in PowerShell, creare una variabile con un oggetto di connessione di Reporting ServicesReporting Services e passarla al parametro -TargetObject .To evaluate Reporting ServicesReporting Services policies, you must load and register an assembly into PowerShell, create a variable with a Reporting ServicesReporting Services connection object, and pass the variable to the -TargetObject parameter. In questo esempio viene illustrata la valutazione dei criteri di configurazione della superficie di attacco di Procedure consigliate per Reporting ServicesReporting Services:This example shows evaluating the Best Practices surface area configuration policy for Reporting ServicesReporting Services:

sl "C:\Program Files\Microsoft SQL Server\130\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  

Formattazione dell'outputFormatting Output

Per impostazione predefinita, l'output di Invoke-PolicyEvaluation viene visualizzato nella finestra del prompt dei comandi sotto forma di breve report in formato leggibile.By default, the output of Invoke-PolicyEvaluation is displayed in the command prompt window as a concise report in human-readable format. Usare il parametro -OutputXML per specificare che dal cmdlet venga generato invece un report dettagliato come file XML.You can use the -OutputXML parameter to specify that the cmdlet instead produce a detailed report as an XML file. Invoke-PolicyEvaluation usa lo schema SML-IF (Systems Modeling Language Interchange Format) affinché il file sia leggibile tramite i lettori SML-IF.Invoke-PolicyEvaluation uses the Systems Modeling Language Interchange Format (SML-IF) schema so the file can be read by SML-IF readers.

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

Vedere ancheSee Also

Utilizzo di cmdlet del motore di databaseUse the Database Engine cmdlets