PowerShell에서 Active Directory 사용자 쿼리

Marion Paul Kenneth Mendoza 2023년6월21일
  1. Active Directory 모듈 설치
  2. Get-ADUser Cmdlet을 사용하여 PowerShell에서 Active Directory 사용자 쿼리
PowerShell에서 Active Directory 사용자 쿼리

Windows PowerShell을 사용하면 모든 AD(Active Directory) 구성 요소를 쉽게 관리할 수 있습니다. 사용자, 컴퓨터 및 그룹과 같은 활성 디렉터리 개체 관리를 포함하여 모든 AD 기능을 처리할 수 있습니다.

이 문서에서는 활성 디렉터리 개체 중 하나를 탐색하고 Windows PowerShell Active Directory 모듈을 사용하여 활성 디렉터리 사용자를 관리하는 방법에 대해 설명합니다.

Active Directory 모듈 설치

일반적으로 Windows PowerShell 명령 Install-Module을 실행하면 원격 CDN에서 패키지를 가져와 시스템에 설치해야 합니다.

여전히 Active Directory 모듈을 사용하여 이를 성공적으로 수행하려면 RSAT 또는 원격 서버 관리 도구라는 필수 패키지를 설정해야 합니다.

귀하의 컴퓨터나 서버에 RSAT를 설치하기 위해 아래의 PowerShell 스크립트를 실행할 수 있습니다.

Windows 10 이상용 RSAT 설치:

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

Windows Server용 RSAT를 설치합니다(Windows Server 2008 이후의 여러 빌드).

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

컴퓨터에 RSAT 기능을 설치하면 PowerShell용 AD 모듈(Active Directory Module)도 설치되어 Active Directory 도메인 서비스를 관리할 수 있습니다.

Get-ADUser Cmdlet을 사용하여 PowerShell에서 Active Directory 사용자 쿼리

활성 디렉토리 모듈이 설치되면 이제 다음 구문을 사용하여 활성 디렉토리 모듈을 가져올 수 있습니다. Import-Module 명령에는 ipmo라는 별칭이 있으며 모듈을 가져올 때 이를 훌륭한 대안으로 사용할 수도 있습니다.

ipmo activedirectory

Get-ADUser 명령은 도메인 사용자를 찾기 위해 가능한 한 많은 옵션과 정보를 제공하는 명령입니다. 검색할 NT ID 또는 사용자 이름을 이미 알고 있는 경우 Identity 매개변수를 사용할 수 있습니다.

아래에서 다양한 식별자를 사용하여 사용자 계정을 찾는 몇 가지 예를 볼 수 있습니다.

예제 코드:

Get-ADUser -Identity jdoe101

출력:

DistinguishedName : CN=John Doe,OU=IT,DC=pureorg,DC=local
Enabled           : False
GivenName         : John
Name              : John Doe
ObjectClass       : user
ObjectGUID        : b98fd0c4-3d5d-4239-8245-b04145d6a0db
SamAccountName    : jdoe101
SID               : S-1-5-21-4117810001-3432493942-696130396-3142
Surname           : Doe
UserPrincipalName : jdoe101@pureorg.local

AD 사용자 계정 필터링

둘 이상의 도메인 사용자를 찾아야 하거나 식별자를 모르는 경우 필터를 사용하십시오.

각 필터 매개변수를 사용하면 검색 쿼리를 좁히는 조건문을 수행할 수 있습니다. 이 경우 이 조건이 충족되면 Get-ADUser 명령이 해당 검색 조건과 일치하는 사용자 계정을 표시합니다.

사용자를 필터링하는 매개변수를 Filter 매개변수라고 합니다. 리터럴 이름에서 Filter 매개 변수를 사용하면 Windows PowerShell Where-Object cmdlet 필터 구문과 매우 유사한 조건을 만들 수 있습니다.

아래 예는 Filter 매개변수의 훌륭한 예입니다. 이 예는 활성 디렉토리 속성(givenName)을 표시하고 이를 조건문의 일부로 정의합니다.

필터는 사용자가 Albert와 동일한 givenName을 가지고 있는 경우에만 사용자가 돌아올 수 있도록 허용합니다.

예제 코드:

Get-ADUser -Filter "givenName -eq 'Albert'"

출력:

DistinguishedName : CN=AlBernard,OU=Accounting,DC=mylab,DC=local
Enabled           : False
GivenName         : Albert
Name              :  Bernard
ObjectClass       : user
ObjectGUID        : 8ec5ef2a8-1fdb-42ab-9706-b1e6356dd456
SamAccountName    : AlBernard
SID               : S-1-5-21-4117810001-3432493942-696130396-3163
Surname           : Bernard
UserPrincipalName :  AlBernard

조직 단위에서 사용자 검색

PowerShell은 ID 또는 필터를 제공하여 기준과 일치하는 모든 도메인 사용자를 반환합니다. 조직 단위 또는 OU로 제한되지 않습니다.

SearchBase 매개변수를 사용하여 조직 단위로 필터링하려면 Get-ADUser에 대한 조건문을 설정해야 합니다.

SearchBase 매개변수는 특정 OU에서 사용자 계정 검색을 시작하는 기능을 제공합니다. SearchBase 매개변수는 조직 단위의 고유 이름(DN)을 사용합니다.

예를 들어 아래와 같이 Users OU에서 모든 사용자를 찾을 수 있습니다. *Filter를 사용하는 것은 모든 사용자 계정을 일치시키는 것을 의미합니다.

예제 코드:

Get-ADUser -Filter * -SearchBase 'OU=Users,DC=domain,DC=local'

단일 OU에서 사용자 계정만 찾고 하위 OU는 제외하려고 할 수 있습니다. 이 경우 SearchBaseSearchScope 매개변수를 사용할 수 있습니다.

SearchScope 매개변수는 OU 계층에서 검색하려는 깊이를 정의합니다.

예를 들어 조직 단위 및 모든 하위 조직 단위에서 모든 사용자 계정을 찾으려면 SearchScope 값에 1을 사용합니다. 반면에 모든 자식 및 손자 OU를 검색하려면 2를 사용합니다.

아래 예에서는 Users 조직 단위 및 그 아래의 모든 하위 OU 내에서 사용자 계정을 검색합니다.

예제 코드:

Get-ADUser -Filter * -SearchBase 'OU=Users,DC=domain,DC=local' -SearchScope 2

사용자의 속성 가져오기

Get-ADUser를 실행하면 몇 가지 속성만 반환되는 것을 즉시 볼 수 있습니다. 또한 출력이 Select-Object -Property *로 파이프되는 경우에도 모든 세부 정보가 여전히 반환되지 않는다는 것을 알 수 있습니다.

Property 매개 변수를 사용하여 Windows PowerShell에서 활성 디렉터리 사용자 특성을 가져올 수 있습니다. 이 매개변수는 출력과 함께 표시할 하나 이상의 쉼표로 구분된 기능을 허용합니다.

아래 예제 코드 스니펫은 Get-ADUser 명령을 사용하여 givenNameAdam인 모든 사용자 계정에 대한 모든 속성을 찾습니다. 아쉽게도 출력은 잘렸지만 이메일 주소, 비밀번호 속성 등과 같은 다른 친숙한 속성을 볼 수 있습니다.

예제 코드:

Get-AdUser -Filter "givenName -eq 'Adam'" -Properties *

출력:

AccountExpirationDate                :
accountExpires                       : 9223372036854775807
AccountLockoutTime                   :
AccountNotDelegated                  : False
AllowReversiblePasswordEncryption    : False
AuthenticationPolicy                 : {}
AuthenticationPolicySilo             : {}
BadLogonCount                        : 0
badPasswordTime                      : 0
badPwdCount                          : 0
CannotChangePassword                 : False
CanonicalName                        : mylab.local/Accounting/ADBertram
<SNIP>
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Directory