Condividi tramite


cmdlet Invoke-PolicyEvaluation

Invoke-PolicyEvaluation è un cmdlet di SQL 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.

Utilizzo di Invoke-PolicyEvaluation

Invoke-PolicyEvaluation valuta uno o più criteri rispetto a un set di oggetti SQL Server denominato set di destinazioni. Il set di oggetti di destinazione proviene da un server di destinazione. I criteri definiscono delle condizioni, che sono gli stati consentiti per gli oggetti di destinazione. Ad esempio, i criteri Database Trustworthy dichiarano che la proprietà di database TRUSTWORTHY deve essere impostata su OFF.

Il parametro -AdHocPolicyEvaluationMode specifica le azioni intraprese:

  • Check
    Consente di segnalare lo stato di conformità degli oggetti di destinazione utilizzando le credenziali dell'accesso corrente. Non riconfigura alcun oggetto. Si tratta dell'impostazione predefinita.

  • CheckSqlScriptAsProxy
    Consente di segnalare lo stato di conformità degli oggetti di destinazione utilizzando le credenziali dell'accesso proxy ##MS_PolicyTSQLExecutionLogin##. Non riconfigura alcun oggetto.

  • Configure
    Consente di segnalare lo stato di conformità degli oggetti di destinazione utilizzando le credenziali dell'accesso corrente. Riconfigura qualsiasi opzione deterministica e configurabile che non è conforme ai criteri.

Definizione di criteri

La modalità utilizzata per specificare i criteri dipende dalla posizione di archiviazione dei criteri. I criteri possono essere archiviati in due formati:

  • Possono essere oggetti archiviati in un archivio criteri, ad esempio un'istanza del Motore di database. È possibile utilizzare la cartella SQLSERVER:\SQLPolicy per specificare il percorso di criteri in un archivio criteri. È 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.

  • I criteri possono essere esportati come file XML. È possibile utilizzare un'unità del file system, ad esempio D:, per specificare il percorso dei file XML. È 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.

Se i criteri vengono archiviati in un archivio criteri, è necessario passare un set di oggetti PSObject che punta ai criteri da valutare. Questo avviene in genere inoltrando tramite pipe a Invoke-PolicyEvaluation l'output di un cmdlet, ad esempio Get-Item, e non richiede la specifica del parametro -Policy. Ad esempio, se sono stati importati i criteri delle procedure consigliate Microsoft nell'istanza del Motore di database, questo comando valuta i criteri Database Status:

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

In questo esempio viene illustrato l'utilizzo di Where-Object per filtrare più criteri da un archivio criteri in base alla relativa proprietà PolicyCategory. Gli oggetti dall'output inoltrato tramite pipe di Where-Object vengono utilizzati da 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 utilizzare il parametro -Policy per fornire sia il percorso che il nome per tutti i criteri. Se non si specifica un percorso nel parametro -Policy, Invoke-PolicyEvaulation utilizza l'impostazione corrente del percorso sqlps. Ad esempio, questo comando valuta uno dei criteri di Procedura consigliata di Microsoft installato con SQL Server rispetto al database predefinito per l'accesso:

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

Questo comando consente di eseguire la stessa operazione, solo che utilizza il percorso sqlps corrente per stabilire il percorso del file XML dei criteri:

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

In questo esempio viene illustrato l'utilizzo del cmdlet Get-ChildItem per recuperare più file XML di criteri e inoltrare tramite pipe gli oggetti in Invoke-PolicyEvaluation:

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

Specifica del set di destinazioni

Utilizzare tre parametri per specificare il set di oggetti di destinazione:

  • -TargetServerName consente di specificare l'istanza di SQL Server che contiene gli oggetti di destinazione. È possibile specificare le informazioni in una stringa che utilizza il formato definito per la proprietà ConnectionString della classe SQLConnection. È possibile utilizzare la classe SqlConnectionStringBuilder per compilare una stringa di connessione con formato corretto. È inoltre possibile creare un oggetto SqlStoreConnection e passarlo a -TargetServer. Se si fornisce una stringa che contiene solo il nome del server, Invoke-PolicyEvaluation utilizzerà l'autenticazione di Windows per connettersi al server.

  • Il parametro -TargetObjects accetta un oggetto o una matrice di oggetti che rappresenta gli oggetti di SQL Server nel set di destinazioni. Ad esempio, è possibile creare una matrice di oggetti di classe Database da passare in -TargetObjects.

  • Il parametro -TargetExpressions consente di prendere una stringa contenente un'espressione di query che specifica gli oggetti nel set di destinazioni. L'espressione di query è nel formato di nodi separati dal carattere barra (/). Ogni nodo è nel formato ObjectType[Filter]. ObjectType è uno degli oggetti in una gerarchia di oggetti SMO (SQL Server Management Objects). Filter è un'espressione che filtra gli oggetti in corrispondenza di quel nodo. Per ulteriori informazioni, vedere Espressioni di query e Uniform Resource Name.

Specificare -TargetObjects oppure -TargetExpression, non entrambi.

In questo esempio viene utilizzato un oggetto Sfc.SqlStoreConnection per specificare il server di destinazione:

sl "C:\Program Files\Microsoft SQL Server\100\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 utilizzato -TargetExpression per identificare il database specifico da valutare:

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

Valutazione di criteri di Analysis Services

Per valutare i criteri rispetto a un'istanza di Analysis 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. In questo esempio viene illustrata la valutazione dei criteri di configurazione della superficie di attacco di Procedure consigliate per Analysis Services:

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

Per valutare criteri di Reporting Services, è necessario caricare e registrare un assembly in PowerShell, creare una variabile con un oggetto di connessione di Reporting Services e passarla al parametro -TargetObject. In questo esempio viene illustrata la valutazione dei criteri di configurazione della superficie di attacco di Procedure consigliate per Reporting Services:

sl "C:\Program Files\Microsoft SQL Server\100\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'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. È possibile utilizzare il parametro -OutputXML per specificare che dal cmdlet venga generato invece un report dettagliato come file XML. Invoke-PolicyEvaluation utilizza lo schema SML-IF (Systems Modeling Language Interchange Format) affinché il file sia leggibile tramite i lettori SML-IF.

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

Vedere anche

Concetti

Utilizzo di cmdlet del motore di database