Invoke-PolicyEvaluation

ポリシー ベースの管理ポリシー評価SQL Server 1 つ以上を呼び出します。

構文

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

説明

Invoke-PolicyEvaluation コマンドレットは、1 つ以上のポリシー ベースの管理ポリシーを、ターゲット セット内の という名前のSQL Server オブジェクトのセットに対して評価します。 ポリシーは、データベース名または照合順序についてサイトの標準を確立するなど、SQL Server オブジェクトに関連付けられているさまざまなプロパティに許容値を指定します。 このコマンドレットをチェック モードで実行すると、ターゲット セット内のオブジェクトの現在のプロパティがポリシー定義のルールに準拠しているかどうかを報告します。 対象セット内のオブジェクトは、そのプロパティがポリシーに準拠していない場合でも再構成されません。 構成モードでは、このコマンドレットは、ポリシー定義に準拠していないターゲット セット内のすべてのオブジェクトを再構成します。

例 1: コンピューターの既定のインスタンスでポリシーを評価する

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"
PS C:\> Invoke-PolicyEvaluation -Policy "Trustworthy Database.xml" -TargetServer "MYCOMPUTER"

このコマンドは、指定されたコンピューターの既定のインスタンスでポリシーを評価します。 ポリシーは XML ファイルから読み取られ、接続は Windows 認証を使用して認証されます。

例 2: XML ファイルからポリシーを評価する

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"
PS C:\> Get-ChildItem "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"

このコマンドは、フォルダー内の XML ファイルから 2 つのポリシーを読み取り、パイプライン演算子を使用して Invoke-PolicyEvaluation に渡します。

例 3: ポリシーを評価し、SML-IF スキーマに従って出力を書式設定する

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"
PS C:\> Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReportFolder\MyReport.xml

このコマンドは、ポリシーを評価し、サービス モデリング言語交換形式 (SML-IF) スキーマを使用して出力を書式設定します。 出力はファイルにリダイレクトされます。

例 4: フィルター処理された一連のポリシーを評価する

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'

最初のコマンドは、現在のパスをSQL Serverポリシー ストアに設定します。 2 番目のコマンドでは 、Get-ChildItem を 使用してすべてのポリシーを読み取り、 Where-Object を使用して、PolicyCategory プロパティが "Microsoft ベスト プラクティス: メンテナンス" に設定されているポリシーの一覧をフィルター処理します。 出力は、パイプライン演算子を使用して Invoke-PolicyEvaluation に送信されます。

例 5: SqlStoreConnection オブジェクトを使用して XML ファイルからポリシーを評価する

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\130\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

最初のコマンドは、XML ファイル内のポリシー回避を含むローカル フォルダーに現在の場所を設定します。 2 番目のコマンドでは、New-Object を使用して SqlStoreConnection オブジェクトを作成します。 3 番目のコマンドは、 SQLStoreConnection オブジェクトによって定義されたサーバーに対して XML ファイルからポリシーを評価します。

例 6: 手動で読み込まれたアセンブリを使用してポリシーを評価する

PS C:\> Set-Location "C:\Program Files (x86)\Microsoft SQL Server\130\ 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

最初のコマンドは、現在のフォルダーの場所を設定します。 2 番目のコマンドは、SQL Server Analysis Services アセンブリのインスタンスを読み込みます。 3 番目のコマンドは、 Microsoft.AnalysisServices オブジェクトを 作成します。 4 番目のコマンドでは、新しい AnalysisServices オブジェクトを使用して、ローカル コンピューター上の既定のサーバー インスタンスへの接続を開きます。 5 番目のコマンドは、Analysis Services のサーフェス領域構成ポリシーを評価します。

例 7: フィルター処理されたポリシーのセットを評価する

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

このコマンドでは、 TargetExpression パラメーターを使用して、AdventureWorks2014 サンプル データベースに対して評価されるデータベース状態ポリシーをフィルター処理し、評価を実行するクエリ式を指定します。

例 8: レポート サービスの領域構成ポリシーを評価する

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

このコマンドは、SQL Server Reporting Services アセンブリを読み込み、ローカル コンピューター上の既定のサーバー インスタンスへの接続を作成し、Reporting Servicesのサーフェス領域構成ポリシーを実行します。

パラメーター

-AdHocPolicyEvaluationMode

アドホック ポリシー評価モードを指定します。 有効な値は次のとおりです。

  • 確認します。 ログイン アカウントの資格情報を使用し、オブジェクトを再構成せずに、ターゲット セットのコンプライアンス状態を報告します。
  • CheckSqlScriptAsProxy。 ##MS_PolicyTSQLExecutionLogin## プロキシ アカウントの資格情報を使用して、チェック レポートを実行します。
  • [構成] : ポリシーに準拠していないターゲット セット オブジェクトを再構成し、結果の状態を報告します。 このコマンドレットは、設定可能で確定的なプロパティのみを再構成します。
Type:AdHocPolicyEvaluationMode
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputXml

このコマンドレットは、サービス モデリング言語交換形式 (SML-IF) スキーマを使用して XML 形式でレポートを生成することを示します。

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

-Policy

評価する 1 つ以上のポリシーを指定します。 ポリシーは、SQL Server データベース エンジンのインスタンスに格納することも、エクスポートされた XML ファイルとして格納することもできます。 データベース エンジンのインスタンスに格納されているポリシーの場合は、SQLSERVER:\SQLPolicy フォルダーに基づくパスを使用して、ポリシーの場所を指定します。 XML ファイルとして格納されているポリシーの場合、ファイル システム パスを使用してポリシーをその場所に指定します。

このパラメーターは、評価する 1 つ以上のポリシーの名前を指定する文字列を受け取ることができます。 文字列にファイル名またはポリシー名のみが指定されている場合、このコマンドレットは現在のパスを使用します。 データベース エンジンのインスタンスに格納されているポリシーの場合は、"データベースの状態" や "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status" などのポリシー名を使用します。XML ファイルとしてエクスポートされるポリシーの場合は、"データベース Status.xml" や "C:\MyPolicyFolder\Database Status.xml" などのファイルの名前を使用します。

このパラメーターは、エクスポートされた XML ポリシーを含むフォルダーに対して実行される Get-ChildItem の出力など、一連の FileInfo オブジェクトを受け取ることができます。 このパラメーターは、SQLSERVER:\SQLPolicy パスに対して実行される Get-ChildItem の出力など、一連の Policy オブジェクトを受け取ることもできます。

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

-TargetExpression

ターゲット セットを定義するオブジェクトの一覧を返すクエリを指定します。 クエリは、ノードを含む文字列として指定されます。ノードは "/" 文字で区切られます。 各ノードの形式は ObjectType[Filter]です。

ObjectType は SQL Server 管理オブジェクト (SMO) のオブジェクト モデル内のオブジェクトの 1 つで、Filter はそのノードで特定オブジェクトに対してフィルター処理を行う式です。 ノードは SMO オブジェクトの階層に従う必要あります。 たとえば、次のクエリ式は AdventureWorks サンプル データベースを返します。 Server\[@Name='MyComputer'\]/Database\[@Name='AdventureWorks'\]

TargetExpression を指定する場合は、TargetObject を指定しないでください。

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

-TargetObjects

ポリシーの評価対象となるSQL Server オブジェクトのセットを指定します。 SQL Server Analysis Services のインスタンスに接続するには、TargetObjectMicrosoft.AnalysisServices.Server オブジェクトを指定します。

TargetObject が指定されている場合は、TargetExpression を指定しないでください。

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

-TargetServerName

ターゲット セットを含むデータベース エンジンのインスタンスを指定します。 Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection オブジェクトを含む変数を指定できます。 System.Data.SqlClient.SQLConnection クラスの ConnectionString プロパティで使用される形式に準拠する文字列を指定することもできます。 これには、 System.Data.SqlClient.SqlConnectionStringBuilder クラスを使用して作成された文字列などが含まれます。 既定では、このコマンドレットは Windows 認証を使用して接続します。

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