我想根据 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
这个脚本不起作用,有人可以纠正它吗?
uj5u.com热心网友回复:
好的,由于您的评论显示 CSV 档案确实没有标题,我建议将代码更改为:
$data = Import-Csv -Path .\group.csv -Header 'sAMAccountName'
foreach($user in $data) {
$adUser = Get-ADUser -Filter "SamAccountName -eq '$($user.sAMAccountName)'" -ErrorAction SilentlyContinue
if ($adUser) {
$newUPN = '{0}@res.group' -f $user.sAMAccountName
$adUser | Set-ADUser -UserPrincipalName $newUPN
}
else {
Write-Warning "No user with SamAccountName '$($user.sAMAccountName)' could be found.."
}
}
这样,当找不到具有该 samaccountname 的用户时,档案中的任何错误都不会导致代码退出。相反,在这种情况下,您将看到有关它的警告,并且代码将继续处理其余资料。
值得一提的是,您可以-Server
在cmdletGet-ADUser
和Set-ADUser
cmdlet 上使用自变量,以确保使用相同的域服务器 (DC) 来设定新的 UPN。否则,您可以在一个 DC 上设定它,但正在查看另一个不会立即显示更改的 DC,因为服务器需要时间来同步。
uj5u.com热心网友回复:
伙计们非常感谢您的努力我得到了一个仅适用于个人用户的脚本,脚本如下
get-aduser -filter {samaccountname -eq "test.user1"} | set-aduser -replace @{userprincipalname="test.user1@RES.TEST.GROUP"}
这个脚本作业正常,但我想以某种方式为所有用户动态地制作它,我试图创建这个脚本
Get-ADUser -SearchBase "OU=Teams,OU=Prod,DC=RES,DC=TEST,DC=GROUP" -Filter {userPrincipalName -like "*@TEST.GROUP"} -Properties sAMAccountName | FT sAMAccountName | 输出档案 .\group.csv
$data = Import-Csv -Path .\group.csv -Header 'sAMAccountName' foreach($user in $data){ Get-ADUser -Filter "sAMAccountName -eq '$($user.sAMAccountName)'" | 设定 ADUser -替换 @{userPrincipalName="$($user.sAMAccountName)@RES.TEST.GROUP"} }
在此脚本中,我试图获取 AD 中“userPrincipalName”属性以 *@TEST.GROUP 结尾的所有用户,并将属性“userPrincipalName”替换为用户对应的“sAMAccountName”值
这是csv档案
不幸的是,我的脚本和您建议的脚本都没有按预期作业
而且,我还在下面尝试了这个脚本
$user = Import-Csv -Path .\group.csv -Header "sAMAccountName" Get-ADUser -Filter {userPrincipalName -like "*@TEST.GROUP"} | 设定 ADUser -替换 @{userPrincipalName="$($user.sAMAccountName)@RES.TEST.GROUP"}
它给出了一个错误:
Set-ADUser:操作失败,因为为添加/修改提供的 UPN 值在森林范围内不是唯一的 At line:2 char:121
- ... A.GROUP"} | Set-ADUser -Replace @{userPrincipalName="$($user.sAMAccou ...
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : NotSpecified: (CN=test user2,O...C=TEST,DC=GROUP:ADUser) [Set-ADUser], ADException
0 评论