PowerShell을 사용하여 Active Directory 스키마 변경 사항 보고 방법

Active Directory (AD) 스키마에 대한 변경 사항은 운영 문제를 초래할 수 있습니다. 일반적으로 스키마는 변경되지 않아야 합니다. 그러나 Microsoft Exchange Server와 같이 Active Directory에 의존하는 새 응용 프로그램이 설치된 경우 해당 응용 프로그램을 지원하기 위해 스키마를 업데이트해야 합니다. AD의 무결성을 보호하기 위해 스키마에 승인된 변경 사항만이 이루어졌는지 확인하는 것이 가치가 있습니다.

PowerShell을 사용하면 AD 스키마 변경에 대한 보고서를 쉽게 생성할 수 있습니다. 그러나 이 기사의 코드를 실행하기 전에 Windows Server Active Directory용 PowerShell 모듈을 설치해야 합니다. Active Directory PowerShell 모듈은 기본적으로 도메인 컨트롤러(DC)에 설치됩니다. 그러나 일상적인 관리 작업은 도메인에 가입된 Windows 10 PC에서 수행하는 것이 최선의 실천 방법입니다.

광고

Windows Server Active Directory PowerShell 모듈 설치

AD PowerShell 모듈은 Active Directory 도메인 서비스용 원격 서버 관리 도구(RSAT)의 일부입니다. RSAT AD 도구를 설치하려면 로컬 관리자 권한이 있는 PowerShell 프롬프트를 열고 다음 명령을 실행하십시오:

Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 –Online

도구가 설치되면 권한 상승된 PowerShell 창을 닫을 수 있습니다. 이 기사의 나머지 명령을 실행하려면 Active Directory ‘도메인 사용자’ 그룹의 구성원인 계정으로 Windows 10에 로그인하면 됩니다.

Windows 10에서 RSAT를 설치하는 자세한 정보는 Petri의 Windows 10에 원격 서버 관리 도구 설치 방법을 참조하십시오.

파워쉘을 사용하여 AD 스키마 변경 사항 보고

Get-ADObject cmdlet을 사용하여 스키마 변경 사항을 표시할 수 있습니다. 하지만 먼저 Get-ADObject에 검색 기준을 제공해야 합니다. 다시 말해, 디렉터리의 검색 영역입니다. 우리는 스키마를 검색하고 싶기 때문에 디렉터리의 스키마 명명 컨텍스트를 알아야 합니다. 다행히도 그것은 Get-ADRootDSE cmdlet을 사용하여 쉽게 검색할 수 있습니다. Get-ADRootDSE를 매개변수 없이 실행하면 디렉터리의 schemaNamingContext에 대한 경로가 출력에 표시됩니다.

광고

Image # Expand
How to Report Active Directory Schema Changes Using PowerShell (Image Credit: Russell Smith)

 

파워쉘은 다음과 같이 마침표와 괄호를 사용하여 schemaNamingContext와 같은 모든 속성을 쉽게 추출할 수 있습니다.

((Get-ADRootDSE).schemanamingcontext)

위의 코드를 Get-ADObject cmdlet의 -SearchBase 매개변수 값으로 사용할 수 있습니다. 하지만 몇 가지 다른 매개변수를 추가해야 합니다. -SearchScope는 제공된 -SearchBase 매개변수의 즉시 자식 개체를 검색하는 OneLevel로 설정되어야 합니다. 와일드카드 *를 -Filter 매개변수의 값으로 사용하여 모든 것을 반환합니다.

마지막으로 -Properties 매개변수를 사용하여 출력으로 반환하고자 하는 속성을 지정합니다. 보시다시피 objectClass, name, whenChangedwhenCreated 속성을 추출하겠습니다.

광고

$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemanamingcontext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated

데이터를 날짜별로 그룹화하려고 합니다. 이를 위해 시간 정보가 없는 whencreated 날짜가 필요합니다. Select-Object cmdlet과 계산된 속성을 사용하여 필요한 데이터가 있는 새 객체를 올바른 형식으로 만들 수 있습니다. 아래 확장된 명령어에서는 Get-ADObject에 의해 생성된 객체를 Select-Object cmdlet에 파이핑했음을 볼 수 있습니다. @는 레이블 ‘Event’와 계산된 속성을 나타내는데, 여기에는 whenCreated 속성에서 날짜만을 반환하는 식이 포함되어 있습니다.

$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemaNamingContext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated | Select-Object objectClass, name, whenChanged, whenCreated, @{name='Event';expression={($_.whenCreated).Date.ToShortDateString()}}

다음으로, Select-Object에 의해 생성된 객체를 Sort-Object에 파이핑할 것입니다. 그리고 whenCreated 속성에 따라 객체 데이터를 정렬할 것입니다.

$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemaNamingContext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated | Select-Object objectClass, name, whenChanged, whenCreated, @{name='Event';expression={($_.whenCreated).Date.ToShortDateString()}} | Sort-Object -Property whenCreated

마지막으로, 객체를 Format-Table cmdlet에 파이핑할 것입니다. 이를 통해 Select-Object cmdlet을 사용하여 만든 ‘Event’별로 속성이 테이블로 표시될 것입니다.모든 코드를 함께 실행하면 스키마 변경이 명령 프롬프트 창에 나열됩니다. 제 디렉터리에는 Exchange Server가 설치되어 있어 스키마에 많은 변경 사항이 있습니다.

$schema | Format-Table objectClass, name, whenChanged, whenCreated -groupby Event -autosize
Image # Expand
How to Report Active Directory Schema Changes Using PowerShell (Image Credit: Russell Smith)
$schema = Get-ADObject -SearchBase ((Get-ADRootDSE).schemaNamingContext)-SearchScope OneLevel -Filter * -Properties objectClass, name, whenChanged, whenCreated | Select-Object objectClass, name, whenChanged, whenCreated, @{name='Event';expression={($_.whenCreated).Date.ToShortDateString()}} | Sort-Object -Property whenCreated

$schema | Format-Table objectClass, name, whenChanged, whenCreated -groupby Event -autosize

 

 

Source:
https://petri.com/how-to-report-active-directory-schema-changes-using-powershell/