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

如何在Get-ADUser命令中转换Double类型的生日属性extensionAttribute1

在Get-ADUser命令中直接转换Double类型的生日属性

嘿,这个需求我刚好处理过,咱们可以用PowerShell的计算属性直接在命令流水线里完成日期转换,不用额外写循环处理结果,既简洁又高效。

完整命令示例

Get-ADUser -Filter {(extensionAttribute4 -like "Aktiv") -and (Enabled -eq $true)} `
    -SearchBase "OU=*****,OU=*****,OU=*****,DC=*****,DC=****" `
    -Properties name, mail, extensionAttribute1 | 
Select-Object name, mail, 
    @{
        Name = 'Birthday'
        Expression = {
            # 先判断属性是否有值,避免空值报错
            if ($null -ne $_.extensionAttribute1) {
                # 替换这里的$baseDate为你实际使用的基准日期(比如你之前代码里的$date变量值)
                $baseDate = [DateTime]"1900-01-01"
                $baseDate.AddDays($_.extensionAttribute1).ToString("dd-MM-yyyy")
            }
            # 如果属性为空,这里会默认返回$null,也可以改成"未设置"之类的提示文本
        }
    }

关键部分解释

  1. 精简Properties参数:
    别用-Properties *,只指定你需要的属性(name, mail, extensionAttribute1),这样能减少AD查询的负载,加快命令执行速度。

  2. 计算属性的用法:
    在Select-Object里通过@{Name='属性名'; Expression={脚本块}}定义自定义属性:

    • Name是最终输出里的列名(这里叫Birthday,你可以改成自己喜欢的名字)
    • Expression里的脚本块负责完成转换逻辑:
      • 先判断extensionAttribute1是否不为空,防止空值调用AddDays时报错
      • 代入你的基准日期$baseDate,调用AddDays方法加上存储的天数,最后格式化为dd-MM-yyyy的字符串

额外优化方案(如果是OLE自动化日期)

如果你的extensionAttribute1存储的是OLE自动化日期(比如Excel常用的Double类型日期),可以直接用PowerShell内置的FromOADate方法,不用手动指定基准日期,更准确:

@{
    Name = 'Birthday'
    Expression = {
        if ($null -ne $_.extensionAttribute1) {
            [DateTime]::FromOADate($_.extensionAttribute1).ToString("dd-MM-yyyy")
        }
    }
}

这样执行命令后,就能直接得到已经转换好格式的生日数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:33:14