共用方式為


Invoke-PolicyEvaluation

叫用一或多個 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>]

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最佳做法:維護」的原則清單。

輸出會使用管線運算符傳送至 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 只會重新設定可設定且具決定性的屬性。
類型:AdHocPolicyEvaluationMode
接受的值:Check, Configure, CheckSqlScriptAsProxy
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-OutputXml

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Policy

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

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

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

針對儲存為 XML 檔案的原則,請使用文件系統路徑來指定原則的位置。

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

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

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

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

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

類型:PSObject
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-ProgressAction

決定 PowerShell 如何回應腳本、Cmdlet 或提供者所產生的進度更新,例如 Write-Progress Cmdlet 所產生的進度列。 Write-Progress Cmdlet 會建立顯示命令狀態的進度列。

類型:ActionPreference
別名:proga
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-TargetExpression

指定查詢,這個查詢會傳回定義目標集的物件清單。

查詢會指定為字串,此字串具有以 『/』 字元分隔的節點。

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

ObjectType 是 SQL Server 管理物件 (SMO) 物件模型中的其中一個物件,而 Filter 是篩選該節點上特定物件的表達式。 節點必須遵循 SMO 物件的階層。 例如,下列查詢表達式會傳回 AdventureWorks 範例資料庫:

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

如果指定 TargetExpression,請勿指定 TargetObject。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-TargetObjects

指定評估原則的一組 SQL Server 物件。 若要連線到 SQL Server Analysis Services 的實例,請為 TargetObject 指定 Microsoft.AnalysisServices.Server 物件。

如果指定 TargetObject,請勿指定 TargetExpression。

類型:PSObject[]
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-TargetServerName

指定包含目標集的資料庫引擎實例。

您可以指定包含 Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection 對象的變數。

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

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

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

類型:PSObject
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

輸入

System.Management.Automation.PSObject