Search-ADAccount :: 비활성, 비활성화 또는 만료된 계정 찾기

Search-ADAccount :: 비활성, 비활성화 또는 만료된 계정 찾기

cmdlet 에는 Search-ADAccount스위치 -AccountDisabled-AccountExpired; -AccountInactive그 결과는 상호 배타적이거나 포괄적일 수 없습니다.

즉, 어제 비활성화되었지만 1주일 동안만 비활성화된 계정은 기간이 -90일인 경우 비활성화된 것으로 표시되지 않을 수 있습니다. 반대로, 아직 비활성화되지 않았지만 한동안 사용되지 않은 계정은 비활성 상태로 표시되지만 비활성화되지는 않습니다.

OR이 스위치를 사용하여 비활성화되고 만료된 비활성 계정을 모두 나열하는 방법이 있습니까 ? 아니면 세 개의 쿼리를 실행한 다음 | select * -unique중복된 쿼리를 제거해야 합니까?

답변1

내가 할 방법은 다음과 같습니다.

Get-ADUser -Filter * -Properties Enabled, AccountExpirationDate, LastLogonDate | ? { `
($_.Enabled -EQ $False) -OR `
($_.AccountExpirationDate -NE $NULL -AND $_.AccountExpirationDate -LT (Get-Date)) -OR `
($_.LastLogonDate -NE $NULL -AND $_.LastLogonDate -LT (Get-Date).AddDays(-90)) }

AD를 한 번 호출하면 필요한 속성만 가져옵니다. 비활성화되었거나 만료되었거나(일반적이지 않은 설정) "비활성"인 모든 사용자를 포함합니다.

사용자 계정이 생성되었지만 사용자가 로그온한 적이 없는 경우 LastLogonDate는 null이 됩니다.

AccountExpirationDate는 관리자가 해당 설정을 자주 사용하지 않기 때문에 대부분의 경우 null입니다. 날짜에 대한 의미 있는 비교를 수행하려면 먼저 해당 날짜가 null이 아닌지 확인해야 합니다.

로그온한 적이 없는 사용자 계정을 포함하려면 LastLogonDate에서 $Null 확인을 제거하기만 하면 됩니다. 이는 어제 생성되어 아직 로그인할 기회가 없었던 계정이 표시된다는 의미입니다. .. 이 경우 보상하려면 WhenCreated -LT (Get-Date).AddDays(-90)90일 전에 생성되었지만 로그온한 적이 없는 계정만 가져오도록 확인 표시를 추가하세요.

cmdlet 에 관한 질문에 실제로 대답하려면 Search-ADAccount... 아니요, 다른 cmdlet을 사용하세요. 해당 스위치는 상호 배타적입니다.

관련 정보