Powershell管理系列(九)删除Exchange用户邮箱中多余的电子邮件地址

在Powershell管理系列(七)删除Exchange用户邮箱中多余的电子邮件地址

http://yuntcloud.blog.51cto.com/1173839/1601895

博文中我给大家介绍了三种删除Exchange用户邮箱中多余的邮件地址,后面发表到winos论坛的时候,winos论坛博文地址http://bbs.winos.cn/thread-138202-1-1.html, 教主给我留言说要考虑各种格式的邮件地址,如*@邮箱名,不能仅仅限于格式:别名@邮箱名,于是我针对这个情况做了改进,步骤如下:

步骤1、首先我们模仿下这种情况,将原来的[email protected] ,改成[email protected] ,如下图:

wKiom1S3bT-iqydxAAE_hUOKfkU771.jpg

步骤2、执行如下脚本:

$mailbox=get-mailbox -resultsize unlimited
foreach ($i in $mailbox)
{
$array=new-object system.collections.arraylist
$address=$i.emailaddresses
foreach ($j in $address){if ($j.addressstring -like "*@51*"){[void]$array.add($j.addressstring)}}
foreach ($k in $array) {set-mailbox $i -emailaddresses @{remove=$k}}
}

wKiom1S3baDDRYJFAAHuPFt9fGU487.jpg

步骤3、步骤2中的[void]$array.add($j.addressstring)前面的[void]是不显示数组的个数,我们可以对比下不加参数的执行结果。数字为0代表数组里面有一个字符。

wKioL1S3cJfARkjDAAL56bf8wTw735.jpg

步骤4、以下是数组的一个示例说明。

$array=New-Object System.Collections.ArrayList----新建一个数组并赋值给$array

$array.add()--------------------------------------------向数组添加字符

0--------------------------------------------------------代表数组里面有1个字符

1--------------------------------------------------------代表数组里面有2个字符

2--------------------------------------------------------代表数组里面有3个字符

$array--------------------------------------------------输出数组显示到屏幕

[void]$array--------------------------------------------不显示值,不是初始化值为空

wKiom1S3cHrz16iMAAGczXo03F0609.jpg

步骤5、查看执行结果,达到了我们的删除*@邮箱名的要求。

wKioL1S3bwLxdT_aAAGBdyV49Hw668.jpg

 

你可能感兴趣的:(powershell)