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

说明

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 仅重新配置可设置和确定的属性。
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 将使用当前路径。

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

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

此参数还可以采用一组 Policy 对象,例如Get-ChildItem针对 SQLSERVER:\SQLPolicy 路径运行的输出。

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 对象的变量。

还可以指定一个字符串,该字符串符合模块) 的 System.Data.SqlClient.SqlConnection 类的 ConnectionString 属性 (v21 或 .Net 中模块) 的 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