Моя цель для этого сценария powershell - отслеживать конкретную папку для всех почтовых ящиков в Exchange Online (Office 365), и если элемент создан, он отправит этот элемент как отправьте электронное письмо на другой адрес smtp. Я могу добиться этого только для одного почтового ящика без каких-либо ошибок с использованием олицетворения.Powershell EWS SubscribetoPullNotifications для нескольких почтовых ящиков за один сеанс
Однако, я пытаюсь создать список folderid массива для каждого почтового ящика, как:
foreach ($usermailbox in $mboxlist) {
$farray += Get-TargetF($usermailbox)
}
$ farray содержит объекты типа:
Microsoft.Exchange.WebServices.Data.FolderId($tfTargetFolder.Id)
Я тогда искать события:
$service.SubscribeToPullNotifications($farray,60,$null,[Microsoft.Exchange.WebServices.Data.EventType]::Created)
Обратите внимание, что функция Get-TargetF получает имя сервера через автообнаружение для каждого почтового ящика. Он также использует $service.FindFolders
для поиска правильной папки.
Выполнение сценария, как показано выше, приводит к ошибке для нескольких почтовых ящиков, но не для всех (я отфильтровал 5 почтовых ящиков для тестирования).
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
И когда я начинаю слушать события, я получаю эту ошибку:
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 на Exchange Online упоминается here. Я подозреваю, что подписка выше будет таймаутом через час по умолчанию.
Каков правильный способ достижения этого в одном pssession?
Считаете ли вы использование правил почтового ящика? –
Элементы, созданные в папке, которую я ищу, не являются электронными письмами. Эти элементы (IM) генерируются Lync IM. Папка называется «Диалог Histroy». – fmysky
Мне интересно, если вы решили это, и если да, вы разместили блог об этом решении. Это выглядит очень интересно. –