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

如何用PowerShell获取AD用户过期日期及经理姓名并导出CSV

PowerShell AD组成员信息查询脚本扩展方案

一、账号过期日期问题解决

问题分析

  • 尝试1中直接使用$user.accountExpires为空,原因是accountExpires属于AD扩展属性,默认不会被Get-ADUser返回,且该属性存储的是64位整数时间戳,即使返回也需要转换为可读日期格式。
  • 尝试2的参数绑定错误,是因为脚本存在语法缺陷(比如Get-ADUser参数行未完整闭合,或后续自定义对象定义缺少终止符号}),导致PowerShell误将后续代码解析为Get-ADUser的位置参数。

正确处理方式

使用PowerShell预转换的AccountExpirationDate属性(无需手动转换时间戳),在Get-ADUser的-Properties中明确指定该属性,并处理账号永不过期的场景:

  • 当AccountExpirationDate为$null时,说明账号无过期限制,可显示“永不过期”
  • 若有过期日期,格式化为可读性强的字符串

二、经理姓名提取问题解决

问题分析

$user.manager返回的是经理账号的完整辨别名(DN),直接输出无法满足需求。可靠的提取方式有两种:

  1. 从DN字符串拆分:通过-split分割DN,提取CN=后的姓名部分,但依赖DN格式规范性,容错性差。
  2. 查询AD获取姓名:用经理的DN作为参数调用Get-ADUser,获取其Name属性,这种方法更可靠,同时需要处理经理账号不存在的异常情况。

完整修正脚本

$ou = 'distinguishedName of my OU'
$outputPath = 'C:\Users\Me\Desktop\MyFile.csv'

Get-ADGroup -Filter * -SearchBase $ou -Properties 'Description' | ForEach-Object {
    $group = $_
    $members = Get-ADGroupMember $_ | Where-Object { $_.objectClass -eq 'user' }
    foreach($member in $members) {
        # 获取用户所需扩展属性
        $user = Get-ADUser $member -Properties EmailAddress, AccountExpirationDate, Manager
        
        # 处理账号过期日期
        $expiryDate = if ($user.AccountExpirationDate) {
            $user.AccountExpirationDate.ToString('yyyy-MM-dd HH:mm:ss')
        } else {
            '永不过期'
        }

        # 处理经理姓名,捕获查询异常
        $managerName = if ($user.Manager) {
            try {
                (Get-ADUser $user.Manager -Properties Name).Name
            } catch {
                '经理账号不存在'
            }
        } else {
            '无'
        }

        [pscustomobject]@{
            SamAccountName        = $user.SamAccountName
            Name                  = $user.Name
            EmailAddress          = $user.EmailAddress ?? '无邮箱'
            AccountExpirationDate = $expiryDate
            ManagerName           = $managerName
            GroupName             = $group.Name
            GroupDescription      = $group.Description ?? '无描述'
        }
    }
} | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8

脚本关键点说明

  • 明确指定Get-ADUser需要返回的扩展属性,避免遗漏
  • 对空值(邮箱、组描述)和异常场景(经理账号不存在)做了默认值填充,提升CSV可读性
  • 对过期日期做了格式化处理,区分永不过期的情况

内容的提问来源于stack exchange,提问作者S.Mahmood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:45:01