Invoke-PolicyEvaluation

Ruft mindestens eine SQL Server richtlinienbasierte Verwaltungsrichtlinienauswertungen auf.

Syntax

Invoke-PolicyEvaluation
      [-Policy] <PSObject>
      [-AdHocPolicyEvaluationMode <AdHocPolicyEvaluationMode>]
      -TargetServerName <PSObject>
      [-TargetExpression <String>]
      [-OutputXml]
      [<CommonParameters>]
Invoke-PolicyEvaluation
      [-Policy] <PSObject>
      [-AdHocPolicyEvaluationMode <AdHocPolicyEvaluationMode>]
      -TargetObjects <PSObject[]>
      [-OutputXml]
      [<CommonParameters>]

Beschreibung

Das Cmdlet Invoke-PolicyEvaluation wertet mindestens eine richtlinienbasierte Verwaltungsrichtlinie anhand einer Gruppe von SQL Server Objekten aus, die im Zielsatz benannt sind.

Die Richtlinien geben die zulässigen Werte für die verschiedenen Eigenschaften an, die den SQL Server-Objekten zugewiesen sind. Diese betreffen beispielsweise das Einrichten von Websitestandardwerten für Datenbanknamen oder -sortierungen.

Wenn dieses Cmdlet im Überprüfungsmodus ausgeführt wird, wird gemeldet, ob die aktuellen Eigenschaften der Objekte im Zielsatz den Regeln in den Richtliniendefinitionen entsprechen.

Die Objekte im Zielsatz werden nicht neu konfiguriert, wenn deren Eigenschaften den Richtlinien nicht entsprechen.

Im Konfigurationsmodus konfiguriert dieses Cmdlet alle Objekte im Zielsatz neu, die nicht den Richtliniendefinitionen entsprechen.

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

Beispiele

Beispiel 1: Auswerten einer Richtlinie auf dem Standard-instance des Computers

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"

Mit diesem Befehl wird eine Richtlinie auf dem Standard instance des angegebenen Computers ausgewertet. Die Richtlinie wird aus einer XML-Datei gelesen, und die Verbindung wird mithilfe der Windows-Authentifizierung authentifiziert.

Beispiel 2: Auswerten von Richtlinien aus XML-Dateien

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"

Dieser Befehl liest zwei Richtlinien aus XML-Dateien in einem Ordner und übergibt sie dann mithilfe des Pipelineoperators an Invoke-PolicyEvaluation.

Beispiel 3: Auswerten von Richtlinien und Formatieren der Ausgabe gemäß dem SMLIF-Schema

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

Dieser Befehl wertet eine Richtlinie aus und formatiert die Ausgabe mithilfe des SML-IF-Schemas (Services Modeling Language Interchange Format). Die Ausgabe wird an eine Datei umgeleitet.

Beispiel 4: Auswerten eines gefilterten Richtliniensatzes

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'

Der erste Befehl legt den aktuellen Pfad auf einen SQL Server Richtlinienspeicher fest.

Der zweite Befehl verwendet Get-ChildItem, um alle Richtlinien zu lesen, und verwendet dann Where-Object, um die Liste nach den Richtlinien zu filtern, für die die PolicyCategory-Eigenschaft auf "Microsoft Best Practices: Maintenance" festgelegt ist.

Die Ausgabe wird mithilfe des Pipelineoperators an Invoke-PolicyEvaluation gesendet.

Beispiel 5: Auswerten von Richtlinien aus XML-Dateien mithilfe eines SqlStoreConnection-Objekts

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

Der erste Befehl legt den aktuellen Speicherort auf einen lokalen Ordner fest, der Richtlinienumgehungen in XML-Dateien enthält.

Der zweite Befehl verwendet New-Object, um ein SqlStoreConnection-Objekt zu erstellen.

Der dritte Befehl wertet die Richtlinie aus einer XML-Datei für den vom SqlStoreConnection-Objekt definierten Server aus.

Beispiel 6: Bewerten einer Richtlinie mithilfe einer manuell geladenen Assembly

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

Der erste Befehl legt den aktuellen Ordnerspeicherort fest.

Der zweite Befehl lädt eine instance der SQL Server Analysis Services Assembly.

Mit dem dritten Befehl wird ein Microsoft.AnalysisServices-Objekt erstellt.

Der vierte Befehl verwendet das neue AnalysisServices-Objekt, um eine Verbindung mit dem Standardserver zu öffnen, der auf dem lokalen Computer instance.

Mit dem fünften Befehl wird die Analysis Services-Oberflächenkonfigurationsrichtlinie ausgewertet.

Beispiel 7: Auswerten eines gefilterten Richtliniensatzes

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

Dieser Befehl verwendet den TargetExpression-Parameter, um einen Abfrageausdruck anzugeben, der die Datenbank filtert, status Richtlinie anhand der AdventureWorks2014-Beispieldatenbank ausgewertet werden und die Auswertung durchführt.

Beispiel 8: Auswerten der Oberflächenkonfigurationsrichtlinie für 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

Dieser Befehl lädt die SQL Server Reporting Services assembly, erstellt eine Verbindung mit dem Standardserver instance auf dem lokalen Computer und führt die Reporting Services Surface Area Configuration Policy aus.

Parameter

-AdHocPolicyEvaluationMode

Gibt den Auswertungsmodus für die ADHOC-Richtlinie an. Gültige Werte sind:

  • Prüfen. Melden Sie die Compliance-status des Zielsatzes mithilfe der Anmeldeinformationen Ihres Anmeldekontos und ohne Neukonfiguration von Objekten.
  • CheckSqlScriptAsProxy. Führen Sie einen Überprüfungsbericht mit den Anmeldeinformationen des ##MS_PolicyTSQLExecutionLogin##-Proxykontos aus.
  • Konfigurieren. Konfigurieren Sie die Zielsatzobjekte neu, die nicht den Richtlinien entsprechen, und melden Sie die resultierenden status. Dieses Cmdlet konfiguriert nur Eigenschaften neu, die festlegbar und deterministisch sind.
Type:AdHocPolicyEvaluationMode
Accepted values:Check, Configure, CheckSqlScriptAsProxy
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputXml

Gibt an, dass dieses Cmdlet seinen Bericht unter Verwendung des SML-IF-Schemas (Service Modeling Language Interchange Format) im XML-Format erstellt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Policy

Gibt eine oder mehrere auszuwertende Richtlinien an.

Richtlinien können in einem instance der SQL Server-Datenbank-Engine oder als exportierte XML-Dateien gespeichert werden.

Verwenden Sie für Richtlinien, die in einer instance der Datenbank-Engine gespeichert sind, einen Pfad, der auf dem Ordner SQLSERVER:\SQLPolicy basiert, um den Speicherort der Polizeien anzugeben.

Verwenden Sie für Richtlinien, die als XML-Dateien gespeichert sind, einen Dateisystempfad, um den Speicherort der Richtlinien anzugeben.

Dieser Parameter kann eine Zeichenfolge annehmen, die die Namen einer oder mehrerer auszuwertenden Richtlinien angibt.

Wenn in der Zeichenfolge nur ein Datei- oder Richtlinienname angegeben ist, verwendet dieses Cmdlet den aktuellen Pfad.

Verwenden Sie für Richtlinien, die in einer instance der Datenbank-Engine gespeichert sind, den Richtliniennamen, z. B. "Datenbankstatus" oder "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status". Verwenden Sie für Richtlinien, die als XML-Dateien exportiert werden, den Namen der Datei, z. B. "Database Status.xml" oder "C:\MyPolicyFolder\Database Status.xml".

Dieser Parameter kann eine Reihe von FileInfo-Objekten übernehmen, z. B. die Ausgabe von Get-ChildItem für einen Ordner ausgeführt werden, der exportierte XML-Richtlinien enthält.

Dieser Parameter kann auch eine Reihe von Policy-Objekten annehmen, z. B. die Ausgabe von Get-ChildItem für einen SQLSERVER:\SQLPolicy-Pfad ausgeführt werden.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TargetExpression

Gibt eine Abfrage an, die die Liste der Objekte zurückgibt, die den Zielsatz definieren.

Die Abfragen werden als Zeichenfolge angegeben, wobei die einzelnen Knoten durch das Zeichen "/" getrennt sind.

Jeder Knoten hat das Format ObjectType[Filter].

ObjectType ist eines der Objekte im SQL Server Management Objects (SMO)-Objektmodell, und Filter ist ein Ausdruck, durch den bestimmte Objekte auf diesem Knoten herausgefiltert werden. Die Knoten müssen der Hierarchie der SMO-Objekte entsprechen. Der folgende Abfrageausdruck gibt beispielsweise die AdventureWorks-Beispieldatenbank zurück:

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

Wenn TargetExpression angegeben ist, geben Sie targetObject nicht an.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TargetObjects

Gibt den Satz von SQL Server-Objekten an, anhand der die Richtlinie ausgewertet wird. Um eine Verbindung mit einem instance SQL Server Analysedienste herzustellen, geben Sie ein Microsoft.AnalysisServices.Server-Objekt für TargetObject an.

Wenn TargetObject angegeben ist, geben Sie targetExpression nicht an.

Type:PSObject[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-TargetServerName

Gibt die instance der Datenbank-Engine an, die den Zielsatz enthält.

Sie können eine Variable angeben, in der ein Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection-Objekt enthalten ist.

Sie können auch eine Zeichenfolge angeben, die den Formaten entspricht, die in der ConnectionString-Eigenschaft der System.Data.SqlClient.SqlConnection-Klasse (v21 des Moduls) oder der Microsoft.Data.SqlClient.SqlConnection-Klasse (v22+ des Moduls) in .Net verwendet werden.

Dazu gehören Zeichenfolgen, z. B. solche, die mit System.Data.SqlClient.SqlConnectionStringBuilder oder microsoft.Data.SqlClient.SqlConnectionStringBuilder erstellt wurden.

Standardmäßig stellt dieses Cmdlet eine Verbindung mithilfe der Windows-Authentifizierung her.

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

System.Management.Automation.PSObject