Powershell脚本通过电子邮件获取用户

时间:2018-08-14 13:24:37

标签: powershell active-directory

我正在尝试编写一个通过电子邮件地址获取用户的脚本,我需要这样,所以电子邮件是大写还是小写都没关系

我已经写了这个,但是没有显示任何帐户。

$ADemail = "email-address@domain.co.uk"
$aduser = Get-ADUser -Filter * -Property SamAccountName, EmailAddress
foreach($user in $aduser)
{
    $email = $user.EmailAddress
    if ( $email -ne $null -and $email.ToLower() -eq $ADemail.ToLower() )
    {
        $user.SamAccountName
        $user.emailaddress
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您的“ IF”语句是错误的...我认为该IF试图说明$ email是否不为null,将其转换为小写字母,然后查看其是否等于$ ADemail?

尝试一下?

if (($email -eq $null) -or ($email -eq ""))
{
    # skip
} else
{
    if ($email.ToLower() -eq $ADemail.ToLower() )
    {
        # write out results
    }
}

我的其他观察结果是,这是一种获取所需答案的效率很低的方法-我建议将get-aduser与-filter结合使用,以便让AD服务器为您完成所有过滤工作而不是在本地进行。像Get-ADUser -Filter { mail -Like $ADemail} -Properties mail之类的东西(还没有测试!)。另外值得注意的是,这仅在您要搜索的地址实际上在mail属性中时才有效-它也可能是代理地址之一...但这是另一个问题! (请参考代理地址:https://social.technet.microsoft.com/Forums/en-US/0690df24-4504-4347-80c8-6985d1fa8e11/get-samaccountname-from-email?forum=winserverpowershell