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

PowerShell脚本批量更新特定OU中AD用户邮箱属性问题求助

PowerShell脚本批量更新特定OU中AD用户邮箱属性问题求助

你好,我来帮你分析下这个问题~

你的需求是批量修改特定OU下AD用户的邮箱属性,让邮箱格式变成samaccountname@domain.com,但现在脚本执行后只得到了@domain.com,其实问题不是$($_.samaccountname)的语法错了,而是管道作用域的问题。

直接把Get-ADUser的结果管道到Set-ADUser时,Set-ADUser的-email参数里的$_并没有指向管道传递过来的用户对象——$_在这里处于错误的作用域,没办法正确获取到每个用户的SamAccountName属性,所以最终只拼接了@domain.com。

解决方法很简单,用ForEach-Object来遍历每个用户,这样$_就能正确指代当前循环的AD用户对象了,修改后的脚本如下:

Get-ADUser -Filter * -SearchBase "OU=Test,OU=People,DC=ad,DC=domain,DC=com" | ForEach-Object {
    Set-ADUser $_ -Email "$($_.SamAccountName)@domain.com"
}

如果担心修改出错,你可以先执行下面的命令预览预期的邮箱格式,确认没问题再执行修改:

Get-ADUser -Filter * -SearchBase "OU=Test,OU=People,DC=ad,DC=domain,DC=com" | Select-Object SamAccountName, @{Name="预期邮箱"; Expression={"$($_.SamAccountName)@domain.com"}}

这样就能看到每个用户对应的邮箱是否符合你的预期啦~

备注:内容来源于stack exchange,提问作者Vidarsskjalf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:38:05