Invoke-PolicyEvaluation 은 SQL Server 개체의 대상 집합이 하나 이상의 정책 기반 관리 정책에 지정된 조건을 준수하는지 여부를 보고하는 SQL Server cmdlet입니다.
Invoke-PolicyEvaluation 사용
Invoke-PolicyEvaluation 은 대상 집합이라는 SQL Server 개체 집합에 대해 하나 이상의 정책을 평가합니다. 대상 개체 집합은 대상 서버에서 가져옵니다. 각 정책은 대상 개체에 허용되는 상태인 조건을 정의합니다. 예를 들어 신뢰할 수 있는 데이터베이스 정책에는 TRUSTWORTHY 데이터베이스 속성을 OFF로 설정해야 한다고 명시됩니다.
-AdHocPolicyEvaluationMode 매개 변수는 수행된 작업을 지정합니다.
확인
현재 로그인의 자격 증명을 사용하여 대상 개체의 준수 상태를 보고합니다. 개체를 다시 구성하지 않습니다. 기본 설정입니다.
프록시로서의 SQL 스크립트 확인
##MS_PolicyTSQLExecutionLogin## 프록시 로그인의 자격 증명을 사용하여 대상 개체의 준수 상태를 보고합니다. 개체를 다시 구성하지 않습니다.
설정
현재 로그인의 자격 증명을 사용하여 대상 개체의 준수 상태를 보고합니다. 정책을 준수하지 않는 설정 가능한 결정적 옵션을 다시 구성합니다.
정책 설정
정책을 지정하는 방법은 정책이 저장되는 위치에 따라 달라집니다. 정책은 다음 두 가지 형식으로 저장할 수 있습니다.
데이터베이스 엔진의 인스턴스와 같이 정책 저장소에 저장된 개체일 수 있습니다. SQLSERVER:\SQLPolicy 폴더를 사용하여 정책 저장소에서 정책의 위치를 지정할 수 있습니다. Windows PowerShell cmdlet을 사용하여 Where-Object 사용하여 정책 범주를 필터링하거나 정책 이름을 필터링하는 Get-Item 같은 속성에 따라 입력 정책을 필터링할 수 있습니다.
XML 파일로 내보낼 수 있습니다. D:와 같은 파일 시스템 드라이브를 사용하여 XML 파일의 위치를 지정할 수 있습니다. Where-Object 같은 Windows PowerShell cmdlet을 사용하여 파일 이름과 같은 파일 속성에 대한 정책을 필터링할 수 있습니다.
정책이 정책 저장소에 저장되는 경우 평가할 정책을 가리키는 PSObjects 집합을 전달해야 합니다. 이 작업은 일반적으로 Get-Item 같은 cmdlet의 출력을 Invoke-PolicyEvaluation으로 파이핑하여 수행되며 -Policy 매개 변수를 지정할 필요가 없습니다. 예를 들어 Microsoft 모범 사례 정책을 데이터베이스 엔진 인스턴스로 가져온 경우 이 명령은 데이터베이스 상태 정책을 평가합니다.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
Get-Item "Database Status" | Invoke-PolicyEvaluation -TargetServerName "MYCOMPUTER"
이 예제에서는 Where-Object 사용하여 PolicyCategory 속성에 따라 정책 저장소에서 여러 정책을 필터링하는 방법을 보여줍니다. Where-Object의 파이프로 전달된 출력 개체는 Invoke-PolicyEvaluation에 의해 사용됩니다.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
gci | Where-Object {$_.PolicyCategory -eq "Microsoft Best Practices: Maintenance"} | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"
정책이 XML 파일로 저장되는 경우 -Policy 매개 변수를 사용하여 각 정책의 경로와 이름을 모두 제공해야 합니다. -Policy 매개 변수에 경로를 지정하지 않으면 Invoke-PolicyEvaulation은 sqlps 경로의 현재 설정을 사용합니다. 예를 들어 이 명령은 로그인에 대한 기본 데이터베이스에 대해 SQL Server와 함께 설치된 Microsoft 모범 사례 정책 중 하나를 평가합니다.
Invoke-PolicyEvaluation -Policy "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033\Database Status.xml" -TargetServerName "MYCOMPUTER"
이 명령은 동일한 작업을 수행하며, 현재 sqlps 경로만 사용하여 정책 XML 파일의 위치를 설정합니다.
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MYCOMPUTER"
이 예제에서는 Get-ChildItem cmdlet을 사용하여 여러 정책 XML 파일을 검색하고 개체를 Invoke-PolicyEvaluation으로 파이프하는 방법을 보여줍니다.
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
gci "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"
대상 집합 지정
세 개의 매개 변수를 사용하여 대상 개체 집합을 지정합니다.
-TargetServerName 은 대상 개체를 포함하는 SQL Server의 인스턴스를 지정합니다. 클래스의 ConnectionString 속성에 정의된 형식을 사용하는 문자열에서 SqlConnection 정보를 지정할 수 있습니다. 클래스를 사용하여 올바른 형식의 SqlConnectionStringBuilder 연결 문자열을 작성할 수 있습니다. 개체를 SqlStoreConnection 만들어 -TargetServer에 전달할 수도 있습니다. 서버 이름만 있는 문자열을 제공하는 경우 Invoke-PolicyEvaluation 은 Windows 인증을 사용하여 서버에 연결합니다.
-TargetObjects 는 대상 집합의 SQL Server 개체를 나타내는 개체 또는 개체의 배열을 사용합니다. 예를 들어 -TargetObjects에 전달할 클래스 개체의 Database 배열을 만들 수 있습니다.
-TargetExpressions 는 대상 집합의 개체를 지정하는 쿼리 식을 포함하는 문자열을 사용합니다. 쿼리 식은 '/' 문자로 구분된 노드 형식입니다. 각 노드는 ObjectType[Filter] 형식입니다. 개체 유형은 SMO(SQL Server Management Object) 개체 계층 구조의 개체 중 하나입니다. 필터는 해당 노드의 개체를 필터링하는 식입니다. 자세한 내용은 쿼리 식 및 균일한 리소스 이름을 참조하세요.
둘 다 아닌 -TargetObjects 또는 -TargetExpression을 지정합니다.
이 예제에서는 Sfc.SqlStoreConnection 개체를 사용하여 대상 서버를 지정합니다.
sl "C:\Program Files\Microsoft SQL Server\120\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 을 사용하여 평가할 특정 데이터베이스를 식별합니다.
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MyComputer" -TargetExpression "Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']"
Analysis Services 정책 평가
Analysis Services 인스턴스에 대한 정책을 평가하려면 어셈블리를 로드하고 PowerShell에 등록하고, Analysis Services 연결 개체를 사용하여 변수를 만들고, 변수를 -TargetObject 매개 변수에 전달해야 합니다. 이 예제에서는 Analysis Services에 대한 모범 사례 노출 영역 구성 정책을 평가하는 방법을 보여 줍니다.
sl "C:\Program Files\Microsoft SQL Server\120\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 정책을 평가하려면 어셈블리를 로드하고 PowerShell에 등록하고, Reporting Services 연결 개체를 사용하여 변수를 만들고, 변수를 -TargetObject 매개 변수에 전달해야 합니다. 이 예제에서는 Reporting Services에 대한 모범 사례 노출 영역 구성 정책을 평가하는 방법을 보여 줍니다.
sl "C:\Program Files\Microsoft SQL Server\120\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
출력 서식 지정
기본적으로 Invoke-PolicyEvaluation 의 출력은 명령 프롬프트 창에 사람이 읽을 수 있는 형식의 간결한 보고서로 표시됩니다. -OutputXML 매개 변수를 사용하여 cmdlet이 대신 자세한 보고서를 XML 파일로 생성하도록 지정할 수 있습니다. Invoke-PolicyEvaluation 은 SML-IF 판독기에서 파일을 읽을 수 있도록 시스템 모델링 언어 교환 형식(SML-IF) 스키마를 사용합니다.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
Invoke-PolicyEvaluation -Policy "Datbase Status" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReports\DatabaseStatusReport.xml