Invoke-PolicyEvaluation cmdletInvoke-PolicyEvaluation cmdlet

Invoke-PolicyEvaluation 은 SQL Server 개체의 대상 집합이 하나 이상의 정책 기반 관리 정책에 지정된 조건을 준수하는지 여부를 보고하는 SQL ServerSQL Server cmdlet입니다.Invoke-PolicyEvaluation is a SQL ServerSQL Server cmdlet that reports whether a target set of SQL Server objects complies with the conditions specified in one or more Policy-Based Management policies.

Invoke-PolicyEvaluation 사용Using Invoke-PolicyEvaluation

Invoke-PolicyEvaluation 은 대상 집합이라는 SQL Server 개체 집합에 대해 하나 이상의 정책을 평가합니다.Invoke-PolicyEvaluation evaluates one or more policies against a set of SQL Server objects called the target set. 대상 개체 집합은 대상 서버에서 가져옵니다.The set of target objects comes from a target server. 각 정책은 대상 개체의 허용 상태인 조건을 정의합니다.Each policy defines conditions, which are the allowed states for the target objects. 예를 들어 Trustworthy Database 정책은 TRUSTWORTHY 데이터베이스 속성을 OFF로 설정해야 한다고 나타냅니다.For example, the Trustworthy Database policy states that the TRUSTWORTHY database property must be set to OFF.

-AdHocPolicyEvaluationMode 매개 변수는 수행할 동작을 지정합니다.The -AdHocPolicyEvaluationMode parameter specifies the actions taken:

확인Check
현재 로그인의 자격 증명을 사용하여 대상 개체의 준수 상태를 보고합니다.Report the compliance status of the target objects using the credentials of your current login. 개체를 다시 구성하지 않습니다.Do no reconfigure any objects. 이 값은 기본 설정입니다.This is the default setting.

CheckSqlScriptAsProxyCheckSqlScriptAsProxy
##MS_PolicyTSQLExecutionLogin## 프록시 로그인의 자격 증명을 사용하여 대상 개체의 준수 상태를 보고합니다.Report the compliance status of the target objects using the credentials of the ##MS_PolicyTSQLExecutionLogin## proxy login. 개체를 다시 구성하지 않습니다.Do no reconfigure any objects.

구성Configure
현재 로그인의 자격 증명을 사용하여 대상 개체의 준수 상태를 보고합니다.Report the compliance status of the target objects using the credentials of your current login. 정책을 준수하지 않는 설정할 수 있는 모든 결정적 옵션을 다시 구성합니다.Reconfigure any settable and deterministic options that are not in compliance with the policies.

정책 지정Specifying Polices

정책을 지정하는 방법은 정책 저장 위치에 따라 달라집니다.How you specify a policy depends on where the policy is stored. 정책은 다음 두 가지 형식으로 저장될 수 있습니다.Policies can be stored in two formats:

  • 정책은 데이터베이스 엔진 인스턴스와 같은 정책 저장소에 저장되는 개체일 수 있습니다.They can be objects stored in a policy store, such as an instance of the Database Engine. SQLSERVER:\SQLPolicy 폴더를 사용하여 정책 저장소에서 정책 위치를 지정할 수 있습니다.You can use the SQLSERVER:\SQLPolicy folder to specify the location of policies in a policy store. Where-Object를 사용하여 정책 범주에 대해 필터링하거나 Get-Item을 사용하여 정책 이름에 대해 필터링하는 경우와 같이 Windows PowerShell cmdlet을 사용하여 해당 속성을 기반으로 입력 정책을 필터링할 수 있습니다.You can use Windows PowerShell cmdlets to filter the input polices based on their properties, such as using Where-Object to filter on the policy category or Get-Item to filter on policy name.

  • 정책을 XML 파일로 내보낼 수 있습니다.They can be exported as XML files. D:와 같은 파일 시스템 드라이브를 사용하여 XML 파일의 위치를 지정할 수 있습니다.You can use a file system drive, such as D:, to specify the location of the XML files. Where-Object와 같은 Windows PowerShell cmdlet을 사용하여 파일 이름과 같은 해당 파일 속성을 기반으로 정책을 필터링할 수 있습니다.You can use Windows PowerShell cmdlets such as Where-Object to filter the policies on their file properties, such as file name.

    정책이 정책 저장소에 저장되는 경우 평가할 정책을 가리키는 PSObjects 집합을 전달해야 합니다.If the policies are stored in a policy store, you must pass in a set of PSObjects pointing to the policies to be evaluated. 이는 일반적으로 Get-Item과 같은 cmdlet의 출력을 Invoke-PolicyEvaluation으로 파이프하여 수행되며 -Policy 매개 변수를 지정할 필요가 없습니다.This is typically done by piping the output of a cmdlet such as Get-Item to Invoke-PolicyEvaluation, and does not require that you specify the -Policy parameter. 예를 들어 Microsoft Best Practices 정책을 데이터베이스 엔진 인스턴스로 가져온 경우 이 명령은 데이터베이스 상태 정책을 평가합니다.For example, if you have imported the Microsoft Best Practices policies into your instance of the database engine, this command evaluates the Database Status policy:

sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"  
Get-Item "Database Status" | Invoke-PolicyEvaluation -TargetServerName "MYCOMPUTER"  

이 예에서는 Where-Object를 사용하여 정책 저장소의 여러 정책을 해당 PolicyCategory 속성을 기반으로 필터링하는 방법을 보여 줍니다.This example shows using Where-Object to filter multiple policies from a policy store based on their PolicyCategory property. Where-Object 의 파이프된 출력에서 가져온 개체가 Invoke-PolicyEvaluation에서 사용됩니다.The objects from the piped output of Where-Object is consumed by Invoke-PolicyEvaluation.

sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"  
gci | Where-Object {$_.PolicyCategory -eq "Microsoft Best Practices: Maintenance"} | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"  

정책이 XML 파일로 저장되는 경우 -Policy 매개 변수를 사용하여 각 정책의 경로와 이름을 모두 제공해야 합니다.If the policies are stored as XML files, you must use the -Policy parameter to supply both the path and name for each policy. -Policy 매개 변수에 경로를 지정하지 않으면 Invoke-PolicyEvaulation 에서 sqlps 경로의 현재 설정을 사용합니다.If you do not specify a path in the -Policy parameter, Invoke-PolicyEvaulation uses the current setting of the sqlps path. 예를 들어 이 명령은 SQL Server와 함께 설치된 Microsoft Best Practice 정책 중 하나를 로그인의 기본 데이터베이스에 대해 평가합니다.For example, this command evaluates one of the Microsoft Best Practice policies installed with SQL Server against the default database for your login:

Invoke-PolicyEvaluation -Policy "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033\Database Status.xml" -TargetServerName "MYCOMPUTER"  

이 명령은 동일한 작업을 수행하며 현재 sqlps 경로만 사용하여 정책 XML 파일의 위치를 설정합니다.This command does the same thing, only it uses the current sqlps path to establish the location of the policy XML file:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MYCOMPUTER"  

이 예에서는 Get-ChildItem cmdlet을 사용하여 여러 정책 XML 파일을 검색하고 개체를 Invoke-PolicyEvaluation으로 파이프하는 방법을 보여 줍니다.This example shows using the Get-ChildItem cmdlet to retrieve multiple policy XML files and pipe the objects into Invoke-PolicyEvaluation:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"  
gci "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"  

대상 집합 지정Specifying the Target Set

다음 3개의 매개 변수를 사용하여 대상 개체 집합을 지정할 수 있습니다.Use three parameters to specify the set of target objects:

  • -TargetServerName 은 대상 개체를 포함하는 SQL Server 인스턴스를 지정합니다.-TargetServerName specifies the instance of SQL Server containing the target objects. 정보를 SqlConnection 클래스의 ConnectionString 속성에 대해 정의된 형식을 사용하는 문자열에 지정할 수 있습니다.You can specify the information in a string that uses the format defined for the ConnectionString property of the SqlConnection class. SqlConnectionStringBuilder 클래스를 사용하여 올바른 형식의 연결 문자열을 빌드할 수 있습니다.You can use the SqlConnectionStringBuilder class to build a correctly formatted connection string. SqlStoreConnection 개체를 만들고 -TargetServer에 전달할 수도 있습니다.You can also create a SqlStoreConnection object and pass it to -TargetServer. 서버 이름만 포함하는 문자열을 제공하는 경우 Invoke-PolicyEvaluation 에서는 Windows 인증을 사용하여 서버에 연결합니다.If you supply a string that has only the name of the server, Invoke-PolicyEvaluation uses Windows Authentication to connect to the server.

  • -TargetObjects 는 대상 집합의 SQL Server 개체를 나타내는 개체 배열 또는 개체를 가져옵니다.-TargetObjects takes an object or array of objects that represent the SQL Server objects in the target set. 예를 들어 Database 클래스 개체의 배열을 만들어 -TargetObjects에 전달할 수 있습니다.For example, you could create an array of Database class objects to pass in to -TargetObjects.

  • -TargetExpressions 는 대상 집합의 개체를 지정하는 쿼리 식을 포함하는 문자열을 가져옵니다.-TargetExpressions takes a string containing a query expression that specifies the objects in the target set. 쿼리 식은 '/' 문자로 구분된 노드 형식입니다.The query expression is in the form of nodes separated by the '/' character. 각 노드의 형식은 ObjectType[Filter]입니다.Each node is in the form ObjectType[Filter]. 개체 유형은 SMO(SQL Server 관리 개체) 개체 계층의 개체 중 하나입니다.Object type is one of the objects in a SQL Server Management Object (SMO) object hieararchy. 필터는 해당 노드에 있는 개체에 대해 필터링하는 식입니다.Filter is an expression that filters for objects at that node. 자세한 내용은 Query Expressions and Uniform Resource Names을(를) 참조하세요.For more information, see Query Expressions and Uniform Resource Names.

    -TargetObjects 또는 -TargetExpression중에서 하나만 지정합니다.Specify either -TargetObjects or -TargetExpression, not both.

    이 예에서는 Sfc.SqlStoreConnection 개체를 사용하여 대상 서버를 지정합니다.This example uses an Sfc.SqlStoreConnection object to specify the target server:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"  
$conn = New-Object Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection("server='MYCOMPUTER';Trusted_Connection=True")  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName $conn  

이 예에서는 -TargetExpression 을 사용하여 평가할 특정 데이터베이스를 식별합니다.This example uses -TargetExpression to identify the specific database to evaluate:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\DatabaseEngine\1033"  
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MyComputer" -TargetExpression "Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']"  

Analysis Services 정책 평가Evaluating Analysis Services Policies

Analysis ServicesAnalysis Services인스턴스에 대해 정책을 평가하려면 어셈블리를 로드하여 PowerShell에 등록하고, Analysis Services 연결 개체를 사용하여 변수를 만들고, 변수를 -TargetObject 매개 변수에 전달해야 합니다.To evaluate policies against an instance of Analysis ServicesAnalysis Services, you must load and register an assembly into PowerShell, create a variable with an Analysis Services connection object, and pass the variable to the -TargetObject parameter. 이 예에서는 Analysis ServicesAnalysis Services에 대한 최선의 구현 방법 노출 영역 구성 정책을 평가하는 방법을 보여 줍니다.This example shows evaluating the Best Practices surface area configuration policy for Analysis ServicesAnalysis Services:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\AnalysisServices\1033"  
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")  
$SSASsvr = new-object Microsoft.AnalysisServices.Server  
$SSASsvr.Connect("Data Source=Localhost")  
Invoke-PolicyEvaluation -Policy "Surface Area Configuration for Analysis Services Features.xml" -TargetObject $SSASsvr  

Reporting Services 정책 평가Evaluating Reporting Services Policies

Reporting ServicesReporting Services 정책을 평가하려면 어셈블리를 로드하여 PowerShell에 등록하고, Reporting ServicesReporting Services 연결 개체를 사용하여 변수를 만들고, 변수를 -TargetObject 매개 변수에 전달해야 합니다.To evaluate Reporting ServicesReporting Services policies, you must load and register an assembly into PowerShell, create a variable with a Reporting ServicesReporting Services connection object, and pass the variable to the -TargetObject parameter. 이 예에서는 Reporting ServicesReporting Services에 대한 최선의 구현 방법 노출 영역 구성 정책을 평가하는 방법을 보여 줍니다.This example shows evaluating the Best Practices surface area configuration policy for Reporting ServicesReporting Services:

sl "C:\Program Files\Microsoft SQL Server\130\Tools\Policies\ReportingServices\1033"  
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Dmf.Adapters")  
$SSRSsvr = new-object Microsoft.SqlServer.Management.Adapters.RSContainer('MyComputer')  
Invoke-PolicyEvaluation -Policy "Surface Area Configuration for Reporting Services 2008 Features.xml" -TargetObject $SSRSsvr  

출력의 형식 지정Formatting Output

기본적으로 Invoke-PolicyEvaluation 출력은 사람이 읽을 수 있는 형식의 간략한 보고서로 명령 프롬프트 창에 표시됩니다.By default, the output of Invoke-PolicyEvaluation is displayed in the command prompt window as a concise report in human-readable format. -OutputXML 매개 변수를 사용하여 cmdlet에서 대신 XML 파일 형식의 세부 보고서를 생성하도록 지정할 수 있습니다.You can use the -OutputXML parameter to specify that the cmdlet instead produce a detailed report as an XML file. Invoke-PolicyEvaluation 은 SML-IF 판독기에서 파일을 읽을 수 있도록 SML-IF(Systems Modeling Language Interchange Format) 스키마를 사용합니다.Invoke-PolicyEvaluation uses the Systems Modeling Language Interchange Format (SML-IF) schema so the file can be read by SML-IF readers.

sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"  
Invoke-PolicyEvaluation -Policy "Datbase Status" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReports\DatabaseStatusReport.xml  

참고 항목See Also

데이터베이스 엔진 cmdlet 사용Use the Database Engine cmdlets