共用方式為


Invoke-PolicyEvaluation

叫用一或多個 SQL Server 以原則為基礎的管理原則評估。

語法

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 會重新設定目標集中不符合原則定義的任何物件。

範例

範例 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 檔案讀取兩個原則,然後使用管線運算符將它們傳遞至 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 原則存放區。 第二個命令會使用 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\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 檔案中的原則規避。 第二個命令會使用 New-Object 來建立 SqlStoreConnection 物件。 第三個命令會根據 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

第一個命令會設定目前的資料夾位置。 第二個命令會載入 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
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 檔案的原則,請使用檔名,例如 “Database Status.xml” 或 “C:\MyPolicyFolder\Database Status.xml”。

此參數可以採用一組 FileInfo 物件,例如針對包含匯出 XML 原則的資料夾執行的 Get-ChildItem 輸出。 此參數也可以採用一組 Policy 物件,例如針對 SQLSERVER:\SQLPolicy 路徑執行的 Get-ChildItem 輸出。

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

-TargetExpression

指定會傳回定義目標集之物件的清單的查詢。 這些查詢會指定為節點以 '/' 字元分隔的字串。 每個節點的格式都是 ObjectType[Filter]。

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

如果指定 TargetExpression ,請勿指定 TargetObject

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

-TargetObjects

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

如果指定 TargetObject ,請勿指定 TargetExpression

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

-TargetServerName

指定包含目標集的資料庫引擎實例。 您可以指定包含 Microsoft.SqlServer.Management.Sfc.Sdk.SQLStoreConnection 對象的變數。 您也可以指定符合 System.Data.SqlClient.SQLConnection 類別之 ConnectionString 屬性中使用的格式的字串。 這些包含字串,例如使用 System.Data.SqlClient.SqlConnectionStringBuilder 類別所建立的字串。 根據預設,此 Cmdlet 會使用 Windows 驗證進行連線。

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