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

说明

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## 代理帐户凭据运行检查报告。
  • 配置。 重新配置不符合策略的目标集对象并报告结果状态。 此 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 使用当前路径。

对于存储在数据库引擎实例中的策略,请使用策略名称,例如“数据库状态”或“SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status”。对于导出为 XML 文件的策略,请使用文件的名称,例如“数据库 Status.xml”或“C:\MyPolicyFolder\Database Status.xml”。

此参数可以采用一组 FileInfo 对象,例如针对包含导出的 XML 策略的文件夹运行的 Get-ChildItem 输出。

此参数还可以采用一组策略对象,例如针对 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 类 (v21)或模块的 Microsoft.Data.SqlClient.SqlConnection 类(v22+ 模块)的 ConnectionString 属性中使用的格式。

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

默认情况下,此 cmdlet 使用 Windows 身份验证进行连接。

类型:PSObject
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

输入

System.Management.Automation.PSObject