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