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

PowerShell查询AD用户ExtensionAttribute1日期计算错误求助

解决AD用户extensionAttribute1日期筛选不准确的问题

问题根源

你当前的错误是把日期转换成dd-MM-yyyy格式的字符串进行比较,这种字符串的比较是按字符顺序而非日期逻辑。比如"30-09-2022"字符串比"27-08-2022"大,但实际这个日期是在90天范围内的,不该被筛选出来,导致结果包含不符合要求的用户。

修正方案

不要将基准日期转为字符串,保持DateTime类型,同时把用户的extensionAttribute1字符串转为DateTime后再做日期比较:

# 获取90天前的日期,保持DateTime类型
$90DaysAgo = (Get-Date).AddDays(-90)

# 查询所有启用且有extensionAttribute1的AD用户,再过滤日期符合条件的
Get-ADUser -Properties ExtensionAttribute1 -Filter { Enabled -eq $true -and ExtensionAttribute1 -like "*" } | 
    Where-Object {
        # 尝试将extensionAttribute1转换为指定格式的DateTime
        $attrDate = $null
        if ([DateTime]::TryParseExact($_.ExtensionAttribute1, "dd-MM-yyyy", $null, [System.Globalization.DateTimeStyles]::None, [ref]$attrDate)) {
            # 筛选出extensionAttribute1日期早于90天前的用户
            $attrDate -lt $90DaysAgo
        }
        else {
            # 转换失败的用户直接跳过(可根据需求调整处理逻辑)
            $false
        }
    }

说明

  1. 保持$90DaysAgo为DateTime类型,确保日期比较的逻辑正确性
  2. 使用TryParseExact安全转换extensionAttribute1的字符串日期,避免格式错误导致脚本报错
  3. 先通过AD Filter获取启用且有extensionAttribute1的用户,再在客户端过滤日期,因为AD原生Filter无法直接处理字符串转日期的操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:30:50