配置Lync 2013/Skype for Business 2015/Skype for Business 2019联盟用户模糊搜索

文章介绍了如何在建立SIP域联盟后,通过获取对方域内用户的AD账号属性并在本地创建AD联系人,使得用户能像搜索内部用户一样,通过显示名或模糊搜索找到联盟用户。此外,还提供了一个批量导入和更新联系人的PowerShell脚本,以适应大型企业中不断变化的联系人信息需求。
摘要由CSDN通过智能技术生成

需求背景:

通常来说,当两个SIP域之间创建联盟信任,并且用户开启联盟权限之后,可以通过在Skype客户端上搜索对方用户的SIP地址来找到对方并通讯。如下所示:

但是如果我们想要和搜索SIP域内其他内部用户一样,通过显示名或者模糊搜索的方式来查找联盟用户,我们应该如何做呢?

技术实现:

我们可以通过以下几个步骤,来实现这一需求:

  1. 获取对方SIP域内用户的部分AD账号属性,这些属性主要包含: 

    Last Name

    First Name

    DisplayName

    EmailAddress

    Skype Address(msRTCSIPPrimaryUserAddress)

  2. 在我方域内创建AD联系人
  3. 为联系人配置步骤1中的属性

我们可以通过如下命令来实现:

New-ADObject -Type contact -Name "Zhang San" -DisplayName "Zhang San, HR-001" -OtherAttributes @{'givenName'="San";'sn'="Zhang";'mail'="San.Zhang@contoso.com";'msRTCSIP-PrimaryUserAddress'="San.Zhang@contoso.com"} -Path "OU=China,OU=Outside Contact List,OU=accounts,DC=contoso.com,DC=cn"

 完成之后,我们通过Skype客户端即可使用显示名或者模糊搜索的方式,来查找到联盟用户,如图所示:

技术扩展:

结合一个大型企业的实际情况来考虑,需求可能更复杂,主要涉及到:

  1. 有更多的联系人需要创建,需要批量操作
  2. 对方SIP域中联系人始终在增加/减少/改变,那么这就需要我们每隔一段时间就要进行本地AD contact的信息更新

基于以上情况考虑,我们可以使用如下脚本,批量进行导入并定期更新信息,代码如下:


Function Import-SkypeContact
{
Param($List)

foreach($Contact in $Contacts){

#定义Contact属性
$Name = $Contact.Name
$DisplayName = $Contact.DisplayName
$givenName = $Contact.Last
$sn = $Contact.First
$mail = $Contact.EmailAddress
$msRTCSIPPrimaryUserAddress = $Contact.msRTCSIPPrimaryUserAddress
$Path = "OU=China,OU=Outside Contact List,OU=accounts,DC=contoso.com,DC=cn"
$ExistedContact = Get-ADObject -Filter {Name -eq $Name -and objectclass -eq 'contact'}
$ExistedContactDisplayName = Get-ADObject -Filter {Name -eq $Name -and objectclass -eq 'contact'} -Properties DisplayName

#判断如果Contact已存在
if($ExistedContact){

#判断AD是否存在与列表中DisplayName相同的Contact,存在则更新其Lync地址并导出
if($ExistedContactDisplayName.DisplayName -eq $DisplayName){

$ExistedContactProperties = Get-ADObject -Filter {DisplayName -eq $DisplayName -and objectclass -eq 'contact'} -Properties DisplayName,msRTCSIP-PrimaryUserAddress | Select-Object DisplayName,msRTCSIP-PrimaryUserAddress
$ExistedContactArray += $ExistedContactProperties
$ExistedContact | Set-ADObject -Replace @{'msRTCSIP-PrimaryUserAddress'="$msRTCSIPPrimaryUserAddress"}

}

#判断如果Contact已存在但是DisplayName不同
else{

#如果提供的列表中的Contact无邮箱属性,则创建无邮箱联系人
if(!$mail){

New-ADObject -Type contact -Name "$Name," -DisplayName $DisplayName -OtherAttributes @{'givenName'="$givenName";'sn'="$sn";'msRTCSIP-PrimaryUserAddress'="$msRTCSIPPrimaryUserAddress"} -Path $Path

}

#如果提供的列表中的Contact有邮箱属性,则创建有邮箱联系人
else{

New-ADObject -Type contact -Name "$Name," -DisplayName $DisplayName -OtherAttributes @{'givenName'="$givenName";'sn'="$sn";'mail'="$mail";'msRTCSIP-PrimaryUserAddress'="$msRTCSIPPrimaryUserAddress"} -Path $Path

}

}

}

#判断如果AD不存在列表中的联系人,且列表中的Contact无邮箱属性,则创建无邮箱联系人
elseif(!$mail){

New-ADObject -Type contact -Name $Name -DisplayName $DisplayName -OtherAttributes @{'givenName'="$givenName";'sn'="$sn";'msRTCSIP-PrimaryUserAddress'="$msRTCSIPPrimaryUserAddress"} -Path $Path

}

#判断如果AD不存在列表中的联系人,且列表中的Contact有邮箱属性,则创建有邮箱联系人
else{

New-ADObject -Type contact -Name $Name -DisplayName $DisplayName -OtherAttributes @{'givenName'="$givenName";'sn'="$sn";'mail'="$mail";'msRTCSIP-PrimaryUserAddress'="$msRTCSIPPrimaryUserAddress"} -Path $Path

}

}

}

#导入联系人列表
$fileName = Get-Date -Format yyyyMM
$list = "\\FileShare\Script\Skype for Business 2015\$fileName.csv"

$Contacts = Import-Csv $list
Import-SkypeContact -List $list


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值