使用PowerShell从AD中提取特定的代理地址

时间:2019-06-13 13:35:49

标签: powershell email active-directory

我在一个csv文件中有一个用户列表。此列表包含其主要SMTP地址不在我们组织内部的用户。这些是邮件转发到其他地方的邮件用户。

他们在AD帐户中有一个指向AD的代理地址,该代理地址指向该组织,这就是我要达到的目标。问题是proxyaddresses不会将电子邮件放在相同的位置,因此我需要以某种方式推断电子邮件。符合特定条件的人。

我真正想了解的是没有{smtp:}格式的first.last@example.com或first_last.example.com。

我已经能够生成代理地址列表,但同样,它只是一个列表。

$users = import-csv $BadEmailList | % {Get-ADUser $_.LoginID -Properties proxyaddresses}

Foreach ($u in $users) {

    $proxyAddress = [ordered]@{}

    $proxyAddress.add(“User”,$u.name)

    For ($i = 0; $i -le $u.proxyaddresses.count; $i++)

   {

    $proxyAddress.add(“ProxyAddress_$i”,$u.proxyaddresses[$i])

    } #end for

[pscustomobject]$proxyAddress |

  Export-Csv -Path $ProxyAddressList -NoTypeInformation –Append -Force

  Remove-Variable -Name proxyAddress } #end foreach

我想要得到的是类似于以下内容的东西:

用户ProxyAddress_0
---- -----
User1 first.last@example.com

1 个答案:

答案 0 :(得分:1)

如果只想查找具有给定代理地址的特定AD用户(如标题所示),则应该能够使用LDAP过滤器,如下所示:

Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(|(proxyAddresses=*:first.last@example.com)))"