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

如何在Active Directory中批量映射用户ID到邮箱并输出到单个文件

批量将AD用户ID映射到邮箱并追加到文件的问题

我需要在Active Directory(AD)中将多个用户ID映射到对应的邮箱地址,把结果追加到一个txt文件,最终生成包含所有邮箱的列表。目前单个用户的查询命令可以正常输出邮箱:

$user= testID
Get-ADUser $user -server ml -Properties * | Select-Object mail

但尝试批量处理时,每次循环都会覆盖文件内容,无法实现追加:

$multiple_users = "testID1", "testID2", "testID3"
foreach ($multiple_user in $multiple_users){
    Get-ADUser $multiple_user -server ml -Properties * | Select-Object mail > ID_to_email.txt
}

需要解决这个问题,实现结果追加到文件。


解决方案

1. 改用追加运算符实现循环追加

PowerShell中>是覆盖写入,>>才是追加写入。修改循环内的输出逻辑,同时优化属性查询(避免加载所有属性提升效率):

$multiple_users = "testID1", "testID2", "testID3"
foreach ($multiple_user in $multiple_users){
    # 只加载需要的mail属性,而非所有属性
    Get-ADUser $multiple_user -server ml -Properties mail | 
        # 提取纯邮箱字符串,而非对象格式
        Select-Object -ExpandProperty mail >> ID_to_email.txt
}

2. 无循环批量查询(更高效)

Get-ADUser支持直接接收用户ID数组,一次性完成所有查询,再统一输出,比循环效率更高:

$multiple_users = "testID1", "testID2", "testID3"
Get-ADUser -Identity $multiple_users -server ml -Properties mail | 
    Select-Object -ExpandProperty mail | 
    # 首次写入去掉-Append,追加到已有文件保留该参数
    Out-File -FilePath ID_to_email.txt -Append

3. 过滤空邮箱(可选)

如果部分用户没有配置邮箱,可以过滤掉空值,避免文件出现空行:

$multiple_users = "testID1", "testID2", "testID3"
Get-ADUser -Identity $multiple_users -server ml -Properties mail | 
    Where-Object { $_.mail -ne $null } |
    Select-Object -ExpandProperty mail | 
    Out-File -FilePath ID_to_email.txt -Append

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:36:17