删除联系人后更新Exchange联系人组

时间:2015-01-14 02:05:26

标签: contacts exchangewebservices ews-managed-api

我使用联系人群组与联系人列表中的成员。

每当联系人列表中的联系人被删除时,此前添加的成员仍然存在于联系人组中,直到我点击"立即更新"在Outlook中打开联系人组进行编辑。然后会出现一个弹出窗口,询问我是否要删除不再存在的成员。

由于我使用多个联系人组,因此我不想单独更新每个联系人组,而是使用基于EWS托管API的后台作业。到目前为止,我已设法选择每个联系人组,显示成员'电子邮件地址,但我不知道如何完成此操作"立即更新" outlook的按钮功能!使用AlwaysOverwrite的普通更新方法有效,但不能执行我想要的操作:删除不存在的联系人。

(顺便说一句,联系人组/联系人列表位于公共文件夹中。)

2 个答案:

答案 0 :(得分:0)

EWS不公开该功能。从本质上讲,Outlook会尝试按条目ID检索联系人,当它失败时,它会提示您将其删除。您可以实现类似的功能(获取每个电子邮件地址,尝试将其解析回联系人等)。

答案 1 :(得分:0)

## $service excahnge service referend
## $folder .. ExchangeFolder where group and contacts are 
## $group ... instance of contact group

$members = $service.ExpandGroup($group.id)
for($l=0;$l -lt $members.members.count;$l++) {
    $curMember = $members.members[$l]
    $objViewUser =  New-Object Microsoft.Exchange.WebServices.Data.ItemView(1)
    $curEmail = $members.members[$l].address
    ## check if there still exists a contact with this email-address
    $searchFilterEA1 = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+ContainsSubstring([Microsoft.Exchange.WebServices.Data.ContactSchema]::EmailAddress1,$curEmail)
    $resultContact = $folder.FindItems($searchFilterEA1,$objViewUser).Items.Count
    if ($resultContact -eq 0) {
       "delete Contact $curEmail"
        ???????
        }
    }
}