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

如何为跨域Get-ADUser命令添加筛选获取用户密码过期日期

获取AD用户密码过期日期的方法

嗨,既然你已经能成功跨域执行Get-ADUser命令了,那添加密码过期日期的获取其实很简单——只需要指定对应的AD属性并做一点格式转换就行,因为这个属性默认不会被返回。

基础命令:获取单个用户的密码过期日期

直接在你的原有命令上加上-Properties参数指定计算属性,再转换时间格式:

Get-ADUser "username" -Server "abc.com" -Properties msDS-UserPasswordExpiryTimeComputed | 
    Select-Object Name, SamAccountName, 
        @{Name="PasswordExpiryDate"; Expression={
            # 把AD返回的文件时间戳转成可读日期
            [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")
        }}

关键细节解释

  • msDS-UserPasswordExpiryTimeComputed:这是AD的计算属性,它会自动计算用户密码的过期时间,不需要你手动结合密码策略和上次修改时间来推算。
  • 时间转换:这个属性返回的是Windows文件时间格式(从1601年开始的计时),所以必须用[datetime]::FromFileTime()转换成人类能看懂的日期时间。

进阶:处理“密码永不过期”的情况

如果用户的密码被设置为永不过期,msDS-UserPasswordExpiryTimeComputed会返回0,转换后会显示成1601年1月1日,我们可以在命令里加个判断优化输出:

Get-ADUser "username" -Server "abc.com" -Properties msDS-UserPasswordExpiryTimeComputed | 
    Select-Object Name, SamAccountName, 
        @{Name="PasswordExpiryDate"; Expression={
            if ($_."msDS-UserPasswordExpiryTimeComputed" -eq 0) {
                "Never Expires"
            } else {
                [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")
            }
        }}

扩展:筛选即将过期的用户

如果你想批量筛选出一段时间内密码要过期的用户(比如7天内),可以用-Filter参数:

Get-ADUser -Filter {msDS-UserPasswordExpiryTimeComputed -lt [datetime]::Now.AddDays(7)} -Server "abc.com" -Properties msDS-UserPasswordExpiryTimeComputed | 
    Select-Object Name, SamAccountName, 
        @{Name="PasswordExpiryDate"; Expression={
            if ($_."msDS-UserPasswordExpiryTimeComputed" -eq 0) {
                "Never Expires"
            } else {
                [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")
            }
        }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:30:16