【发布时间】:2022-01-19 09:16:03
【问题描述】:
我想根据 CSV 文件头值替换 AD 属性“userPrincipalName”值 这是 csv 文件(group.csv)包含的内容
sAMAccountName
--------------
test.user1
test.user2
在脚本下方
$data = Import-Csv -Path .\group.csv -Header 'sAMAccountName'
foreach($user in $data){
Get-ADUser -Filter {sAMAccountName -eq "$($user.sAMAccountName)"} | Set-ADUser -Replace @{userPrincipalName="$($user.sAMAccountName)@RES.GROUP"}
}
这里我想用 csv 文件中的 sAMAccountName 的值替换 AD 属性“userPrincipalName”,例如 sAMAccountName@RES.GROUP
这个脚本不起作用,有人可以纠正它吗?
【问题讨论】:
-
这个脚本不起作用.. 为什么不呢?错误信息?解释会发生什么。看起来您的 csv 已经有一个标题,那么为什么要使用参数
-Header再次添加它呢?-Filter应该是一个字符串,而不是一个脚本块,所以"SamAccountName -eq '$($user.sAMAccountName)'" -
它应该遍历csv文件中的每个“sAMAccountName”,在foreach中它应该通过过滤来获取用户,并将AD中的“userPrincipalName”属性值替换为sAMAccountName@RES.GROUP,这意味着userPrincipalName=sAMAccountName@RES.GROUP 例如它从循环中获取 test.user1 并将该用户的属性(userPrincipalName)值设置为 test.user1@RES.GROUP,这意味着 AD 中“userPrincipalName”属性的值将是“test.userPrincipalName”。用户“test.user1”的 user1@RES.GROUP”
-
是的,您的问题很清楚您的目标是什么。我在问你你的代码是否产生错误,如果是,你需要显示它们。我还建议了两种可能的修复方法。你试过了吗?
-
是的,先生,我尝试了您显示的那些修复程序,但没有任何反应,它没有显示错误,但同时它没有按预期工作,属性“userPrincipalName”不是替换
-
如果我删除 -Header 'sAMAccountName' 并运行脚本,我收到此错误警告:未指定一个或多个标头。以“H”开头的默认名称已用于代替任何缺失的标题。 Get-ADUser : 无法识别搜索过滤器 At line:4 char:5 + Get-ADUser -Filter "sAMAccountName -eq '$($user.sAMAccountName)'" ... + ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-ADUser ], ADException + FullyQualifiedErrorId : ActiveDirectoryServer:8254,Microsoft.ActiveDirectory.Management.Commands.GetADUser
标签: powershell replace attributes get-aduser