Invoke-PolicyEvaluation

叫用一或多個SQL Server原則式管理原則評估。

Syntax

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

Description

Invoke-PolicyEvaluation Cmdlet 會針對目標集中名為 的一組SQL Server物件,評估一或多個以原則為基礎的管理原則。

這些原則會指定與 SQL Server 物件相關聯之各種屬性的允許值,例如建立資料庫名稱或定序的網站標準。

當此 Cmdlet 以檢查模式執行時,它會報告目標集中物件的目前屬性是否符合原則定義中的規則。

如果目標集中物件的屬性不符合原則,就不會重新設定這些物件。

在設定模式中,此 Cmdlet 會重新設定目標集中不符合原則定義的任何物件。

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 檔案讀取兩個原則,然後使用管線運算子將它們傳遞至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原則存放區。

第二個命令會使用 Get-ChildItem 來讀取所有原則,然後使用 Where-Object 來篩選其 PolicyCategory 屬性設定為 「Microsoft Best Practices: Maintenance」 的原則清單。

輸出會使用管線運算子傳送至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 檔案中的原則規避。

第二個命令會使用 New-Object 來建立 SqlStoreConnection 物件。

第三個命令會根據 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

第一個命令會設定目前的資料夾位置。

第二個命令會載入SQL Server Analysis Services元件的實例。

第三個命令會建立 Microsoft.AnalysisServices 物件。

第四個命令會使用新的 AnalysisServices 物件,開啟與本機電腦上預設伺服器實例的連線。

第五個命令會評估 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:評估 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

此命令會載入SQL Server Reporting Services元件、建立與本機電腦上預設伺服器實例的連線,並執行Reporting Services介面區設定原則。

參數

-AdHocPolicyEvaluationMode

指定臨機操作原則評估模式。 有效值為:

  • 檢查。 使用登入帳戶的認證報告目標集的合規性狀態,而不需重新設定任何物件。
  • CheckSqlScriptAsProxy。 使用 ##MS_PolicyTSQLExecutionLogin## Proxy 帳號憑證來執行檢查報告。
  • 設定。 重新設定不符合原則的目標集物件,並報告結果狀態。 此 Cmdlet 只會重新設定可設定且具決定性的屬性。
Type:AdHocPolicyEvaluationMode
Accepted values:Check, Configure, CheckSqlScriptAsProxy
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputXml

指出此 Cmdlet 會使用服務模型語言交換格式 (SML-IF) 架構,以 XML 格式產生其報表。

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

-Policy

指定要評估的一或多個原則。

原則可以儲存在SQL Server資料庫引擎的實例中,或儲存為匯出的 XML 檔案。

對於儲存在資料庫引擎實例中的原則,請使用以 SQLSERVER:\SQLPolicy 資料夾為基礎的路徑來指定原則的位置。

若為儲存成 XML 檔案的原則,請使用檔案系統路徑來指定原則的位置。

此參數可以採用字串,指定要評估之一或多個原則的名稱。

如果字串中只指定檔案或原則名稱,此 Cmdlet 會使用目前的路徑。

對於儲存在資料庫引擎實例中的原則,請使用原則名稱,例如 「Database Status」 或 「SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status」。針對匯出為 XML 檔案的原則,請使用檔案名,例如 「Database Status.xml」 或 「C:\MyPolicyFolder\Database Status.xml」。

此參數可以接受一組 FileInfo 物件,例如針對包含匯出 XML 原則的資料夾執行Get-ChildItem輸出。

此參數也可以採用一組原則物件,例如針對 SQLSERVER:\SQLPolicy 路徑執行的Get-ChildItem輸出。

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

-TargetExpression

指定傳回定義目標集之物件的清單的查詢。

這些查詢會指定為節點以 '/' 字元分隔的字串。

每個節點的格式都是 ObjectType[Filter]。

ObjectType 是 SQL Server 管理物件 (SMO) 物件模型的其中一個物件,而 Filter 是針對位於該節點之特定物件進行篩選的運算式。 這些節點必須遵循 SMO 物件的階層。 例如,下列查詢運算式會傳回 AdventureWorks 範例資料庫:

[@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 的實例,請指定 TargetObject 的 Microsoft.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 物件的變數。

您也可以指定字串,該字串符合 .Net 中模組) 之 System.Data.SqlClient.SqlConnection 類別之 ConnectionString 屬性中使用的格式, (v21 模組) 或 Microsoft.Data.SqlClient.SqlConnection 類別 (v22+ 中的模組。

其中包括使用 System.Data.SqlClient.SqlConnectionStringBuilder 或 Microsoft.Data.SqlClient.SqlConnectionStringBuilder 所建立的字串。

根據預設,此 Cmdlet 會使用 Windows 驗證進行連線。

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

輸入

System.Management.Automation.PSObject