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(',')}
我想创建一个 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(',')}