我正在尝试编写一个通过电子邮件地址获取用户的脚本,我需要这样,所以电子邮件是大写还是小写都没关系
我已经写了这个,但是没有显示任何帐户。
$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
}
}
答案 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)