본문 바로가기
Windows/PowerShell

PowerShell | 오랜 기간 로그인하지 않은 사용자 프로필 삭제하기 (예외 프로필 추가)

by 지혜를 탐구하는 오딘 2022. 11. 18.
728x90
반응형

(관련된 글)

그룹 정책 | 오랜 기간 로그인 하지 않은 사용자 프로필 삭제🔗

 

1. 개요

지난 글(그룹 정책 | 오랜 기간 로그인 하지 않은 사용자 프로필 삭제🔗)에서 오랜 기간 로그인하지 않은 사용자 프로필 삭제를 했습니다. 이 때 예외 없이 모두 삭제하기 때문에 예외를 주고 싶다면, 역시 스크립트로 해야합니다.

스크립트를 알아보겠습니다.

 

2. PowerShell 로 오랜 기간 로그인하지 않은 사용자 프로필 삭제하기

Function Delete_Old_User_Profile
(
    [Array] $Excluded_Users,
    [Int32] $Slept_days
)
{
    # difference from today
    $difference = (Get-Date).AddDays(-$Slept_days)

    # Select Users who slept for $Slept_days 
    $Local_Profiles = Get-WMIObject -class Win32_UserProfile
    $Local_Profiles = $Local_Profiles | Where-Object { ( !$_.Special ) `
                                                        -and ( !$_.Loaded ) `
                                                        -and ( $_.ConvertToDateTime($_.LastUseTime) -lt $difference ) }
    
    # Remove selected $LocalProfiles 
    foreach ($Local_Profile in $Local_Profiles)
    {
        if (!($Excluded_Users -like $Local_Profile.LocalPath.Replace("C:\Users\","")))
        {        
            $Local_Profile | Remove-WmiObject	# 프로필 삭제

            $temp = "$($Local_Profile.LocalPath) ($($Local_Profile.LastUseTime)) profile deleted."
            Write-Host $temp -ForegroundColor Red
        }
    }
}
## End Delete_Old_User_Profile ###################################################################



$Excluded_Users = @( "Administrator", "Odin")	# 예외 사용자 이름
$Slept_days = 50		# ~일 동안 로그인 하지 않은 사용자

Delete_Old_User_Profile $Excluded_Users $Slept_days

상세하게 설명을 써놓은 것 같습니다. 위 코드를 실행하면 되겠습니다.

 

 

 

 

(관련된 글)

그룹 정책 | 오랜 기간 로그인 하지 않은 사용자 프로필 삭제🔗

 

(출처)

https://stackoverflow.com/questions/72868004/windows-user-deletion-script

 

 

728x90
반응형

댓글