我所在的组织在林中有多个域。大多数域都有自己的电子邮件,但少数域共享一个公共电子邮件域。我有一个电子邮件地址列表,需要识别它们来自哪个域。我尝试过 PowerShell 命令Get-ADUser
,但它似乎只在我的域内有效。一个可接受的替代方法是确定用户是否不在某个域中。
答案1
此 PowerShell cmdlet 搜索具有您指定的电子邮件地址的用户。它还返回将其作为辅助电子邮件地址的用户帐户:
Get-ADUser -Filter "proxyAddresses -like '*[email protected]*'" # Keep the asterisks!
如果您的组织中没有 Exchange,您也可以尝试使用邮件属性。
Get-ADUser -Filter "mail -like '[email protected]'" # Exact search, so no asterisk here.
答案2
我遗漏的部分是服务器参数。该Get-ADUser
命令仅在我的域中搜索。因此,如果我在my.domain.com
但我想看看是否[电子邮件保护]是中用户的电子邮件ur.domain.com
,我需要指定不同的服务器,如下所示:
Get-ADUser -Server "ur.domain.com" -Filter {EmailAddress -eq "[email protected]"}
编辑:这又回来了所以我最终构建了一个完整的脚本来完成我需要做的事情:
date
$da=@("a","b","c","d") #e domain not searchable
$ra=@()
$nf=@()
foreach ($u in Get-Content "C:\pathtofile\filename.txt"){
$dh = "not found"
for ($i=0; $i -lt $da.length -and $dh -eq "not found"; $i+=1){
$d=$da[$i]
if (Get-ADUser -Server $d".domain.com" -Filter {EmailAddress -eq $u}){
$dh = $d
}
}
if ($dh -eq "not found"){
$nf += $u
}elseif (!($ra.Contains($dh))){
$ra += $dh
}
}
date
""
"Results:"
$ra
""
"Not Found:"
$nf
这个脚本花费的时间非常长,所以我还$da
根据最常出现的期望对数组进行了排序,以便它能够更快地退出循环。