我正在尝试从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而不是尝试获取数据,这是有效的。我发现了很多不同的语法,描述了如何将变量放在这样的行中这样的过滤器,但没有任何工作。如何使此过滤器工作?
答案 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
}