Freigeben über


Invoke-PolicyEvaluation

Ruft eine oder mehrere SQL Server-richtlinienbasierte Verwaltungsrichtlinienauswertungen auf.

Syntax

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

Beschreibung

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

Die Richtlinien geben die zulässigen Werte für verschiedene Eigenschaften an, die SQL Server-Objekten zugeordnet sind, z. B. das Einrichten von Websitestandards 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 ihre Eigenschaften nicht den Richtlinien 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 der Standardinstanz 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 der Standardinstanz 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

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

Beispiel 4: Auswerten eines gefilterten Satzes von Richtlinien

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 zum Lesen aller Richtlinien und verwendet dann Where-Object, um die Liste nach den Richtlinien zu filtern, für die ihre 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 Richtlinienhinterziehungen in XML-Dateien enthält.

Der zweite Befehl verwendet New-Object zum Erstellen eines SqlStoreConnection-Objekts.

Der dritte Befehl wertet die Richtlinie aus einer XML-Datei anhand des vom SqlStoreConnection-Objekt definierten Servers aus.

Beispiel 6: Auswerten der 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 Instanz der SQL Server Analysis Services-Assembly.

Der dritte Befehl erstellt ein Microsoft.AnalysisServices-Objekt.

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

Der fünfte Befehl wertet die Analysis Services-Oberflächenkonfigurationsrichtlinie aus.

Beispiel 7: Auswerten eines gefilterten Satzes von Richtlinien

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 Datenbankstatusrichtlinie filtert, anhand der AdventureWorks2014-Beispieldatenbank ausgewertet und die Auswertung durchführt.

Beispiel 8: Auswerten der Konfigurationsrichtlinie für Reporting Services-Oberflächenbereiche

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 der Standardserverinstanz auf dem lokalen Computer und führt die Reporting Services-Oberflächenkonfigurationsrichtlinie aus.

Parameter

-AdHocPolicyEvaluationMode

Gibt den Adhoc-Richtlinienauswertungsmodus an. Gültige Werte sind:

  • Prüfen. Melden Sie den Compliancestatus des Zielsatzes mithilfe der Anmeldeinformationen Ihres Anmeldekontos und ohne Neukonfiguration von Objekten.
  • CheckSqlScriptAsProxy. Führen Sie einen Prüfbericht mithilfe der Anmeldeinformationen des ##MS_PolicyTSQLExecutionLogin##-Proxykontos aus.
  • Konfigurieren. Konfigurieren Sie die Zielsatzobjekte neu, die nicht den Richtlinien entsprechen, und melden Sie den resultierenden Status. Mit diesem Cmdlet werden nur Eigenschaften neu konfiguriert, die festgelegt und deterministisch sind.
Typ:AdHocPolicyEvaluationMode
Zulässige Werte:Check, Configure, CheckSqlScriptAsProxy
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-OutputXml

Gibt an, dass dieses Cmdlet seinen Bericht im XML-Format mit dem Service Modeling Language Interchange Format (SML-IF) -Schema erzeugt.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Policy

Gibt eine oder mehrere zu bewertende Richtlinien an.

Richtlinien können in einer Instanz des SQL Server-Datenbankmoduls oder als exportierte XML-Dateien gespeichert werden.

Verwenden Sie für Richtlinien, die in einer Instanz des Datenbankmoduls gespeichert sind, einen Pfad, der auf dem Ordner "SQLSERVER:\SQLPolicy" basiert, um den Speicherort der Richtlinien 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 verwenden, die die Namen einer oder mehrerer zu bewertenden Richtlinien angibt.

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

Verwenden Sie für Richtlinien, die in einer Instanz des Datenbankmoduls 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. "Datenbank-Status.xml" oder "C:\MyPolicyFolder\Database Status.xml".

Dieser Parameter kann eine Reihe von FileInfo-Objekten verwenden, 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 Richtlinienobjekten verwenden, z. B. die Ausgabe von Get-ChildItem für einen SQLSERVER:\SQLPolicy-Pfad ausgeführt werden.

Typ:PSObject
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-ProgressAction

Bestimmt, wie PowerShell auf Statusaktualisierungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. auf die Statusanzeigen, die vom Cmdlet Write-Progress generiert werden. Das Cmdlet Write-Progress erstellt Statusanzeigen, die den Status eines Befehls anzeigen.

Typ:ActionPreference
Aliase:proga
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-TargetExpression

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

Die Abfragen werden als Zeichenfolge angegeben, die Knoten enthält, die durch das Zeichen "/" getrennt sind.

Jeder Knoten befindet sich im Format ObjectType[Filter].

ObjectType ist eines der Objekte im SQL Server Management Objects (SMO)-Objektmodell, und Filter ist ein Ausdruck, der nach bestimmten Objekten in diesem Knoten filtert. Die Knoten müssen der Hierarchie der SMO-Objekte folgen. Der folgende Abfrageausdruck gibt beispielsweise die AdventureWorks-Beispieldatenbank zurück:

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

Wenn TargetExpression angegeben ist, geben Sie "TargetObject" nicht an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-TargetObjects

Gibt den Satz von SQL Server-Objekten an, für die die Richtlinie ausgewertet wird. Um eine Verbindung mit einer Instanz von SQL Server Analysis Services herzustellen, geben Sie ein Microsoft.AnalysisServices.Server-Objekt für TargetObject an.

Wenn TargetObject angegeben ist, geben Sie "TargetExpression" nicht an.

Typ:PSObject[]
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-TargetServerName

Gibt die Instanz des Datenbankmoduls an, das den Zielsatz enthält.

Sie können eine Variable angeben, die ein Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection-Objekt enthält.

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. die mit System.Data.SqlClient.SqlConnectionStringBuilder oder microsoft.Data.SqlClient.SqlConnectionStringBuilder erstellt wurden.

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

Typ:PSObject
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

System.Management.Automation.PSObject