AD에 등록된 컴퓨터 개체의 특성에는 lastLogonTimestamp라는 것이 있습니다.
이는 해당 컴퓨터가 마지막으로 도메인 환경의 Windows에 로그온 한 시점을 기록합니다.
이번 포스팅에서는 이 lastLogonTimestamp 특성의 값을 이용하여 특정 기간(ex.30일)동안 도메인 환경으로 Windows를 로그온하지 않은 컴퓨터 개체를 찾고 해당 개체를 비활성화, 특정 OU로 이동, 삭제하는 방법을 다뤄보겠습니다.
*정보 보호를 위해 특정 정보는 가려져 있습니다.
[수동으로 lastLogonTimestamp 값 확인하기]
Active Directory 사용자 및 컴퓨터로 진입하여 개체의 특성을 확인하는 방법입니다.

위 그림처럼 SN19SA165 컴퓨터 개체의 lastLogonTimestamp 특성의 값이 2022년 04월 15일 오후 3시 3분 42초로 기록되어 있는 것을 확인할 수 있습니다.
하지만 기업의 AD 환경에서는 수만대의 컴퓨터가 AD에 등록이 되어 있기 때문에 이를 하나 하나 조회하는 것은 많은 시간과 노력을 기울여야 합니다.
이를 해결하기 위해 Powershell을 이용하여 AD에 등록되어 있는 모든 컴퓨터 개체의 lastLogonTimestamp 값을 확인하여 특정 일수 이상 접속하지 않은 컴퓨터 개체를 추려낼 수 있습니다.
[Powershell 명령어로 특정 기간 이상 접속하지 않은 컴퓨터 개체 찾기]
Powershell을 관리자모드로 실행한 후 아래의 명령어를 입력합니다.
*특정 기간은 395일로 설정하였습니다.
| #Search# $LastLogonDate= (Get-Date).AddDays(-395) Get-ADComputer -Properties LastLogonTimeStamp, Description, DistinguishedName -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computer,OU=ALIEN,DC=ALIEN,DC=ALIENCODE,DC=LOCAL’| Sort LastLogonTimeStamp| Select Name, Description, DistinguishedName, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} |
(AddDays의 값에는 설정하고자 하는 일수를 넣습니다!!)
(-SearchBase의 OU 및 DC는 해당 환경에 맞게 입력하셔야 합니다!!)

위 이미지처럼 해당 도메인에 가입되어 있는 컴퓨터 개체 중 395일 이상 도메인 환경으로 로그온하지 않은 컴퓨터 개체를 출력해줍니다.
아래 명령어를 이용하면 Powershell 출력이 아닌 csv파일로 결과값을 출력할 수 있습니다.
쓰니는 C드라이브의 ProgramData폴더 하위에 inactive_computers.csv라는 파일로 결과를 저장하였습니다.
| #Search# $LastLogonDate= (Get-Date).AddDays(-395) Get-ADComputer -Properties LastLogonTimeStamp, Description, DistinguishedName -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computer,OU=ALIEN,DC=ALIEN,DC=ALIENCODE,DC=LOCAL’| Sort LastLogonTimeStamp| Select Name, Description, DistinguishedName, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} | Export-CSV C:\ProgramData\inactive_computers.csv -Encoding UTF8 -NoTypeInformation |
(AddDays의 값에는 설정하고자 하는 일수를 넣습니다!!)
(-SearchBase의 OU 및 DC는 해당 환경에 맞게 입력하셔야 합니다!!)


[Powershell 명령어로 특정 기간 이상 접속하지 않은 컴퓨터 개체 비활성화하기]
AD에 등록되어 있는 컴퓨터 개체를 비활성화 하면 해당 컴퓨터로는 도메인 환경으로 Windows 로그온이 차단됩니다.
위에서 찾은 SN19SA165 컴퓨터 개체의 상태를 확인해 보면 활성화 상태인 것을 확인할 수 있습니다.

Powershell을 관리자모드로 실행한 후 아래의 명령어를 입력합니다.
*특정 기간은 395일로 설정하였습니다.
| #Disable# $LastLogonDate= (Get-Date).AddDays(-395) Get-ADComputer -Properties LastLogonTimeStamp, Description -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computer,OU=ALIEN,DC=ALIEN,DC=ALIENCODE,DC=LOCAL’| Disable-ADAccount |
(AddDays의 값에는 설정하고자 하는 일수를 넣습니다!!)
(-SearchBase의 OU 및 DC는 해당 환경에 맞게 입력하셔야 합니다!!)


위 결과와 같이 활성화 상태였던 컴퓨터 개체가 비활성화 된 것을 확인할 수 있습니다.
[Powershell 명령어로 특정 기간동안 접속하지 않은 컴퓨터 개체를 특정 OU로 이동시키기]
오랜 기간 사용하지 않는 컴퓨터 개체를 따로 모아 놓는 OU를 생성하고 해당 OU로 컴퓨터 개체를 이동하여 관리하기 위한 방법입니다.
*특정 OU를 선행적으로 생성해 놓아야 합니다. 쓰니는 Disabled 라는 OU를 생성하였습니다.

Powershell을 관리자모드로 실행한 후 아래의 명령어를 입력합니다.
*특정 기간은 395일로 설정하였습니다.
| #Move Disabled PC Object to Target OU# $LastLogonDate= (Get-Date).AddDays(-395) Get-ADComputer -Properties LastLogonTimeStamp, Description -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computer,OU=ALIEN,DC=ALIEN,DC=ALIENCODE,DC=LOCAL’| Move-ADObject -TargetPath “OU=Disabled,OU=Computer,OU=ALIEN,DC=ALIEN,DC=ALIENCODE,DC=LOCAL” |
(AddDays의 값에는 설정하고자 하는 일수를 넣습니다!!)
(-SearchBase의 OU 및 DC는 해당 환경에 맞게 입력하셔야 합니다!!)


위 결과와 같이 Disabled OU로 395일 이상 사용하지 않은 컴퓨터 개체가 이동된 것을 확인할 수 있습니다.
[Powershell 명령어로 특정 기간동안 접속하지 않은 컴퓨터 개체 삭제하기]
개체의 활성화/비활성화 여부를 떠나서 특정 기간 이상 접속하지 않은 컴퓨터 개체를 삭제할 수 있습니다.
위에서 확인한 컴퓨터 개체를 삭제해보도록 하겠습니다.
Powershell을 관리자모드로 실행한 후 아래의 명령어를 입력합니다.
*특정 기간은 395일로 설정하였습니다.
| #Remove# $LastLogonDate= (Get-Date).AddDays(-395) Get-ADComputer -Properties LastLogonTimeStamp, Description -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computer,OU=ALIEN,DC=ALIEN,DC=ALIENCODE,DC=LOCAL’| Remove-ADComputer |
(AddDays의 값에는 설정하고자 하는 일수를 넣습니다!!)
(-SearchBase의 OU 및 DC는 해당 환경에 맞게 입력하셔야 합니다!!)


395일 이상 도메인 환경의 Windows로 접속하지 않은 컴퓨터 개체 (SN19SA165)가 삭제되어 도메인에서 찾을 수 없다는 결과를 확인할 수 있습니다.
본 포스팅은 아래 링크의 자료를 참고하여 작성하였습니다.
https://woshub.com/how-to-find-blocked-disabled-or-inactive-objects-in-ad-using-search-adaccount/
How to Find Inactive Computers and Users in Active Directory with PowerShell? | Windows OS Hub
Quite an often task of an Active Directory administrator is to make a list of disabled or inactive user and/or computer accounts. You can use both saved LDAP queries in…
woshub.com
'Active Directory' 카테고리의 다른 글
| [MS AD] AD Server 읽기 전용 사용자 생성하기 (0) | 2023.11.10 |
|---|---|
| [MS AD] AD에서 비활성화된 컴퓨터 개체 (Disabled Computer Object) 찾기 (+OU이동, 삭제) (0) | 2023.06.20 |
| [MS AD] UPN 접미사 추가하기 (0) | 2023.05.23 |
| [MS AD] 로그온 스크립트 GPO 배포하기 (0) | 2023.05.08 |
| [MS AD] Domain Controller간의 동기화 시간을 실시간으로 변경하기 (0) | 2023.05.02 |