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

如何解决PowerShell导出6个月非活跃用户CSV时邮箱字段为空?

解决AD未活跃用户脚本邮箱字段为空的问题

问题核心在于你获取AD用户对象时没有包含邮箱属性:PowerShell的AD模块Get-ADUser默认仅返回有限的基础属性(如Name、SamAccountName),邮箱地址对应的AD原生属性是mail,属于扩展属性,必须显式指定才能被获取到,否则遍历对象时自然读不到该字段的值。

解决方法:

  1. 在调用Get-ADUser时,通过-Properties参数显式指定要获取mail属性
  2. 在构造自定义对象时,直接用$_.mail赋值给EmailAddress字段

修改后的完整代码片段:

# 计算6个月前的时间戳(匹配LastLogon的文件时间格式)
$inactiveThreshold = (Get-Date).AddMonths(-6).ToFileTimeUtc()

# 获取过去6个月未活跃的AD用户,显式指定返回LastLogon和mail属性
$logons = Get-ADUser -Filter { LastLogon -lt $inactiveThreshold } -Properties LastLogon, mail

# 处理数据并导出CSV
$logons | ForEach-Object {
    [PSCustomObject]@{
        Name              = $_.Name
        SamAccountName    = $_.SamAccountName
        DistinguishedName = $_.DistinguishedName
        LastLogon         = [datetime]::FromFileTimeUtc($_.LastLogon).ToString('u')
        EmailAddress      = $_.mail
    }
} | Export-CSV "C:\Users\Me\Desktop\InactiveUsers.CSV" -NoTypeInformation

补充说明:

  • EmailAddress是AD用户对象的别名属性,对应原生属性mail,你也可以在-Properties里指定EmailAddress,之后用$_.EmailAddress赋值,效果一致
  • 你之前的四种写法均为空,本质是因为遍历的$_.对象中不存在mail或EmailAddress属性,必须先让Get-ADUser返回这些属性才能读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:00:25