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