【问题标题】:Powershell loop through CSV Compare Email to ActiveDirectoryPowershell 循环通过 CSV 比较电子邮件与 ActiveDirectory
【发布时间】:2013-12-23 03:00:22
【问题描述】:

如果我在没有外观的情况下运行此脚本并手动输入(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}
}

【问题讨论】:

    标签: powershell csv active-directory


    【解决方案1】:

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

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

    当您访问更自定义的值而不是纯字符串变量(如对象的属性)时,需要子表达式。

    【讨论】:

    • 我会在早上尝试这个第一件事。我当然希望这能奏效,它将为我节省大量时间来验证这 300 多个用户是否仍然有效。
    • Ansgar:错字很好!至少我的样本是正确的:)
    • 非常感谢我刚刚测试了它,它似乎工作得很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多