Computer >> 컴퓨터 >  >> 체계 >> Windows Server

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

Get-ADUser PowerShell cmdlet을 사용하면 Active Directory 사용자, 해당 특성 및 도메인 사용자 간의 검색에 대한 정보를 얻을 수 있습니다. AD에서 정보를 가져오는 데 가장 널리 사용되는 PowerShell cmdlet 중 하나입니다. Get-ADUser cmdlet을 사용하면 AD 사용자 계정의 특성 값을 가져오고, 특성이 있는 도메인 사용자를 나열하고, 사용자 보고서를 CSV 파일로 내보내고, 다양한 기준을 사용하여 도메인 사용자를 선택 및 필터링할 수 있습니다.

Active Directory PowerShell 모듈의 Get-ADUser Cmdlet

Get-ADUser cmdlet은 Active Directory와 상호 작용하기 위한 특수 모듈인 Windows PowerShell용 Active Directory 모듈에 포함되어 있습니다. . RSAT-AD-PowerShell 모듈 cmdlet을 사용하면 AD 개체에 대해 다양한 작업을 수행할 수 있습니다.

참고 . 이전에는 AD 사용자 계정의 특성에 대한 정보를 얻으려면 ADUC 콘솔(저장된 AD 쿼리 포함), VBS 스크립트, dsquery 등 다양한 도구를 사용해야 했습니다. 이러한 모든 도구는 Get-ADUser cmdlet으로 쉽게 대체할 수 있습니다. .

이 예에서는 Get-ADUser PowerShell cmdlet을 사용하여 사용자의 암호가 마지막으로 변경된 시간, 암호가 만료된 시간 및 다른 사용자의 속성에 대한 정보를 가져오는 방법을 보여줍니다.

RSAT-AD-PowerShell 모듈을 사용하려면 관리자 권한 PowerShell 콘솔을 실행하고 다음 명령을 사용하여 모듈을 가져와야 합니다.

가져오기-모듈 ActiveDirectory

RSAT-AD-PowerShell 모듈은 AD DS(Active Directory 도메인 서비스) 역할을 배포할 때 Windows Server 2012 이상에 기본적으로 설치됩니다. 도메인 구성원 Windows Server 호스트에 모듈을 설치하려면 다음 명령을 실행하십시오.

Install-WindowsFeature -이름 "RSAT-AD-PowerShell" –IncludeAllSubFeature

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

데스크톱 Windows 10/11에서 Get-ADUser cmdlet을 사용하려면 적절한 버전의 RSAT를 설치해야 합니다. 설정을 통해 RSAT를 활성화할 수 있습니다. ->  -> 선택적 기능 -> 기능 추가 -> RSAT:Active Directory 도메인 서비스 및 경량 디렉터리 서비스 도구 .

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

PowerShell을 사용하여 Windows 10 및 11에 RSAT AD 모듈을 설치할 수 있습니다.

Windows 기능 추가 – 온라인 – 이름 "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

RSAT-AD-PowerShell 모듈이 컴퓨터에 설치되어 있지 않은 경우 Get-ADUser 명령을 실행할 때 오류가 나타납니다.

Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

모듈이 설치되어 있는지 확인하고 필요한 경우 PowerShell 세션으로 가져옵니다.

가져오기-모듈 ActiveDirectory

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

컴퓨터에 RSAT를 설치하지 않고 AD-PowerShell 모듈을 사용하는 방법도 있습니다. 기본 모듈 파일을 복사하고 모듈을 PowerShell 세션으로 가져오기만 하면 됩니다.

가져오기-모듈 "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
가져오기-모듈 "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"

Get-ADUser cmdlet의 모든 인수에 대한 전체 목록은 다음과 같이 얻을 수 있습니다.

도움말 Get-ADUser

Get-ADUser를 사용하여 AD 사용자를 찾고 속성을 나열하는 방법

Get-ADUser cmdlet을 사용하기 위해 도메인 관리자 또는 위임된 권한이 있는 계정으로 실행할 필요가 없습니다. 인증된 AD 도메인 사용자는 PowerShell 명령을 실행하여 대부분의 AD 개체 속성 값을 가져올 수 있습니다(기밀 속성 제외, 로컬 관리자 암호 솔루션 – LAPS 문서의 예 참조). 다른 계정으로 Get-ADUser 명령을 실행해야 하는 경우 –자격 증명을 사용하세요. 매개변수.

모든 도메인 사용자 계정 목록을 표시하려면 다음 명령을 실행하십시오.

Get-ADUser -필터 *

중요 . 사용자 계정이 많은 Active Directory 도메인에서는 이 명령을 실행하지 않는 것이 좋습니다. 이로 인해 AD 정보를 제공하는 도메인 컨트롤러에 과부하가 걸릴 수 있습니다.

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

Set-ADUser 사용 cmdlet을 사용하여 Active Directory 사용자 특성을 변경합니다.

특정 사용자의 속성을 표시하려면 –Identity를 사용하십시오. 매개변수. ID는 사용자 이름, 로그인(SAMAccountName), DN(고유 이름), SID 또는 GUID일 수 있습니다.

다음 PowerShell 명령은 동일한 AD 사용자 계정에 대해 동일한 결과를 반환합니다.

Get-ADUser –Identity b.smith
Get-ADUser –Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=woshub,DC=loc"
Get-ADUser – 신원 "브라이언 스미스"

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

기본적으로 Get-ADUser cmdlet은 10개의 기본 사용자 특성(120개 이상의 사용자 계정 속성 중)만 반환합니다. DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, 계정 상태(사용:UserAccountControl AD에 따라 True/False 속성) 등. 이 경우 cmdlet의 출력에는 마지막 사용자 암호 변경 시간에 대한 정보가 포함되지 않습니다.

특정 도메인 컨트롤러에서 AD 쿼리를 실행하려면 -Server를 사용하세요. 옵션:

Get-ADUser – 서버 DC01.woshub.com – ID tstuser

다른 AD 도메인에서 사용자 데이터를 가져와야 하는 경우 액세스하기 위해 도메인 컨트롤러 이름과 자격 증명을 지정해야 합니다.

$ADcred =Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcred

사용 가능한 모든 사용자 속성에 대한 자세한 정보를 표시하려면 다음 명령을 실행하십시오.

Get-ADUser -identity tuser -properties *

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

속성 *이 있는 Get-ADUser cmdlet 스위치는 모든 AD 사용자의 속성과 해당 값(빈 속성 포함)을 나열합니다. Active Directory 사용자 및 컴퓨터 그래픽 스냅인(dsa.msc)에서 유사한 사용자 특성 목록을 사용할 수 있습니다. ) 속성 편집기 탭 아래에 있습니다.

그런 다음 필요한 사용자 특성이 표시되도록 Get-ADUser 출력 형식으로 이동합니다. 예를 들어 다음 사용자 속성의 값을 표시하려고 합니다.

  • 비밀번호 만료됨
  • PasswordLastSet
  • 비밀번호가 만료되지 않음
  • LastLogonTimestamp

다음 명령을 실행하십시오.

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

이제 사용자 데이터에는 계정 암호 상태(만료:True/False), 마지막 암호 변경 날짜 및 마지막 사용자가 도메인에 로그온한 시간(lastlogontimestamp 기인하다). 이 정보를 보다 편리한 테이블 보기에 표시하고 불필요한 속성을 모두 제거하려면 Select-Object –Property를 사용하세요. 및 형식-표 :

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

Get-ADUser -SearchBase:특정 OU에서 사용자 가져오기

특정 도메인 컨테이너(조직 단위)의 사용자만 표시하려면 –SearchBase 를 사용하십시오. 매개변수:

Get-ADUser -SearchBase 'OU=런던,DC=woshub,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires

한 번에 여러 OU에서 사용자를 선택해야 하는 경우 다음 PowerShell 스크립트를 사용하십시오.

$OUs ="OU=NY,DC=woshub,DC=com","OU=LA,DC=woshub,DC=com","OU=MA,DC=woshub,DC=com"
$OU | foreach {Get-ADUser -SearchBase $_ -Filter * |이름 선택, 활성화됨}

PowerShell을 사용하여 AD에서 사용자의 이메일 주소를 가져오는 방법

사용자 이메일 주소는 Active Directory의 사용자 개체 속성 중 하나입니다. 사용자의 이메일 주소를 나열하려면 EmailAddress를 추가해야 합니다. 필드를 Get-ADUser cmdlet의 속성에 추가합니다.

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=woshub,DC=com'| 개체 이름 선택, EmailAddress

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

이메일 주소가 있는 활성화된 사용자 계정 목록:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | 개체 이름, 성, 지정 이름, 메일 선택 | 형식-표

이메일 주소가 없는 Active Directory 사용자 목록을 얻으려면:

Get-ADUser -Filter * -Properties EmailAddress | 여기서 -Property EmailAddress -eq $null

다음 예에서는 회사 이메일 목록을 AD에서 CSV 파일로 내보낼 수 있습니다. 나중에 이 CSV 주소 목록을 Outlook 또는 Mozilla Thunderbird와 같은 데스크톱 이메일 클라이언트로 가져올 수 있습니다.

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | 개체 이름, 성, 지정 이름, 메일 선택 | Export-Csv -NoTypeInformation - 인코딩 utf8 -delimiter "," $env:temp\adress_list.csv

Get-ADUser:PowerShell을 사용하여 Active Directory 사용자를 CSV로 내보내기

속성이 있는 도메인 사용자의 결과 목록을 텍스트 파일로 내보낼 수 있습니다.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires> C:\temp\users.txt

또는 AD 사용자 목록을 CSV 파일로 내보낼 수 있습니다.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | 여기서 {$_.name –like "*Dmitry*"} | 정렬 개체 PasswordLastSet | 개체 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires 선택 | 내보내기-csv -경로 c:\tmp\user-passwords-expires.csv -추가 - UTF8 인코딩

PowerShell을 사용하여 AD 사용자 목록을 Excel 파일로 직접 내보낼 수 있습니다.

Get-ADUser 필터 예

–필터 사용 스위치를 사용하면 하나 이상의 속성으로 사용자 계정 목록을 필터링할 수 있습니다. 이는 속성이 지정된 기준과 일치하는 AD 사용자를 검색하는 데 유용합니다. Active Directory 사용자의 특정 속성 값은 이 매개변수에 대한 인수로 지정할 수 있습니다. –Filter를 사용하는 경우 매개 변수를 사용하면 Get-ADUser cmdlet은 필터 기준과 일치하는 사용자만 표시합니다.

예를 들어 이름에 "Dmitry가 포함된 활성(활성화된) 사용자 계정을 나열하고 싶습니다. ". 아래 예에서는 여러 필터를 사용합니다. 논리적 PowerShell 비교 연산자를 사용하여 조건을 결합할 수 있습니다. 이 예에서 사용자 속성은 두 필터 조건(- 및 ):

Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

모든 PowerShell 논리 연산자는 사용자 특성에 대한 값을 선택하는 데 사용할 수 있습니다(-eq , -ne , -gt , -ge , -lt , -le , 유사 , -notlike , -및 , -또는 등)

또한 개체 정렬을 사용하여 특정 사용자 속성을 기준으로 결과 사용자 목록을 정렬할 수 있습니다. cmdlet. where-Object를 사용할 수도 있습니다. 한 번에 여러 필터링 기준을 지정하는 cmdlet.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=woshub,DC=com'| 여기서 {$_.name –like "*Dmitry*" -and $_.Enabled -eq $true} | 정렬 개체 PasswordLastSet | 개체 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires 선택

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

따라서 필요한 Active Directory 속성이 있는 사용자 목록을 얻을 수 있습니다.

한 번에 여러 속성(legacyExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN 및 msExchMailNickname)으로 사용자를 검색하려면 모호한 이름 확인(ANR ) 기능:

Get-ADUser -Filter {anr -eq 'John'} | 이름 선택

힌트 . Get-ADUser를 사용하여 Active Directory 사용자를 조회할 때 성능 관점에서 필터를 사용하여 기준 지정 속성은 where-Object에 파이프라인을 사용하는 것보다 선호됩니다. cmdlet. 이 경우 선택 결과 필터링은 도메인 컨트롤러에서 수행되고 더 적은 양의 데이터 집합이 네트워크를 통해 컴퓨터로 전송됩니다.

Get-ADUser 쿼리에서 LDAP 필터를 사용할 수 있습니다. LDAP 필터는 –LdapFilter를 사용하여 지정됩니다. 속성.

Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'

PowerShell Get-ADUser 예제

다양한 필터를 사용하여 Active Directory 사용자를 쿼리하기 위한 몇 가지 더 유용한 PowerShell 명령 예제를 보여 드리겠습니다. 이들을 결합하여 필요한 AD 사용자 개체 목록을 얻을 수 있습니다.

이름이 Joe로 시작하는 AD 사용자 표시 :

Get-ADUser -filter {name -like "Joe*"}

PowerShell을 사용하여 Active Directory의 총 사용자 계정 수를 계산할 수 있습니다.

Get-ADUser -Filter {SamAccountName -like "*"} | 측정 개체

비활성화된 Active Directory 사용자 계정 찾기:

Get-ADUser -Filter {사용 -eq "False"} | 개체 선택 SamAccountName,Name,Surname,GivenName | 형식-표

다음 명령을 사용하여 Active Directory 사용자 계정 생성 날짜를 확인할 수 있습니다.

get-aduser -Filter * -속성 이름, WhenCreated | 이름 선택, 생성 시

지난 24시간 동안 생성된 새로 추가된 Active Directory 사용자 목록을 확인할 수 있습니다.


$lastday =((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}

만료된 암호가 있는 계정 나열(도메인 암호 정책에서 암호 만료 옵션을 구성할 수 있음):

Get-ADUser -filter {Enabled -eq $True} -속성 이름, 암호 만료됨| 여기서 {$_.PasswordExpired}|이름 선택,비밀번호 만료

Get-ADUser 및 Add-ADGroupMember cmdlet을 사용하여 도시, 직함, 부서 등에 따라 동적 AD 사용자 그룹을 만들 수 있습니다.

작업:텍스트 파일에 저장된 사용자 계정 목록(한 줄에 한 계정)의 경우 AD에서 사용자의 회사 이름을 가져와 CSV 파일로 저장해야 합니다(이 파일을 Excel로 쉽게 가져올 수 있음).

가져오기-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -속성 이름, 회사 |
이름, 회사 선택 |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

지난 90일 동안 도메인 비밀번호를 변경하지 않은 사용자:

$90_Days =(Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}

비활성 사용자 계정을 찾습니다(도메인에 180일 이상 로그온하지 않음). lastLogonTimestamp 속성은 도메인에 대한 사용자의 로그온 기록을 가져오는 데 사용됩니다.

$LastLogonDate=(Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} | LastLogonTimeStamp 정렬| FT 이름, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -자동 크기

Active Directory에서 사용자의 사진을 가져와 jpg 파일로 저장하려면 다음 명령을 실행합니다.

$usr =Get-ADUser sjoe -속성 썸네일 사진
$usr.thumbnailPhoto | Set-Content sjoe.jpg -인코딩 바이트

사용자 계정이 속한 AD 그룹 목록을 얻으려면:

Get-AdUser sjoe -속성 구성원 | 선택 memberof -expandproperty memberof

특정 도메인 보안 그룹의 구성원인 OU의 사용자 나열:

Get-ADUser -SearchBase 'OU=로마, OU=이탈리아, DC=woshub, DC=com' -Filter * -속성 구성원 | Where-Object {($_.memberof -like "*CEO*")}

특정 도메인 보안 그룹의 구성원인 OU의 사용자 나열:

Get-ADUser -SearchBase 'OU=로마, OU=이탈리아, DC=woshub, DC=com' -Filter * -속성 구성원 | Where-Object {($_.memberof -like "*CEO*")}

특정 그룹의 구성원을 제외한 OU의 모든 사용자 나열:

$Users =Get-ADUser -filter * -SearchBase 'OU=Berlin,DC=woshub,DC=com' -properties memberOf
ForEach($Users의 $User)
{
$Groups =-join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}

조직 단위 이름이 있는 AD 사용자 목록을 Out-GridView 테이블로 내보내기:

get-aduser -filter * -Properties cn,canonicalname | 선택 이름,userprincipalname,@{이름="OU";표현식={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView

Get-ADUser:PowerShell로 Active Directory 사용자 정보 찾기

AD 사용자 계정이 존재하는지 확인하십시오.
$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{  Write-Host "$SamAccountName 사용자가 존재하지 않습니다."}

사용자가 로그인할 수 있는 도메인 컴퓨터를 나열합니다(LogonWorkstations AD 속성을 통한 로그온 제한).

Get-ADUser jbrown -Properties LogonWorkstations | 형식 목록 이름, LogonWorkstations

도움말 . Get-ADComputer cmdlet은 컴퓨터 속성을 가져오거나 Active Directory에서 여러 컴퓨터를 검색하는 데 사용됩니다.