拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 从csv档案头值替换AD属性值

从csv档案头值替换AD属性值

白鹭 - 2022-01-25 2085 0 0

我想根据 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-ADUserSet-ADUsercmdlet 上使用自变量,以确保使用相同的域服务器 (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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *