如何合并两个Get-ADUser筛选条件查询AD非活跃用户?
合并AD用户筛选条件的正确写法
首先纠正你原代码里的一个小错误:$TimeRange 那行的变量名写错了,应该是 $NumberOfDays(多了个s),不然会因变量未定义报错。
要同时满足60天未活跃和用户名以f_开头这两个条件,只需要在Get-ADUser的-Filter参数里用-and把两个条件合并即可。另外建议不要用-Properties *,只指定需要的属性(比如LastLogonTimeStamp),这样能提升查询效率。
完整代码如下:
# 设置非活跃天数阈值 $NumberOfDays = 60 # 计算时间范围:当前日期往前推60天 $TimeRange = (Get-Date).AddDays(-$NumberOfDays) # 合并两个筛选条件:60天未登录 且 用户名以f_开头 Get-ADUser -Filter { LastLogonTimeStamp -lt $TimeRange -and Name -like "f_*" } ` -Properties LastLogonTimeStamp, Name, SamAccountName | Format-Table Name, SamAccountName, @{Name='LastLogon'; Expression={[DateTime]::FromFileTime($_.LastLogonTimeStamp)}} -AutoSize
代码说明:
- 用
-and连接两个筛选条件,确保结果同时满足两个要求 - 显式指定所需属性,避免加载不必要的AD属性,加快查询速度
- 新增
LastLogon列,把AD存储的LastLogonTimeStamp(文件时间格式)转换成可读的日期时间 - 用
-AutoSize让表格列宽自动适配内容
内容的提问来源于stack exchange,提问作者Elham Khan
相关产品推荐
相关产品推荐

