Invoke-PolicyEvaluation

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

構文

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

説明

Invoke-PolicyEvaluation コマンドレットは、1 つ以上のポリシー ベースの管理ポリシーを、ターゲット セットで指定された一連の SQL Server オブジェクトに対して評価します。

ポリシーでは、データベース名や照合順序のサイト標準の確立など、SQL Server オブジェクトに関連付けられているさまざまなプロパティに使用できる値を指定します。

このコマンドレットをチェック モードで実行すると、ターゲット セット内のオブジェクトの現在のプロパティがポリシー定義の規則に準拠しているかどうかを報告します。

プロパティがポリシーに準拠していない場合、ターゲット セット内のオブジェクトは再構成されません。

構成モードでは、このコマンドレットは、ポリシー定義に準拠していないターゲット セット内のすべてのオブジェクトを再構成します。

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

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

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"

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

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

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"

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

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

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

このコマンドは、サービス モデリング言語交換形式 (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\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

最初のコマンドは、現在の場所を、XML ファイル内のポリシー回避を含むローカル フォルダーに設定します。

2 番目のコマンドでは、New-Object を使用して SqlStoreConnection オブジェクトを作成します。

3 番目のコマンドは、SQLStoreConnection オブジェクトによって定義されたサーバーに対して XML ファイルからポリシーを評価します。

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

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

最初のコマンドは、現在のフォルダーの場所を設定します。

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## プロキシ アカウントの資格情報を使用して、チェック レポートを実行します。
  • 構成。 ポリシーに準拠していないターゲット セット オブジェクトを再構成し、結果の状態を報告します。 このコマンドレットは、設定可能で確定的なプロパティのみを再構成します。
型:AdHocPolicyEvaluationMode
指定可能な値:Check, Configure, CheckSqlScriptAsProxy
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-OutputXml

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Policy

評価する 1 つ以上のポリシーを指定します。

ポリシーは、SQL Server データベース エンジンのインスタンスまたはエクスポートされた XML ファイルとして格納できます。

データベース エンジンのインスタンスに格納されているポリシーの場合は、SQLSERVER:\SQLPolicy フォルダーに基づくパスを使用して、ポリシーの場所を指定します。

XML ファイルとして格納されるポリシーの場合は、ファイル システム パスを使用してポリシーの場所を指定します。

このパラメーターは、評価する 1 つ以上のポリシーの名前を指定する文字列を受け取ることができます。

文字列にファイル名またはポリシー名のみが指定されている場合、このコマンドレットは現在のパスを使用します。

データベース エンジンのインスタンスに格納されているポリシーの場合は、"データベースの状態" や "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status" などのポリシー名を使用します。XML ファイルとしてエクスポートされるポリシーの場合は、ファイルの名前 ("Database Status.xml" や "C:\MyPolicyFolder\Database Status.xml." など) を使用します。

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

このパラメーターは、SQLSERVER:\SQLPolicy パスに対して実行 Get-ChildItem の出力など、一連の Policy オブジェクトを受け取ることもできます。

型:PSObject
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-ProgressAction

スクリプト、コマンドレット、またはプロバイダーによって生成された進行状況の更新 (Write-Progress コマンドレットによって生成された進行状況バーなど) に対する PowerShell の応答方法を決定します。 Write-Progress コマンドレットは、コマンドの状態を示す進行状況バーを作成します。

型:ActionPreference
Aliases:proga
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-TargetExpression

ターゲット セットを定義するオブジェクトの一覧を返すクエリを指定します。

クエリは、'/' 文字で区切られたノードを含む文字列として指定されます。

各ノードの形式は ObjectType[Filter]です。

ObjectType は SQL Server 管理オブジェクト (SMO) オブジェクト モデルのオブジェクトの 1 つであり、Filter は、そのノードの特定のオブジェクトをフィルター処理する式です。 ノードは、SMO オブジェクトの階層に従う必要があります。 たとえば、次のクエリ式は AdventureWorks サンプル データベースを返します。

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

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

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-TargetObjects

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

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

型:PSObject[]
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-TargetServerName

ターゲット セットを含むデータベース エンジンのインスタンスを指定します。

Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection オブジェクトを含む変数を指定できます。

.Net の System.Data.SqlClient.SqlConnection クラス (モジュールの v21) または Microsoft.Data.SqlClient.SqlConnection クラス (モジュールの v22 以降) の ConnectionString プロパティで使用される形式に準拠する文字列を指定することもできます。

これには、System.Data.SqlClient.SqlConnectionStringBuilder または Microsoft.Data.SqlClient.SqlConnectionStringBuilder を使用して作成された文字列などが含まれます。

既定では、このコマンドレットは Windows 認証を使用して接続します。

型:PSObject
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

System.Management.Automation.PSObject