基于CSV文件中的电子邮件设置ADUser

时间:2015-01-23 21:17:51

标签: powershell csv active-directory

我正在尝试从csv文件中读取信息,并使用它将电话号码添加到我们的活动目录中,如果在csv文件中找到了电子邮件地址。 (我知道EmailAddress属性不可行,但根据导出数据的位置,我必须使用它)。我有一个PowerShell脚本:

Import-Module ActiveDirectory
$csv = Import-Csv c:\users\user1\Desktop\userphones2.csv
foreach ($line in $csv) {
    Get-ADUser -Filter {EmailAddress -eq $line.email} | 
    Set-ADUser -OfficePhone $line.phone
}

当我运行它时,对于数据文件中的每条记录,我得到错误

  

Get-ADUser:Property' email'在类型的对象中找不到:' System.Management.Automation.PSCustomObject'

CSV文件采用以下方式构建:

#TYPE System.Data.DataRow
"email","phone"
"user@example.com","8885555555"
"user2@example.com","8885555552"

如果我在foreach循环中执行Write-Output而不是尝试获取数据,这是有效的。我发现了很多不同的语法,描述了如何将变量放在这样的行中这样的过滤器,但没有任何工作。如何使此过滤器工作?

1 个答案:

答案 0 :(得分:1)

您在AD中使用了错误的电子邮件属性名称。它的mail不是EmailAddress。我在PowerShell中对此进行了测试,它对我有用。

此外,您无法在过滤器中使用$line.email PowerShell并不知道如何处理它。我不知道这个的技术原因,但我从来没有这样工作,所以我总是把它放在一个变量。试试这个:

Import-Module ActiveDirectory
$csv = Import-Csv c:\users\user\Desktop\userphones2.csv
foreach ($line in $csv) {
    $email = $line.email
    Get-ADUser -Filter {mail -eq $email} | 
        Set-ADUser -OfficePhone $line.phone
}