我对这个 powershell 脚本的目标是监视 Exchange Online (Office 365) 中所有邮箱的特定文件夹,如果创建了一个项目,它将将该项目作为电子邮件发送到另一个 smtp 地址。我可以在一个邮箱中实现这一点,而不会使用模拟出现任何错误。
但是,我正在尝试为每个邮箱创建一个 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
我还没有弄清楚如何处理此处提到的 Exchange Online 上的 EWS 限制问题。我怀疑上面的订阅默认会在一小时后超时。
在单个 pssession 中实现这一目标的正确方法是什么?