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

如何修改PowerShell命令让AD用户邮箱输出为可直接匹配的简单数组

如何将AD查询结果转为纯邮箱字符串数组?

我在客户的AD环境中运行以下PowerShell命令:

$members=Get-ADGroupMember -Identity "my ad group" -Recursive | % {Get-ADUser -Identity $_.distinguishedName -Properties * | ? {$_.enabled -eq $true} | select-object emailaddress}

$members

emailaddress
------------
john.bob@org.com
pete.smith@org.com

该命令输出看似CSV格式,但实际是包含emailaddress属性的对象数组。尝试搜索该变量时,仅能通过以下方式匹配:

$members -like "@{emailaddress=john.bob@org.com}"
@{emailaddress=john.bob@org.com}

而我希望能直接使用如下语法匹配邮箱地址:

$members -like "john.bob@org.com"
john.bob@org.com

因此需要修改初始命令,让输出成为仅包含邮箱地址的简单字符串数组,请问该如何实现?


解决方案

只需要在Select-Object后添加-ExpandProperty参数,直接提取emailaddress属性的字符串值,而非返回包含该属性的对象。修改后的命令如下:

$members = Get-ADGroupMember -Identity "my ad group" -Recursive | 
    ForEach-Object { Get-ADUser -Identity $_.distinguishedName -Properties EmailAddress } | 
    Where-Object { $_.Enabled -eq $true } | 
    Select-Object -ExpandProperty EmailAddress

额外优化说明:

  • 无需用Properties *加载所有AD用户属性,明确指定EmailAddress可大幅提升查询效率
  • 使用ForEach-Object完整名称比别名%可读性更强(若习惯别名也可保留)
  • 修改后$members会成为纯字符串数组,此时直接执行$members -like "john.bob@org.com"即可匹配目标邮箱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:55:17