Get-ADUser查询禁用AD用户时无法按LastLogonDate排序的问题
问题原因及修复方案
- 现有过滤条件仅会查询单个指定用户,单条结果不存在排序效果
你当前命令的Filter参数写死了samaccountname -eq '$user',每次仅返回匹配这一个账号名的用户对象,单条结果自然无法体现排序逻辑。如果要查询所有禁用的AD用户,需要删除该过滤条件。 - 部分从未登录过的账号
LastLogonDate属性为空值,排序时空值会默认排在最前,容易被误认为排序未生效 -Properties *会拉取账号的全部AD属性,冗余查询不仅降低执行效率,极端情况下还可能出现属性拉取不完整的问题,建议明确指定需要的属性。
修正后的命令
查询所有禁用AD用户,按最后登录日期升序排序:
Get-ADUser -Filter "enabled -eq '$False'" -Properties samaccountname, displayname, emailaddress, LastLogonDate | Select-Object samaccountname, displayname, emailaddress, LastLogonDate | Sort-Object -Property LastLogonDate
如果需要按最后登录日期倒序(最近登录的排在最前),可以给Sort-Object加-Descending参数:
Get-ADUser -Filter "enabled -eq '$False'" -Properties samaccountname, displayname, emailaddress, LastLogonDate | Select-Object samaccountname, displayname, emailaddress, LastLogonDate | Sort-Object -Property LastLogonDate -Descending
如果需要过滤掉从未登录过的账号(排除LastLogonDate为空的结果),可以在管道中加过滤条件:
Get-ADUser -Filter "enabled -eq '$False'" -Properties samaccountname, displayname, emailaddress, LastLogonDate | Where-Object { $_.LastLogonDate -ne $null } | Select-Object samaccountname, displayname, emailaddress, LastLogonDate | Sort-Object -Property LastLogonDate
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

