Invoke-PolicyEvaluation

하나 이상의 SQL Server 정책 기반 관리 정책 평가를 호출합니다.

Syntax

Invoke-PolicyEvaluation
      [-Policy] <PSObject>
      [-AdHocPolicyEvaluationMode <AdHocPolicyEvaluationMode>]
      -TargetServerName <PSObject>
      [-TargetExpression <String>]
      [-OutputXml]
      [<CommonParameters>]
Invoke-PolicyEvaluation
      [-Policy] <PSObject>
      [-AdHocPolicyEvaluationMode <AdHocPolicyEvaluationMode>]
      -TargetObjects <PSObject[]>
      [-OutputXml]
      [<CommonParameters>]

Description

Invoke-PolicyEvaluation cmdlet은 대상 집합에 명명된 SQL Server 개체 집합에 대해 하나 이상의 정책 기반 관리 정책을 평가합니다.

이러한 정책은 데이터베이스 이름 또는 데이터 정렬에 대한 사이트 표준 구성과 같이 SQL Server 개체와 관련된 다양한 속성에 허용되는 값을 지정합니다.

이 cmdlet은 검사 모드에서 실행되면 대상 집합에 있는 개체의 현재 속성이 정책 정의의 규칙을 준수하는지 여부를 보고합니다.

속성이 정책을 준수하지 않는 경우 대상 집합의 개체가 재구성되지 않습니다.

구성 모드에서 이 cmdlet은 정책 정의를 준수하지 않는 대상 집합의 개체를 다시 구성합니다.

Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.

예제

예제 1: 컴퓨터의 기본 instance 대한 정책 평가

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"

이 명령은 지정된 컴퓨터의 기본 instance 대한 정책을 평가합니다. 정책은 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 어셈블리의 instance 로드합니다.

세 번째 명령은 Microsoft.AnalysisServices 개체를 만듭니다.

네 번째 명령은 새 AnalysisServices 개체를 사용하여 로컬 컴퓨터의 기본 서버 instance 대한 연결을 엽니다.

다섯 번째 명령은 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: 보고 서비스 노출 영역 구성 정책 평가

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 어셈블리를 로드하고, 로컬 컴퓨터의 기본 서버 instance 대한 연결을 만들고, 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 데이터베이스 엔진의 instance 또는 내보낸 XML 파일로 저장할 수 있습니다.

데이터베이스 엔진의 instance 저장된 정책의 경우 SQLSERVER:\SQLPolicy 폴더를 기반으로 하는 경로를 사용하여 정책의 위치를 지정합니다.

XML 파일로 저장되는 정책의 경우 파일 시스템 경로를 사용하여 정책의 위치를 지정합니다.

이 매개 변수는 평가할 하나 이상의 정책 이름을 지정하는 문자열을 사용할 수 있습니다.

문자열에 파일 또는 정책 이름만 지정된 경우 이 cmdlet은 현재 경로를 사용합니다.

데이터베이스 엔진의 instance 저장된 정책의 경우 "데이터베이스 상태" 또는 "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies\Database Status"와 같은 정책 이름을 사용합니다. XML 파일로 내보내는 정책의 경우 파일 이름(예: "데이터베이스 Status.xml" 또는 "C:\MyPolicyFolder\Database Status.xml")을 사용합니다.

이 매개 변수는 내보낸 XML 정책이 포함된 폴더에 대해 실행되는 Get-ChildItem 출력과 같은 FileInfo 개체 집합을 사용할 수 있습니다.

이 매개 변수는 SQLSERVER:\SQLPolicy 경로에 대해 실행되는 Get-ChildItem 출력과 같은 정책 개체 집합을 사용할 수도 있습니다.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TargetExpression

대상 집합을 정의하는 개체 목록을 반환하는 쿼리를 지정합니다.

쿼리는 '/' 문자로 구분되는 노드가 있는 문자열로 지정됩니다.

각 노드의 형식은 ObjectType[Filter]입니다.

ObjectType은 SQL SMO(SQL Server 관리 개체) 개체 모델의 개체 중 하나이며, 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 분석 서비스의 instance 연결하려면 TargetObject에 대해 Microsoft.AnalysisServices.Server 개체를 지정합니다.

TargetObject가 지정된 경우 TargetExpression을 지정하지 마세요.

Type:PSObject[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-TargetServerName

대상 집합이 포함된 데이터베이스 엔진의 instance 지정합니다.

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 인증을 사용하여 연결합니다.

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

입력

System.Management.Automation.PSObject