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

基于Active Directory组成员批量设置preferredLanguage报错求助

AD用户preferredLanguage属性批量修改问题解决

错误原因

Get-AdGroupMember返回的是AD对象数组(可能包含用户、嵌套组等),而Get-ADUser的Identity参数仅支持单个用户标识(如SamAccountName、DistinguishedName),无法直接接收数组类型,因此触发参数转换错误。

修正方案

方案1:管道链式处理(推荐)

直接通过管道传递筛选后的用户对象,避免数组传递问题:

# 筛选组内用户并批量修改属性
Get-AdGroupMember -Identity "AD-Group-UK" | 
    Where-Object { $_.objectClass -eq 'user' } | 
    Get-ADUser -Properties preferredLanguage | 
    Set-ADUser -Replace @{preferredLanguage = "en"}
  • 用Where-Object过滤掉组内的嵌套组,只保留用户对象
  • 管道自动逐个传递用户对象给Get-ADUser,无需手动遍历

方案2:遍历数组处理

如果需要先存储用户列表再操作,可通过循环逐个处理:

# 获取组内用户并存储
$Users_UK = Get-AdGroupMember -Identity "AD-Group-UK" | Where-Object { $_.objectClass -eq 'user' }

# 遍历修改每个用户的属性
foreach ($user in $Users_UK) {
    Get-ADUser $user.SamAccountName -Properties preferredLanguage | 
        Set-ADUser -Replace @{preferredLanguage = "en"}
}
  • 提取用户的SamAccountName作为Get-ADUser的唯一标识,避免对象类型不匹配

注意事项

  • 执行脚本的账号需具备修改AD用户属性的权限
  • 若组内用户数量较多,建议添加Start-Sleep -Milliseconds 100到循环内,降低域控负载
  • preferredLanguage标准格式为语言-地区(如en-GB),仅写en也可被多数系统识别,但部分场景可能需要完整格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:46:10