在 Lync Server 2013 中管理通讯簿服务

 

上次修改的主题: 2014-02-05

作为 Lync Server、Enterprise Edition 或 Standard Edition 服务器部署的一部分,通讯簿服务默认安装。 通讯簿服务使用的数据库 - RTCab - 是在Enterprise Edition的SQL Server (上创建的,这是后端SQL Server;对于标准版服务器,并置SQL Server) 。

注意

有关使用 ADSI 编辑来编辑Active Directory 域服务对象属性的信息,请参阅 ADSI 编辑。 有关专门用于通讯簿服务的资源工具包中的工具的信息,请参阅 Microsoft Lync Server 2013 资源工具包工具

通讯簿服务器电话号码规范化

Lync Server 需要标准化的 RFC 3966/E.164 电话号码。 为了使用非结构化或格式不一致的电话号码,Lync Server 依赖于通讯簿服务器在将电话号码传递到规范化规则之前预处理电话号码。 在通讯簿中使用电话号码并应用规范化规则时,客户端(如 Lync Phone Edition 和 Lync Mobile)可以使用这些规范化号码。

如果不进行一些调整,以前版本中使用的规范化规则可能无法正常工作。 由于在规范化规则之前删除了空格和非必需字符,因此,如果正则表达式专门查找已删除的短划线或其他字符,则规范化规则可能会失败。 应查看规范化规则,确保它们不是在查找这些非必需字符,或者当该字符不存在规则预期时,规则可能会正常失败并继续。

用户复制器和通讯簿服务器

通讯簿服务器使用用户复制器提供的数据更新最初从全局地址列表 (GAL) 获取的信息。 用户复制器将每个用户、联系人和组的Active Directory 域服务属性写入数据库中的 AbUserEntry 表,通讯簿服务器将数据库中的用户数据同步到通讯簿服务器文件存储中的文件中,并同步到通讯簿数据库 RTCab 中。 AbUserEntry 表的架构使用两列: UserGuidUserDataUserGuid 是索引列,包含 Active Directory 对象的 16 字节 GUID。 UserData 是一个图像列,其中包含该联系人前面提到的所有Active Directory 域服务属性。

用户复制器通过读取与 AbUserEntry 表位于同一SQL Server实例中的配置表来确定要写入的 Active Directory 属性。 AbAttribute 表包含三列: ID名称标志启用。 该表是在数据库设置期间创建的。 如果 AbAttribute 表为空,则用户复制器将跳过其 AbUserEntry 表处理逻辑。 通讯簿服务器属性是动态的,从 AbAttribute 表中检索,该表最初是由通讯簿服务器在激活通讯簿服务器时编写的。

通讯簿服务器激活使用下表中所示的值填充 AbAttribute 表。

ID 名称 标志

1

givenName

0x01400000

2

0x02400000

3

displayName

0x03420000

4

标题

0x04000000

5

mailNickname

0x05400000

6

公司

0x06000000

7

physicalDeliveryOfficeName

0x07000000

8

msRTCSIP-PrimaryUserAddress

0x08520C00

9

phoneNumber

0x09022800

10

homePhone

0x0A302800

11

移动

0x0B622800

12

otherTelephone

0x0C302000

13

ipPhone

0x0D302000

14

邮件

0x0E500000

15

groupType

0x0F010800

16

部门

0x10000000

17

说明

0x11000100

18

经理

0x12040001

19

proxyAddress

0x00500105

20

msExchHideFromAddressLists

0xFF000003

99

entryID

0x99000000

ID 列中的数字必须是唯一的,不应重复使用。 此外,将 ID 值保留在 256 以下可节省通讯簿服务器编写的输出文件中的空间。 但是,最大 ID 值为 65535。 “名称”列对应于用户复制器应为每个联系人放在 AbUserEntry 表中的 Active Directory 属性名称。 Flags 列中的值用于定义属性的类型。 用户复制器可识别以下类型的通讯簿服务器属性,这些属性由 Flags 列中值的低字节表示。

属性 描述

0x0

字符串属性。 用户复制器将此类型转换为 UTF-8,然后将其存储在 AbUserEntry 表中。

0x1

二进制属性。 用户复制器在不进行任何转换的情况下将此存储在 Blob 中。

0x2

字符串属性,但仅当属性值以“tel:”开头时才包含。 这主要适用于多值字符串属性,特别是 proxyAddresses。 在这种情况下,通讯簿服务器只对以“tel:”开头 的 proxyAddresses 条目感兴趣。 因此,为了节省空间,用户复制器仅存储以“tel:”开头的条目。

0x3

布尔字符串属性,如果 TRUE 导致用户复制器不将此联系人包含在 AbUserEntry 表中。 如果为 FALSE,则会导致用户复制器在 AbUserEntry 表中包含此联系人的属性,但不包含此标志的特定属性。 这是另一种特殊情况类型,主要用于 msExchHideFromAddressLists 属性。

0x4

字符串属性,但仅当属性值以“smtp:”开头并包含“@”符号时才包含。

0x5

字符串属性,但仅当属性值以“tel:”或“smtp:”开头并包含“@”符号时才包含。

0x100

如果已设置,则这是一个多值属性,可以为每个联系人显示多次。

0x400

如果设置,则会标识联系人的电子邮件用户帐户名称属性。 通讯簿服务器使用此标志标识要在手机规范化事件日志条目中显示的属性值。

0x800

如果设置,则会标识联系人的必需属性。 通讯簿服务器仅当 Active Directory 中有此属性的值时,才会在 AbUserEntry 表中包含用户。 如果有多个必需属性,则只有其中一个属性需要有一个值才能将用户包含在 AbUserEntry 表中。

0x1000

如果设置,则通讯簿服务器始终规范化此属性的值。

0x2000

如果设置,如果 UseNormalizationRules CMS 设置为 FALSE,则通讯簿服务器使用 proxyAddresses 中的规范化数字;否则,它的行为与0x1000标志位时的行为相同。

0x4000

如果设置,则通讯簿服务器不包含具有指定属性的此值的 AbUserEntry 表中的对象。 例如,如果 msRTCSIP-PrimaryUserAddress 属性设置了此标志位,则没有将具有此属性的联系人写入数据库。

0x8000

如果设置,通讯簿服务器不会在 AbUserEntry 表中包含对指定属性没有此值的对象。 如果在对象上同时设置了0x4000和0x8000标志位,则将标志位值设置为0x4000的属性优先,并且该对象从 AbUserEntry 表中排除。

0x10000

如果设置,则表示组对象。 用户复制器使用此标志位包含与 groupType 属性的联系人,其状态指示组 (,例如通讯组列表或安全组) 。

0x20000

如果已设置,则用户复制器使用此标志位将此属性包含在设备特定的通讯簿服务器文件中, (即具有 .dabs 扩展名的文件) 。

在早期版本的 Lync Server 中,向 Active Directory 应用更改时,管理员需要运行 Update -CSUserDatabaseUpdate –CSAddressBook Windows PowerShell cmdlet,以便立即将更改保留到 Lync Server 用户数据库和 RTCab 数据库。 在 Lync Server 2013 中,Lync Server 用户复制器将从 Active Directory 中获取更改,并根据配置的间隔更新 Lync Server 用户数据库。 Lync Server 用户复制器还将快速将更改传播到 RTCab 数据库,而无需管理员运行 Update-CSAddressBook。 如果启用了通讯簿 Web 查询,则 Lync 客户端将在搜索结果中反映这些更改。 如果启用了通讯簿文件下载,管理员只需运行 Update -CSAddressBook。

注意

默认情况下,Lync Server 用户复制器每 5 分钟自动运行一次。 可以使用 Set-CSUserReplicatorConfiguration -ReplicationCycleInterval <>配置此间隔。

筛选通讯簿

可以根据 AbAttribute 表中列出的某些Active Directory 域服务属性控制在通讯簿服务器文件中填充的用户。 用于筛选的一个此类属性是 msExchangeHideFromAddressBook 属性。 这是 Exchange 架构添加的用户属性。 如果此属性的值为 TRUE,Exchange Server使用此属性从 Outlook 全局地址列表 (GAL) 中隐藏联系人。 同样,如果此属性的值为 TRUE,则用户复制器不会在 AbUserEntry 表中包含该用户,并且此用户将不在通讯簿服务器文件中。

可以使用某些标志位来定义要在通讯簿服务器属性上使用的筛选器。 例如,某些标志位的存在可以将属性标识为 include 属性或排除属性。 用户复制器筛选出包含排除属性的联系人,筛选出不包含 include 属性的联系人。

警告

有关筛选通讯簿的详细信息,请参阅 Lync Server 2013 中的通讯簿服务器 cmdletFilter Lync 2013 通讯簿

目前,有三个不同的筛选器。 下表列出了这些筛选器。

属性 描述

0x800

如果设置,则会标识联系人的必需属性。 用户复制器使用此标志位筛选出不包含至少一个必需属性的联系人。 OuPathId 是必需的属性,始终设置。 因此,应设置至少一个其他必需属性。 否则,使用 OuPathId) 所需属性的值联系 (仍不会写入数据库。 例如,如果 将 phoneNumberhomePhone 定义为必需属性,则仅将至少具有其中一个属性的联系人写入数据库。

0x4000

如果设置,则会标识排除属性。 用户复制器使用此标志位筛选出包含此属性的联系人。 例如,如果 msRTCSIP-PrimaryUserAddress 定义为排除属性,则具有此属性的联系人不会写入数据库。

0x8000

如果设置,则会标识 include 属性。 用户复制器使用此标志位筛选出不包含此属性的联系人。 例如,如果 msRTCSIP-PrimaryUserAddress 定义为 include 属性,则仅将具有此属性的联系人写入数据库。

注意

如果同时设置了0x4000 (排除属性) 和0x8000 (包含属性) 标志位,则0x4000位将替代0x8000位,并排除联系人。

尽管可以筛选通讯簿以仅包含某些用户,但限制条目不会限制其他用户联系已筛选用户或查看其状态的能力。 用户始终可以通过输入用户的完整登录名称来查找、手动发送即时消息或手动启动对不在通讯簿中的用户的调用。 此外,还可以在 Outlook 中找到用户的联系信息。

虽然在通讯簿文件中拥有完整的联系人记录,你可以使用 Lync Server 启动电子邮件、电话或企业语音呼叫 (,也就是说,如果在服务器上启用了企业语音,) 未配置为会话启动协议 (SIP) 的用户,则某些组织更愿意在其通讯簿服务器条目中仅包含已启用 SIP 的用户。 可以通过清除以下必需属性的 Flags 列中的0x800位( mailNicknamephoneNumberhomePhonemobile)来筛选通讯簿以仅包含已启用 SIP 的用户。 还可以通过在 msRTCSIP-PrimaryUserAddress 属性的 Flags 列中设置0x8000 (包含属性) ,筛选通讯簿以仅包含已启用 SIP 的用户。 这也有助于从通讯簿文件中排除服务帐户。

修改 AbAttribute 表后,可以通过运行 cmdlet Update-CsUserDatabase 命令刷新 AbUserEntry 表中的数据。 UR 复制完成后,可以通过手动运行 cmdlet UpdateCsAddressBook 命令来更新通讯簿服务器文件存储中的文件。

注意

放置通讯簿服务器的前端服务器在管理上不可配置。 在部署期间选择一个服务器(通常为部署的第一个前端服务器)。 如果出现故障,通讯簿服务将移动到另一台前端服务器,并且不需要管理关注。

重要

如果已从多林部署或父/子部署 ((例如,在迁移到 Lync Server) 之前合并或以其他方式修改了基础结构,则可能会发现某些用户的通讯簿服务下载和通讯簿 Web 查询失败。 在具有多个域或林的部署中,会在显示问题的用户对象上填充 属性 MsRTCSIP-OriginatorSid 。 必须将这些对象上的 MsRTCSIP-OriginatorSid 属性设置为 NULL 才能解决问题。