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

如何从用户名单批量获取AD账户到期日期并导出至CSV?

批量查询AD用户信息并导出CSV的PowerShell脚本

当然可以实现批量查询并导出的需求,下面针对TXT和CSV两种输入文件格式,分别提供对应的脚本:

一、从TXT文件读取用户名单

要求:TXT文件中每行仅包含一个用户名,空行会被脚本自动过滤。

# 替换为你的输入TXT文件路径
$inputTxtPath = "C:\data\users.txt"
# 替换为你的输出CSV文件路径
$outputCsvPath = "C:\output\ADUsers_Expiry_Info.csv"

# 读取TXT文件并过滤空行
$userList = Get-Content $inputTxtPath | Where-Object { $_ -match '\S' }

$results = @()

foreach ($user in $userList) {
    # 查询AD用户,仅加载需要的属性以提升效率
    $adUser = Get-ADUser -Identity $user -Properties AccountExpirationDate -ErrorAction SilentlyContinue
    
    if ($adUser) {
        $resultObj = [PSCustomObject]@{
            SamAccountName        = $adUser.SamAccountName
            DisplayName           = $adUser.DisplayName
            AccountExpirationDate = $adUser.AccountExpirationDate
        }
        $results += $resultObj
    }
    else {
        # 记录未找到的用户
        $results += [PSCustomObject]@{
            SamAccountName        = $user
            DisplayName           = "用户未找到"
            AccountExpirationDate = $null
        }
    }
}

# 导出结果到CSV,避免类型信息并指定UTF8编码防止中文乱码
$results | Export-Csv -Path $outputCsvPath -NoTypeInformation -Encoding UTF8

二、从CSV文件读取用户名单

要求:CSV文件需包含用于识别用户的列(示例中使用Username列,若你的列名不同需对应修改)。

# 替换为你的输入CSV文件路径
$inputCsvPath = "C:\data\users.csv"
# 替换为你的输出CSV文件路径
$outputCsvPath = "C:\output\ADUsers_Expiry_Info.csv"

# 读取CSV文件
$userList = Import-Csv $inputCsvPath

$results = @()

foreach ($userEntry in $userList) {
    # 若CSV列名不是Username,修改此处为实际列名(如UserID)
    $user = $userEntry.Username
    
    $adUser = Get-ADUser -Identity $user -Properties AccountExpirationDate -ErrorAction SilentlyContinue
    
    if ($adUser) {
        $resultObj = [PSCustomObject]@{
            SamAccountName        = $adUser.SamAccountName
            DisplayName           = $adUser.DisplayName
            AccountExpirationDate = $adUser.AccountExpirationDate
        }
        $results += $resultObj
    }
    else {
        $results += [PSCustomObject]@{
            SamAccountName        = $user
            DisplayName           = "用户未找到"
            AccountExpirationDate = $null
        }
    }
}

$results | Export-Csv -Path $outputCsvPath -NoTypeInformation -Encoding UTF8

注意事项

  • 运行脚本前需确保已加载ActiveDirectory模块,可执行Import-Module ActiveDirectory完成加载
  • 需拥有查询AD用户的权限
  • 脚本中使用-Properties AccountExpirationDate替代原命令的-Property *,仅加载需要的属性,大幅提升查询效率
  • 导出CSV时指定-Encoding UTF8可避免中文显示乱码问题

内容的提问来源于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.22 18:57:39