Powershell循环通过CSV比较电子邮件到ActiveDirectory

时间:2013-12-05 22:47:47

标签: powershell csv active-directory

如果我在没有外观的情况下运行此脚本并手动输入说明我的电子邮件的(mail=myaddress@someplace.com)部分它可以工作并说User found in AD但是当我运行此脚本循环时,它会返回完整电子邮件地址前面有User does not exist in AD的电子邮件地址列表,好像它在AD中找不到电子邮件地址一样。

我在这里做错了什么?

$path = "H:\users.csv"
$csv = Import-Csv $path 
Import-Module ActiveDirectory

foreach($line in $csv)
{
    $User = Get-ADUser -LDAPFilter "(&(objectclass=user)(mail=$line.Email))"
    If ($User -eq $Null) {"User does not exist in AD   " + $line.Email }
    Else {"User found in AD  - " + $line.Email}
}

1 个答案:

答案 0 :(得分:2)

在我们的ldap-filter中访问email属性时,您忘记使用子表达式$()。试试这个:

$User = Get-ADUser -LDAPFilter "(&(objectclass=user)(mail=$($line.Email)))"

当您访问更自定义的值然后是纯字符串变量(如对象的属性)时,需要Subexpressions。