Search-ADAccount :: 尋找不活動、停用或過期的帳戶

Search-ADAccount :: 尋找不活動、停用或過期的帳戶

Search-ADAccountcmdlet 具有開關-AccountDisabled,-AccountExpired-AccountInactive;其結果可能既不是互相排斥的,也不是互相包容的。

即,如果我們的時間跨度為 -90 天,昨天被禁用但僅閒置 1 週的帳戶可能不會顯示為已停用。相反,尚未停用但一段時間未使用的帳戶將顯示為不活動但未停用。

有沒有辦法使用這些開關列出所有已停用、過期的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 也會為空,因為管理員不常使用該設定。在對日期進行有意義的比較之前,您需要檢查它們是否不為空。

如果您想包含從未登入的使用者帳戶,只需刪除 LastLogonDate 上 $Null 的檢查即可...但這意味著您將看到可能是昨天創建的帳戶,只是還沒有機會登入。在這種情況下,為了補償,請新增檢查以WhenCreated -LT (Get-Date).AddDays(-90)確保僅取得 90 天前已建立但從未登入的帳戶。

要真正回答有關Search-ADAccountcmdlet 的問題...不,請使用不同的 cmdlet,這些開關是互斥的。

相關內容