You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询特定日期后创建的AD域Unix计算机的PowerShell脚本无返回结果

PowerShell查询AD指定日期后创建的Unix类计算机无结果问题修复

核心问题原因

  • 原脚本使用Get-ADComputer -Filter '*' -Properties *先拉取域内所有计算机的全部属性,再在本地做过滤,域内设备量超过千级时就会出现查询超时、执行卡顿无返回的问题
  • 直接用字符串格式的日期和AD返回的DateTime类型whenCreated属性做比较,类型不匹配导致判断逻辑失效,无法筛选出符合条件的结果

修复后脚本

# 显式转换日期为DateTime类型,确保比较逻辑生效
$targetDate = [DateTime]::Parse('2018-11-07 14:41:59.000')

# 过滤逻辑直接在AD侧执行,仅拉取需要用到的属性,大幅提升查询效率
Get-ADComputer -Filter {CanonicalName -like '*Unix*' -and whenCreated -gt $targetDate} `
-Properties OperatingSystem,OperatingSystemVersion,ipv4Address,Created,whenCreated,Deleted,whenChanged,Modified,Description,ServicePrincipalNames,DisplayName,Location,DistinguishedName,DNSHostName |
Select-Object Name,OperatingSystem,OperatingSystemVersion,ipv4Address,Created,whenCreated,Deleted,whenChanged,Modified,Description,
@{Label="ServicePrincipalNames";Expression={$_.ServicePrincipalNames -join ";" }},DisplayName,Location,DistinguishedName,DNSHostName

无结果排查方案

如果修改后仍无返回,按以下步骤验证:

  1. 临时去掉Filter中的-and whenCreated -gt $targetDate条件,执行查询看是否返回Unix类计算机,确认CanonicalName中的关键字匹配正确
  2. 取查询返回的某台Unix计算机的whenCreated值和目标日期对比,确认确实存在符合时间条件的设备
  3. 域内设备量级超过十万级的情况下,可以追加-SearchBase "OU=xxx,DC=xxx,DC=xxx"参数指定查询的OU范围,进一步缩小查询范围提升速度

内容的提问来源于stack exchange,提问作者Leo Torres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:36:02