易宝典文章——玩转Office 365中的Exchange Online服务 之七十 怎样管理地址列表

在Exchange Online中,对于地址列表的维护和管理需要通过PowerShell来完成。其操作的本质就是利用PowerShell对收件人筛选器就行创建、修改、查看和删除等。

在进行地址列表的管理过程中,还需要了解,可以基于一个地址列表创建其子列表。这个概念就是,现有一个地址列表A,然后创建一个地址列表B,这个新建的地址列表B的筛选器是在地址列表A的基础上进行筛选的。即:B是A的子集。

一、重温如何利用PowerShell连接Exchange Online

由地址列表和通讯簿的管理,Exchange Online只提供基于PowerShell的操作。所以,对于使用PowerShell连接Exchange Online就作为基础条件,首选要求满足。

1、使用PowerShell连接到世纪互联版Exchange Online

可以通过以下方式利用PowerShell连接世纪互联版的Exchange Online。

Install-Module PowershellGet -Force

Set-ExecutionPolicy RemoteSigned

Import-Module ExchangeOnlineManagement

Connect-ExchangeOnline -ExchangeEnvironmentName O365China

如果之前已经安装便使用过PowerShell管理Exchange Online,则可以直接执行导入ExchangeOnlineManagement命令,然后执行连接命令即可。

clip_image002[3]

如果是使用的PowerShell 7会自动打开浏览器(如果是PowerShell 5则会以弹出对话框的方式呈现),在提示对话框输入用户名和密码进行登录。

clip_image003[3]

登录成功后,将显示如下提示,此时只需关闭浏览器即可。

clip_image005[3]

更详细的内容和操作,可以参考如下两篇易宝典文章:

体验O365中的EXO PS V2 之一 初识Exchange Online PowerShell V2

体验O365中的EXO PS V2 之二 通过Exchange Online PowerShell V2连接到组织

2、需要地址列表的管理权限才能操作

微软默认情况下未向任何管理角色或用户提供地址列表的管理权限,即使是Exchange Online的全局管理员默认也没有这个权限。所以在进行地址列表管理操作之前必须为操作这授权地址列表管理权限。

Exchange Online的地址列表管理权限是通过“Address Lists”这个角色授予的。可通过两种方式进行授予,即:

新建一个管理角色组,然后将“Address Lists”权限授予该组。由于受Office 365提供的UI限制,只能通过PowerShell来完成这一步,在EAC中是无法进行这一操作的。

New-RoleGroup -Name “Address List Management” -Role “Address Lists”

clip_image007[3]

最后将需要进行地址列表管理的用户加入到该管理角色组。这一操作可以在EAC中进行。

clip_image009

另一种方法,就是给需要操作地址列表的用户所在的现有管理角色组授予“Address Lists”角色权限。该授权操作依然由于受Office 365提供的UI限制,只能通过PowerShell来完成这一步,在EAC中是无法进行这一操作的。

New-ManagementRoleAssignment -SecurityGroup “Organization Management” -Role “Address Lists”

clip_image011

如果不对操作用户进行上述授权,其在使用PowerShell连接Exchange Online后,无法看到和使用与地址列表操作相关的命令。因此,要验证是否授权成功,只需要连接Exchange Online后,执行一个简单的地址列表命令即可,如果显示符合预期,则表示授权成功,如果提示命令不存在,则表示仍没有权限。

Get-AddressList

clip_image013

需要注意,进行授权操作后,权限不会立即生效,可以等待15分钟左右。然后重新使用PowerShell连接Exchange Online,并使用已授权用户进行重新登录才会获得权限。

二、创建地址列表

在Exchange Online中利用New-AddressList命令创建地址列表,其完整语法如下:

New-AddressList -Name “<Address List Name>” [-Container <ExistingAddressListPath>] [<Precanned recipient filter | Custom recipient filter>] [-RecipientContainer <OrganizationalUnit>]

1、按收件人所在位置或城市分组

现在需要创建一个在上海的所有邮箱用户的地址列表。

New-AddressList -Name “上海办公室” -IncludedRecipients MailboxUsers -ConditionalStateorProvince “上海”

clip_image015

然后通过Get-Address可以查看新建的地址列表是否生效

clip_image017

2、按收件人职位分组

利用收件人筛选器创建一个所有职位为经理的邮箱用户的地址列表。

New-AddressList -Name “经理” -RecipientFilter “(RecipientType -eq ‘UserMailbox’) -and (Title -like ‘*经理*’ -or Title -like ‘*Manager*’)

Get-AddressLists

clip_image019

3、查看地址列表内容

通过Get-AddressList和Get-Recipient可以查询地址列表中包含的收件人,用以判断确认创建的地址列表使用有效。

$AL = Get-AddressList -Identity “上海办公室”; Get-Recipient -ResultSize unlimited -RecipientPreviewFilter $AL.RecipientFilter | select Name,PrimarySmtpAddress,HiddenFromAddressListsEnabled

$AL = Get-AddressList -Identity “经理”; Get-Recipient -ResultSize unlimited -RecipientPreviewFilter $AL.RecipientFilter | select Name,PrimarySmtpAddress,HiddenFromAddressListsEnabled

clip_image021

如果应该存在列表中的收件人,而没有存在列表中,可能存在的问题有两个:

  • 地址列表的筛选器定义有误;
  • 地址列表由于某些原因没有即使更新收件人的属性,导致收件人无法显示在地址列表中。

如果是后者,并是在Exchange Server中,则可以使用Update-AddressList和Update-GlobalAddressList来进行更新操作,但Exchange Online并未提供这两个命令,所以无法执行该操作。不过可以针对收件人进行调整——

将收件人对应地址列表的属性项,改为其它值保存后,再改回符合地址列表筛选器匹配的值,这样能够触发地址列表的更新。

但是,如果是前者,由于地址列表定义错误,那就只能通过修改地址列表来修复了。

三、修改和删除地址列表

1、修改现有地址列表

通过使用Set-AddressList可以对现有地址列表进行修改。

比如之前“经理”这个地址列表,识别职务名中包括中文“经理”和英文“Manager”的收件人,为了避免造成歧义,现在要改为只包含中文“经理”的收件人。

Set-AddressList -Identity “经理” -RecipientFilter “(RecipientType -eq ‘UserMailbox’) -and (Title -like ‘*经理*’)”

使用Get-AddressList确认是否修改成功。

Get-AddressList -Identity “经理” | Format-List Name,RecipientFilterType,RecipientFilter,IncludedRecipients,Conditional*

clip_image023

2、删除地址列表

使用Remove-AddressList可以删除指定的地址列表。

Get-AddressList -Identity “经理”

Remove-AddressList -Identity “经理”

Get-AddressList -Identity “经理”

clip_image025