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>]
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: 컴퓨터의 기본 인스턴스에 대한 정책 평가
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 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-OutputXml
이 cmdlet은 서비스 모델링 언어 교환 형식(SML-IF) 스키마를 사용하여 XML 형식으로 보고서를 생성한다는 것을 나타냅니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | 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")을 사용합니다.
이 매개 변수는 내보낸 XML 정책을 포함하는 폴더에 대해 실행되는 Get-ChildItem 출력과 같은 FileInfo 개체 집합을 사용할 수 있습니다.
이 매개 변수는 SQLSERVER:\SQLPolicy 경로에 대한 Get-ChildItem 실행의 출력과 같은 정책 개체 집합을 사용할 수도 있습니다.
형식: | PSObject |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-ProgressAction
powerShell이 스크립트, cmdlet 또는 공급자(예: Write-Progress cmdlet에서 생성된 진행률 표시줄)에 의해 생성된 진행률 업데이트에 응답하는 방법을 결정합니다. Write-Progress cmdlet은 명령의 상태를 표시하는 진행률 표시줄을 만듭니다.
형식: | ActionPreference |
별칭: | proga |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-TargetExpression
대상 집합을 정의하는 개체 목록을 반환하는 쿼리를 지정합니다.
쿼리는 '/' 문자로 구분된 노드가 있는 문자열로 지정됩니다.
각 노드는 ObjectType[Filter] 형식입니다.
ObjectType은 SMO(SQL Server Management Objects) 개체 모델의 개체 중 하나이며 Filter는 해당 노드의 특정 개체를 필터링하는 식입니다. 노드는 SMO 개체의 계층 구조를 따라야 합니다. 예를 들어 다음 쿼리 식은 AdventureWorks 샘플 데이터베이스를 반환합니다.
[@Name='MyComputer']/Database[@Name='AdventureWorks']
TargetExpression이 지정된 경우 TargetObject를 지정하지 마세요.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-TargetObjects
정책이 평가되는 SQL Server 개체 집합을 지정합니다. SQL Server 분석 서비스의 인스턴스에 연결하려면 TargetObject에 대한 Microsoft.AnalysisServices.Server 개체를 지정합니다.
TargetObject를 지정한 경우 TargetExpression을 지정하지 마세요.
형식: | PSObject[] |
Position: | Named |
Default value: | 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 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
System.Management.Automation.PSObject