使用PowerShell从文本文件导入用户批量添加SMTP代理地址
批量向AD用户添加Proxy Addresses脚本实现
修改后的完整脚本
# 读取文本文件中的用户名列表,过滤空行和无效条目 $usernames = Get-Content .\users.txt -Trim | Where-Object { $_ -ne '' } # 逐个处理每个用户 foreach ($user in $usernames) { try { # 构造要添加的代理地址数组 $proxyAddresses = @( "smtp:$user@example.com", "smtp:$user@marketing.example.com" ) # 执行AD用户修改操作 Set-AdUser -Identity $user -Add @{ProxyAddresses = $proxyAddresses} -ErrorAction Stop Write-Host "✅ 成功为用户 $user 添加代理地址" -ForegroundColor Green } catch { Write-Host "❌ 处理用户 $user 失败: $_" -ForegroundColor Red } }
关键部分说明
- 读取用户列表:
Get-Content .\users.txt读取文本文件内容,-Trim去除每行首尾空格,Where-Object { $_ -ne '' }过滤掉空行,避免因无效条目报错。 - 循环处理:通过
foreach遍历每个用户名,实现批量操作。 - 代理地址构造:直接用数组形式定义代理地址,比原脚本的字符串拆分更直观,减少语法错误风险。
- 错误捕获:
try/catch块捕获执行过程中的异常(如用户不存在、权限不足等),并输出明确的错误信息,方便排查问题。
使用注意事项
- 确保文本文件路径正确:如果
users.txt不在脚本同一目录,需填写绝对路径(如C:\ADScripts\users.txt)。 - 权限要求:运行脚本的账号需要具备修改AD用户属性的权限。
- 域名替换:根据实际需求修改
@example.com和@marketing.example.com为你的业务域名。
内容的提问来源于stack exchange,提问作者zisforzubaz
相关产品推荐
相关产品推荐

