Powershell 将 .csv 值传递给 set-ADuser cmdlet

Powershell Pass .csv values to set-ADuser cmdlet

我正在尝试根据包含 samAccoutName 和 ExtensionAttribute1 列的 .csv 文件为用户填充 extensionAttribute1。

下面是我为此使用的代码:

Import-Module ActiveDirectory
$Attribcsv=Import-csv “D:\Exports\sales.csv”
ForEach ($User in $Attribcsv)
{
Get-ADUser -Identity $User.samAccountName | set-ADUser -add @{extensionAttribute1=$User.extensionAttribute1}
}

在 运行 代码之后我收到此错误:

set-ADUser : Multiple values were specified for an attribute that can have only one value

.csv 文件示例:

csv

有人可以告诉我我缺少什么吗?

谢谢

您需要将 $User.extensionAttribute1 嵌入到子表达式 $() 中,以便扩展值。

我还建议添加一个测试,看看在尝试设置用户之前是否可以找到用户 属性:

Import-Module ActiveDirectory

$Attribcsv = Import-csv 'D:\Exports\sales.csv'
foreach ($User in $Attribcsv) {
    $adUser = Get-ADUser -Identity $User.samAccountName -ErrorAction SilentlyContinue
    if ($adUser) {
        $adUser | Set-ADUser -Add @{extensionAttribute1 = $($User.extensionAttribute1)}
    }
    else {
        Write-Warning "No user with SamAccountName '$($User.samAccountName)' found.."
    }
}