我对 powershell 和 Exchange 还不熟悉,所以如果这听起来令人困惑,请原谅我。
我需要生成一个包含我们环境中所有可能的电子邮件地址(数万个)的列表,这将导致以下代码出错,因为已经存在一个对象,并且该电子邮件地址是其关键属性之一:
New-MailContact -Name $email `
-ExternalEmailAddress $email > $null
我尝试遍历 get-mailcontact 返回的所有条目,存储“EmailAddresses”集合中的每个电子邮件地址,但现在我认为我还需要从 User 对象中提取所有可能的电子邮件地址。我已经到了我认为有一种更简单、可能一次性的方法来做到这一点的地步。
在 PS 2 中,实现此目的的最简单方法是什么?有没有办法保证,如果电子邮件地址在列表中,New-MailContact 将因重复错误而失败,而如果电子邮件地址不在列表中,则可以保证 New-MailContact 不会因重复而产生错误。(它可能会产生其他错误,但不是因为对象已经与此地址关联。)
谢谢!
答案1
我相信您可以从 Active Directory 中抓取具有非空集合的每个对象ProxyAddresses
,然后筛选出 SMTP 地址(不包括 SIP 和 X400)-
Get-ADObject -Properties ProxyAddresses -Filter 'ProxyAddresses -gt 0' | select ProxyAddresses | %{$_.ProxyAddresses} | where{$_.ToUpper().StartsWith('SMTP:')}