2015-01-14 2 views
0

연락처 목록의 구성원과 연락처 그룹을 사용합니다.연락처 삭제시 Exchange 연락처 그룹 업데이트

연락처 목록의 연락처가 삭제 될 때마다 연락처 그룹이 편집을 위해 열려있는 Outlook에서 "지금 업데이트"를 누르기 전까지이 이전에 추가 된 구성원이 여전히 연락처 그룹에 있습니다. 그런 다음 더 이상 존재하지 않는 멤버를 삭제할지 묻는 팝업이 나타납니다.

여러 개의 연락처 그룹을 사용하기 때문에 각 그룹을 개별적으로 업데이트하는 대신 EWS 관리 API에 기반한 백그라운드 작업으로 업데이트하려고합니다. 지금까지는 각 연락처 그룹을 선택하고 회원의 이메일 주소를 표시했지만 Outlook의 "지금 업데이트"버튼 기능을 수행하는 방법을 모르겠습니다! AlwaysOverwrite의 일반적인 업데이트 방법이 작동하지만 원하는대로하지 않습니다. 존재하지 않는 연락처를 삭제하십시오.

은 (그건 그렇고, 연락처 그룹/연락처 목록 공용 폴더에 있습니다.)

답변

0

EWS 그 기능을 노출하지 않습니다. 기본적으로 Outlook은 Entry ID로 연락처를 검색하려고 시도하고 실패하면 해당 연락처를 제거하라는 메시지를 표시합니다. 비슷한 것을 구현할 수도 있습니다 (각 전자 메일 주소를 가져 와서 연락처로 다시 연결하려고 시도하는 등).

+0

그래 좋은 생각, 내가 회원의 이메일이 아직 사용 여부를 확인하기 위해 관리,하지만 난 상대 그룹 코드의 특별 회원을 삭제 EWS에서 방법을 찾을 수 스 니펫을 해달라고 : 나는의 코드를 게시하여 대답 –

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" 
     ??????? 
     } 
    } 
}