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