아담 자동화
이 활성 디렉토리 상태 검사에 두 부분으로 시리즈의 2 부입니다. 2731>
1 부에서는 여러 테스트가 얼마나 다양하고 왜 중요한지 배웠습니다. 이제 그들 모두를 함께 끌어 당겨 도구를 만들어 봅시다. 이 부분에서는 1 부에서 설명한 모든 활성 디렉터리 상태 검사를 테스트 프레임워크로 변환합니다. 또한 다양한 광고 상태 검사의 결과를 훼방 및 모니터링 도구와 같은 도구로 출력하는 방법을 배우게됩니다.
이 문서에 대해 배울 거 야 도구의 완성 된 버전을 따라 하거나 볼 수 있습니다.
목차
출력 정의
공통 객체 유형 및 생성 방법을 사용하면 테스트 결과를 원하는 도구로 훨씬 쉽게 변환 할 수 있습니다.
모든 잠재적 인 도구에 대한 균일 한 출력을 만들려면 파워 쉘 클래스를 사용하도록 선택했습니다. 필수는 아니지만,그것은 내가 여기에서 취하기로 선택한 접근 방식입니다. 중요한 점은 모든 광고 상태 검사가 동일한 유형의 출력을 반환하는지 확인하는 것입니다.
파워쉘 클래스는 파워쉘 개체의 모양과 수행 방법을 정의하는 스키마입니다. 아래에 표시된 각 줄은 개체가 반환하는 속성을 나타냅니다. 당신은 내가 열 속성을 반환하는 각 광고 상태 검사에 계획하고 아래를 볼 수 있습니다.
Class AdhcResult { $Source $TestName $Pass $Was $ShouldBe $Category $SubCategory $Message $Data ]$Tags}
이 클래스 생성을 촉진하기 위해,나는 새로운 보조 결과라는 도우미 함수를 사용하게 될 것입니다. 이 함수는 클래스와 당신이 따라야 할 모든 것을 만듭니다. 이 함수는 사용자 지정
형식 개체를 출력합니다.
광고 상태 확인 도구 실행
먼저 광고 상태 확인 스크립트를 다운로드하여 도메인 컨트롤러에 복사합니다. 그것을 열고 그것을 실행하십시오. 도구의 이 부분은 정보를 반환하지 않습니다.
스크립트가 실행되고$TestResults
변수의 각 검사 결과를 여러개체로 저장합니다. 나중에 이러한 개체를 사용하여 보고서를 생성하거나 다양한 도구로 출력합니다. 이 같은 변수에 상태 검사 결과를 보유하면 다른 결과를 만들고
New-AdHcResult
명령을 사용하도록 선택할 경우 더 많은 결과를 추가 할 수 있습니다.
스크립트 실행이 완료되면$TestResults
변수에 저장된 전체 광고 상태 검사 개체 집합이 있어야 합니다. 이제 콘솔에서$TestResults
를 실행하고 원시 결과를 볼 수 있습니다.
도구에 광고 상태 검사 결과 표시
모든 검사는 공통 개체 유형이므로 훼방 및
이 섹션에서는 익스텐트라는 도구를 사용하여 보고서를 만드는 방법을 알아봅니다.먼저 도구가 이해할 수 있는 형식으로 개체를 변환해야 합니다. 대부분의 도구는 다음을 이해합니다. 이 형식은 결과를 표시하기 위해 다양한 도구로 가져올 수 있는 형식입니다.
때문에 당신과 함께 작업 PowerShell,당신은 사용할 것을 훼방 테스트 프레임워크를 읽을 출력 광고에서 상태 확인 스크립트를 생성하는 nUnit XML 파일의
다운로드하여 시작하는 최신 버전의 훼방. 6855>를 실행 하 여 훼방을 다운로드할 수 있습니다. 아래 명령은 최신 훼방 버전의 설치를 강제로. 훼방이 서명 된 게시자 인증서는 윈도우 10 와 함께 제공되기 때문에,우리는 그것을 설치하는SkipPublisherCheck
매개 변수를 사용해야합니다.
PS51> Install-Module Pester -Force -Verbose -SkipPublisherCheck
훼방을 사용할 수 있으면 스크립트를 실행하고 훼방 테스트 집합을 동적으로 만들 수 있습니다.
참고:또한 내가 제공 한 파워 쉘 스크립트를 사용하지 않고 훼방 테스트를 직접 만들 수 있습니다.
아래 PowerShell 스크립트를 사용하는 것을 훼방하는가 생성 nUnit XML 파일에서 출력의$TestResults
는 변수에 정의된 ADHealthCheck-NoResult.ps1 스크립트입니다.
이 파일을 광고 상태 확인 스크립트와 같은 폴더에 저장합니다.
# dot source in the ADHealthCheck file. $PSScriptRoot\ADHealthCheck-NoResult.ps1$Grouped = $TestResults | Group-Object CategoryForeach($Category in $Grouped) { Describe -Name $Category.Name -Tags ($Category.Group.Tags | Select -Unique) { Foreach($Result in $Category.Group){ Context "$($Result.Source) - $($Result.TestName)" { It -Name "Should've passed" { $Result.Pass | Should -Be -ExpectedValue $True -Because $Result.data } } } }}
마지막으로 아래의Invoke-Pester
을 실행하여 훼방을 호출합니다.결과를NUnitXml
형식으로 저장합니다.2731>
PS51 > Invoke-Pester -Script @{Path = '.\Pester.ps1'} -OutputFile .\NunitReport.xml -OutputFormat NUnitXml
범위 도구를 사용하여 보고서 작성
이러한 도구 중 하나는 범위라고합니다. 이 툴의 목적은 웹사이트를 사용하기 쉽게 하고,오류 상황을 선행적으로 인지하고 수정하게 하려는 것입니다.
먼저,누니트 보고서와 같은 디렉터리로 익스텐트를 다운로드합니다.이전에 만든 파일입니다. 그런 다음 파워쉘 세션에서 다음 명령을 실행합니다. 이 명령은 디렉토리를 생성하여 파일을 저장한 다음 익스텐트를 실행합니다.변환 할 수 있습니다.
# Create report directoryPS51> mkdir .\HTMLReports# Create the reportPS51> .\extent.exe -i .\NunitReport.xml -o .\HTMLReports\
이 완료되면 두 개의 파일을 찾을 수 있습니다. 이 파일은 아래의 스크린 샷처럼 보이는 것입니다 당신은 웹 브라우저를 엽니 다.
이 도구를 사용하여 인프라와 서비스를 모니터링할 수 있습니다. 이 섹션에서는 상태 검사 스크립트가 실행된 후 상태 검사 결과를 푸시하는 방법을 알아봅니다.
결과를 푸시하는 것은 툴 풀 정보를 갖는 것보다 더 많은 작업을 수행하지만 결국 설정이 소요 된 시간의 가치가 있음을 알 수 있습니다.
필수 구성 요소
:
- 설치 및 구성
- 각 사전 테스트를 완료한 경우 아래의 단계별 지침을 따라 이러한 광고 상태 검사 결과를 푸시하는 방법을 확인할 수 있습니다.
- 도메인 또는 원하는 이름으로 장치를 만듭니다.
- 고급 푸시 센서를 만듭니다. 이 대소 문자를 구분합니다!
- 각 도메인 컨트롤러 장치에 대해 하나의 고급
푸시 센서를 만듭니다. 각 센서에 대해 각 센서를 추가 할 수 있습니다.
의 내용을 추가합 보낼-AdhcResultToPrtg.ps1PowerShell 스크립트 끝의 ADHealthCheck-NoResult.ps1PowerShell 스크립트를 우리가 덮여있다.
- 변수
$PRTGUrl
을(를)변경합니다. - 스크립트를 실행합니다.
완료되면 광고 상태 확인 스크립트가 완료되면 아래와 같이 상태를 푸시합니다.
활성 디렉터리 상태 검사 스크립트 예약
광고 상태 모니터링은 진행 중인 프로세스입니다. 임시 인스턴스가 아닌 항상 테스트를 실행해야 합니다. 의 자주 간격으로 실행 활성 디렉토리 상태 검사 스크립트를 예약 할 수 있습니다.
이러한 검사를 자동화하는 가장 쉬운 방법은 스크립트를 작업 스케줄러에 추가하고 광고 사용자 계정 또는 그룹 관리 서비스 계정으로 실행하도록 하는 것입니다.
그룹 관리 서비스 계정을 사용하는 것은 광고에서 암호를 가져올 수 있는 지정된 컴퓨터 계정만 있으므로 예약된 작업을 자율적으로 실행하는 더 안전한 방법입니다. 그러나 일부 조직은이 사치가 없을 수 있습니다.
광고 사용자 계정 만들기
먼저 예약된 작업을 실행하기 위해 광고 사용자 계정을 설정하는 데 필요한 작업을 분류해 보겠습니다.
예약된 작업을 사용자 계정으로 실행하려는 경우 반드시 자신의 계정으로 실행하지 마십시오! 이 목적을 위해 항상 별도의 사용자 계정을 만드십시오.
시간을 절약하기 위해 아래에 파워쉘 스크립트가 표시됩니다. 이 스크립트는 도메인 관리자 그룹의 일부인 광고 사용자 계정을 만드는 데 사용할 수 있는 예제 스크립트입니다. 그런 다음 이 계정을 사용하여 예약된 작업을 실행할 수 있습니다.
# Change this to the OU of your service accounts$OU = "OU=Service Accounts,DC=contoso,DC=com"# Change this to the password that you want to use for the account$Password = "JägareTvå"$SecureString = $Password | ConvertTo-SecureString -AsPlainText -ForceNew-ADUser -Enabled $True -Path $OU -Name svcADHealthCheck -AccountPassword $SecureString# Restrict account to only Domain Controllers$DomainControllers = (Get-ADDomainController -Filter *).NameSet-ADAccount -Identity svcADHealthCheck -LogonWorkstations ($DomainControllers -Join ",")# Making it Domain Admin (Sorry)Add-ADGroupMember -Identity "Domain Admins" -Members svcADHealthCheck
그룹 관리 서비스 계정 만들기
루트 키 만들기
도메인 컨트롤러에서Get-KDSRootKey
명령을 실행하여 루트 키가 있는지 확인할 수 있습니다. 도메인 관리자 광고그룹의 사용자 계정 부분에서 실행하여 만듭니다.
키를 완전히 적용하려면 다른 도메인 컨트롤러로 복제해야 합니다. 이 프로세스에 대한 자세한 내용은 마이크로 소프트 문서에서 찾을 수 있습니다.2731>
도메인 관리자 그룹의 도메인 컨트롤러에서만 인증할 수 있는 계정을 만드는 데 사용할 예제 스크립트를 볼 수 있습니다.마지막 단계는 모든 도메인 컨트롤러에서 설치 및 테스트하는 것입니다. 이 작업을 수행하는 한 가지 방법은Invoke-Command
파워 쉘 명령을 사용하는 것입니다. 이 스크립트는 다음과 같이 작동합니다.설치한 후에는 일괄 작업으로 실행할 수 있는 권한을 부여해야 합니다. 이 계정은 예약된 작업의 백그라운드에서 자율적으로 실행되므로 이 권한이 필요합니다.이 사용 권한을 설정할 수 있습니다. 아직 사용할 수 없는 경우 아래에 하나를 만들 수 있는 몇 가지 단계가 있습니다.
- 직류 그룹 정책 편집기를 시작합니다.
- 도메인 컨트롤러를 마우스 오른쪽 단추로 클릭하고 이 도메인에서 지포 생성 을 선택하고 여기에 연결합니다.
- 배치로 로그온하거나 원하는 다른 이름
- 를 마우스 오른쪽 단추로 클릭하고 편집을 클릭합니다.
- 컴퓨터 구성으로 이동–>윈도우 설정–>보안 설정->사용자 권한 할당.
- 배치 작업으로 로그온을 마우스 왼쪽 단추로 클릭하고 속성을 클릭합니다.
- 사용자 또는 그룹 추가를 클릭합니다.
- 개체 유형을 클릭하고 서비스 계정 만 선택한 다음 확인을 클릭하십시오.
- 이전에 만든 서비스 계정을 검색하여 선택한 다음 확인을 클릭합니다.
이제 아래 그림과 같은 광고 개체 목록 아래에 광고 개체가 표시됩니다.
예약된 작업 만들기
예약된 작업을 실행하기 위해 계정을 만들었으므로 선택한 도메인에 가입된 서버에서 예약된 작업 자체를 만들 수 있습니다.
당신은 가이을 통해 예약 된 작업을 만들 수 있지만 너무 많은 클릭입니다! 대신,나는 파워 쉘로 만드는 것이 좋습니다. 왜? 당신은 단순히 코드를 복사 할 수 있기 때문에 당신은 아래 참조와 함께 할 수.
아래에 두 개의 스크립트가 있습니다; 두 스크립트 모두 비슷하지만 하나는 광고 사용자 계정을 가정하고 다른 하나는 사용자 계정을 가정합니다. 사용 중인 계정에 따라 적절한 스크립트를 사용해야 합니다.
# Replace with the path to your script$ScriptPath = "C:\Scripts\ADHealthCheck.ps1"# Replace with the username of the account that you created to run the task$UserName = "svdADHealthCheck"# Replace with the password that you set for above account$Password = "JägareTvå!"# Create the action that launches the script$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy bypass -File '$ScriptPath'"# Create the trigger that starts the task$Trigger = New-ScheduledTaskTrigger -Once -At "12:00" -RepetitionInterval (New-TimeSpan -Hours 12)# Create settings for the scheduled task$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd# Create the scheduled task using a splat for readability$Splat = @{ User = "$env:USERDOMAIN$UserName" Password = $Password TaskName = "ADHealthCheck" Action = $Action Trigger = $Trigger RunLevel = "Highest" Settings = $Settings}Register-ScheduledTask @Splat
# Replace with the path to your script$ScriptPath = "C:\Scripts\ADHealthCheck.ps1"# Replace with the username of the account that you created to run the task$UserName = "svdADHealthCheck$"# Create the action that launches the script$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy bypass -File '$ScriptPath'"# Create the trigger that starts the task$Trigger = New-ScheduledTaskTrigger -Once -At "12:00" -RepetitionInterval (New-TimeSpan -Hours 12)# Create settings for the scheduled task$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd# Create principal that defines the GMSA$Principal = New-ScheduledTaskPrincipal -UserID "$env:USERDOMAIN$UserName" -LogonType Password -RunLevel Highest# Create the scheduled task using a splat for readability$Splat = @{ Principal = $Principal TaskName = "ADHealthCheck" Action = $Action Trigger = $Trigger RunLevel = "Highest" Settings = $Settings}Register-ScheduledTask @Splat
당신은 완료! 이때 예약된 작업은 위의 스크립트 중 하나에 제공된 간격으로 실행됩니다.
요약
휴! 너가 부에서 모든 방법에 따라서 나 따르면,너는 광고 건강이 깊은 주제 이는 것을 지금쯤은 이미 알아야 한다. 이 하나의 주제에는 두 개의 긴 블로그 게시물조차도 포함 할 수없는 것이 너무 많습니다.
그러나,지금까지,당신은 충분한 지식과 그들이 발생하는 다른 활성 디렉토리 상태 검사를 연결할 수있는 사전 구축 된 파워 쉘 프레임 워크를 가지고 있어야합니다.
추가 읽기
- 광고 및 재해 복구에 대해 모를 수있는 몇 가지 사항