在我们的云托管O365租赁中,我想运行一个PowerShell脚本,查看每个用户,并删除对我试图摆脱的电子邮件域的任何引用。
例如,如果我们有以下用户:
Jimbob Goodemails
我想从每个用户删除@ olddomain.com地址(在上面的例子中,为Jimbob.Goodemails@olddomain.com)。
在大多数这些帐户中,该域名将设置为别名 - 例如smtp:Jimbob.Goodemails@olddomain.com
字段中的proxyAddresses
。
但是,有些用户(少得多,可能只有3或4个)可能会将其作为主要电子邮件地址(例如SMTP:Jimbob.Goodemails@olddomain.com
中的proxyAddresses
,也可以作为mail
和UPN
属性)。这些用户可以使用默认的O365电子邮件地址。
我尝试过以下脚本,但无济于事:
foreach($i in Get-Mailbox -ResultSize Unlimited) {
$i.EmailAddresses |
?{$_.AddressString -like '*@olddomain.com'} | %{
Set-Mailbox $i -EmailAddresses @{remove=$_}
}
}
它有一段时间,然后似乎完成了,但没有任何改变。
我使用过Active Directory PowerShell脚本为我的AD同步用户执行此操作,因此我主要希望更改云用户和组。
了解如何搜索此类用户也很有用。
答案 0 :(得分:0)
方法:
创建当前SMTP的数组:
$SMTPs = $Mailbox.EmailAddresses -split ","
删除不需要的SMTP地址:
$SMTPs | ? {$_ -notmatch 'olddomain.com'}
然后使用筛选的SMTP更新邮箱:
Set-Mailbox $Mailbox -EmailAddresses $SMTPs
在您的示例中
foreach ($i in Get-Mailbox -ResultSize Unlimited)
{
$SMTPs = $i.EmailAddresses -split "," | ? {$_ -notmatch 'olddomain.com'}
Set-Mailbox $i -EmailAddresses $SMTPs
}