Foreach 广告用户添加自己的属性值

Foreach ad-user add it's own attribute values

我想创建一个 PowerShell 脚本,根据 sAMAccountName 向 AD 属性 aaccountRoles 添加批量值。

这个概念是这样的:

sAMAccountName  aaccountRoles
test.user1      value1,value2,value3
test.user2      value1,value2,value3

$data = Import-Csv -Path .\file.csv -Header "sAMAccountName", "aaccountRoles"
foreach($user in $data){ 
    Get-ADUser -Filter "sAMAccountName -eq '$($user.sAMAccountName)'" | ForEach {Set-ADUser -Identity $_.sAMAccountName -Add @{aaccountRoles="$($user.aaccountRoles)"}}
}

我已经在 PowerShell 中创建了上述脚本,但它似乎不起作用。

如果我像这样保存 csv 文件: csv 文件:my csv file 上面的脚本 有效 ,但它只为每个用户添加第一个值,而我必须从 csv 文件

添加“aaccountRoles”属性的所有值

Import-Csv 假定正常 comma-separated 值。所以当它看到这个时:

sAMAccountName  aaccountRoles

它假定所有值都是一个值,因为它们之间没有逗号分隔。它应该是这样的:

sAMAccountName,aaccountRoles

但是,您还使用逗号分隔 aaccountRoles 的多个值,并且您不希望它识别这些逗号来分隔新行。因此,请将这些全部值括在引号中:

sAMAccountName,aaccountRoles
test.user1,"value1,value2,value3"
test.user2,"value1,value2,value3"

然后赋值时,使用@{aaccountRoles = $user.aaccountRoles.Split(',')}