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

PowerShell中无法将UserPrincipalName批量转为小写的问题求助

解决方法

你的脚本错误原因是在Set-ADUser的-replace哈希表中,无法直接引用管道对象的属性方法,PowerShell会把userPrincipalName.ToLower当作普通字符串解析,而非调用AD用户对象的方法。

正确的写法需要通过ForEach-Object遍历每个用户对象,单独处理UPN的小写转换:

Get-ADUser -Filter * -SearchBase "OU=[REDACTED]" -Properties userPrincipalName | ForEach-Object {
    # 获取当前用户的UPN并转为小写
    $lowercaseUPN = $_.userPrincipalName.ToLower()
    # 将转换后的UPN应用到用户对象
    $_ | Set-ADUser -Replace @{userPrincipalName = $lowercaseUPN}
}

关键说明

  • 用$_代表当前管道中的AD用户对象,通过$_.userPrincipalName才能正确获取到每个用户的UPN值。
  • 添加-Properties userPrincipalName确保Get-ADUser返回该属性(虽然默认包含,但显式指定更稳妥)。
  • 建议先注释掉Set-ADUser行,用Write-Output $lowercaseUPN测试转换结果,确认无误后再执行修改操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:02:06