2

이 powershell 스크립트의 목표는 Exchange Online (Office 365)의 모든 사서함에 대한 특정 폴더를 모니터링하고 항목이 만들어지면 해당 항목을 다른 smtp 주소로 이메일을 보냅니다. 가장을 사용하여 오류없이 단 하나의 사서함에 대해이 작업을 수행 할 수 있습니다.Powershell EWS 단일 세션의 여러 사서함에 대한 구독 알림

Microsoft.Exchange.WebServices.Data.FolderId($tfTargetFolder.Id) 

내가 다음에 이벤트를 찾습니다 :

foreach ($usermailbox in $mboxlist) { 
$farray += Get-TargetF($usermailbox) 
} 

$ farray이 유형의 객체를 포함 :

그러나, 내가 좋아하는 각 사서함에 대해 folderid 배열의 목록을 만들려고하고있다 :

$service.SubscribeToPullNotifications($farray,60,$null,[Microsoft.Exchange.WebServices.Data.EventType]::Created) 

Get-TargetF 함수는 각 사서함에 대해 자동 검색을 통해 서버 이름을 가져옵니다. 또한 올바른 폴더를 찾는 데 $service.FindFolders을 사용합니다.

위와 같은 스크립트를 실행하면 일부 사서함에서만 오류가 발생하지만 전부는 아니며 테스트를 위해 5 개의 사서함을 필터링했습니다.

Cannot find an overload for "SubscribeToPullNotifications" and the argument count: "4". 
At C:\Documents\mysc.ps1:79 char:59 
+ $pullSubscription = $service.SubscribeToPullNotifications <<<< ($farray,60,$null,[Microsoft.Exchange.WebServices.Data.EventType]::Created) 
    + CategoryInfo   : NotSpecified: (:) [], MethodException 
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest 

나는 또한 거래소 온라인에 대한 EWS로 조절 문제를 처리 here을 언급하는 방법을 생각하지 않은 : 나는이 사건을 듣고 시작할 때

New-Object : Constructor not found. Cannot find an appropriate constructor for type Microsoft.Exchange.WebServices.Data.FolderId. 
At C:\Documents\mysc.ps1:63 char:22 
+ $InboxId = new-object <<<< Microsoft.Exchange.WebServices.Data.FolderId($tfTargetFolder.Id) 
    + CategoryInfo   : ObjectNotFound: (:) [New-Object], PSArgumentException 
    + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand 

는, 나는이 오류가 발생합니다. 위 구독은 기본적으로 1 시간 후 시간 초과됩니다.

단일 세션에서이 작업을 수행하는 올바른 방법은 무엇입니까?

+0

사서함 규칙을 사용 해본 적이 있습니까? –

+0

내가 찾고있는 폴더에서 생성 된 항목은 전자 메일이 아닙니다. 이러한 항목 (IM)은 Lync IM에 의해 생성됩니다. 폴더는 "Conversation Histroy"라고합니다. – fmysky

+0

이 문제를 해결했는지 궁금하고, 그렇다면 해결책에 대한 블로그를 게시했는지 궁금합니다. 그것은 매우 흥미 보입니다. –

답변

0

여기에있는 유일한 옵션은 각 사서함에 대해 별도의 구독을 만든 다음 하나씩 하나씩 반복하여 GetEvents를 호출하여 새로운 Create 이벤트가 있는지 확인하는 것입니다.

필자의 이해에 따르면 가장 (impersonation)은 다른 사용자와 통화하는 것이기 때문에 다른 사서함의 폴더 ID를 지정하면 작동하지 않습니다. 해당 다른 사용자가 요청에 언급 된 폴더 ID에 대한 대리인 권한을 가지고 있지 않으면 실패 할 수밖에 없습니다. Powershell 대신 Console app로 먼저 시도하여 실제로 작동하는 것을 빨리 확인해야 할 수도 있습니다. 이는 실제 문제의 조사를 방해하는 특정 PS 오류를 피하기위한 것입니다.

스트리밍 구독 방식을 사용하면 MSDN의 here에 설명 된대로 서버 선호도에 따라 사서함을 그룹화 할 수 있습니다. 그 결정을 내리기 전에 Pull vs. Streaming 간의 절충점을 살펴 봐야합니다.