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

如何用PowerShell提取AD组内活跃未过期用户的姓名与邮箱?

解决AD组活跃成员筛选的PowerShell脚本问题

原脚本的核心问题

  1. 邮箱匹配逻辑错误:$_.mail -like '@domain.com'缺少通配符*,只会匹配邮箱完全等于@domain.com的用户,无法筛选指定域名下的正常邮箱。
  2. 逻辑运算符优先级混乱:-and优先级高于-or,原条件被解析为(邮箱匹配 且 过期日期在未来) 或者 (无过期日期 且 账户启用),不符合“同时满足账户启用、邮箱匹配、未过期”的需求。
  3. 括号使用不当:添加括号时未正确包裹过期日期的判断单元,导致条件逻辑失效,无结果返回。

修正后的脚本

Get-ADGroupMember 'Employees' |
  Get-ADUser -Properties Enabled, EmailAddress, AccountExpirationDate |
  Where-Object {
    $_.EmailAddress -like '*@domain.com' -and
    $_.Enabled -eq $true -and
    ($_.AccountExpirationDate -eq $null -or $_.AccountExpirationDate -gt (Get-Date))
  } |
  Select-Object GivenName, Surname, EmailAddress, AccountExpirationDate |
  Export-Csv -Path "export.csv" -NoTypeInformation

关键修正点说明

  • 邮箱匹配修正:将@domain.com改为*@domain.com,用通配符匹配所有domain.com域名下的邮箱。
  • 逻辑条件梳理:明确筛选逻辑为同时满足:
    • 邮箱属于指定域名
    • 账户处于启用状态
    • 账户无过期日期 或 过期日期在未来(用括号包裹这两个子条件,确保-or仅作用于过期日期的判断)
  • 属性名称统一:用EmailAddress替代mail,和Get-ADUser获取的属性名称保持一致,避免歧义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:30:42