带有Powershell的EWS:“该属性的值无效”

时间:2013-06-25 18:53:24

标签: powershell exchangewebservices

我正试图通过EWS / Powershell遍历邮箱,以读取收件箱中邮件的一些属性。这适用于大多数邮箱 - 但并非适用于所有邮箱。我正在使用分页来遍历结果:

$moreItems=$true
$Offset=100
$pageSize=100
while($moreItems)
{
$itemView = new-object Microsoft.Exchange.WebServices.Data.ItemView($pageSize,$Offset,[Microsoft.Exchange.WebServices.Data.OffsetBasePoint]::Beginning)

...

$mails = $currentFolder.FindItems($itemView)


foreach($mail in $mails)
{
   #add-contnet -path "output.txt" -value $mail.subject
}

$itemView.Offset += $mails.Items.Count
if ($mails.MoreAvailable -eq $false)
{
      $MoreItems = $false
}
if ($MoreItems)
{
    $Offset += $pageSize
}
}

正如我所说,这对某些邮箱来说非常有用 - 有些邮箱会遇到异常:

“该属性的值无效。”

此错误发生在以下代码行中:

$mails = $currentFolder.FindItems($itemView)

如您所见,我正在将所有邮件的主题写入txt文件。根据页面大小和偏移量,输出文件列出更多或更少的主题(邮件项目)。例如如果收件箱有2000个项目,它会在输出文件中列出1008个项目,当我将pagesize设置为1000时,它会列出1907,如果我将它设置为100,依此类推。无论如何,我总是得到异常(但同样,只有一些邮箱)。

任何想法/任何提示如何深入挖掘?

1 个答案:

答案 0 :(得分:0)

找到了答案:结果发现当ipm.note以外的其他项目都驻留在邮箱中时它会崩溃 - 例如会议要求。我做了一个searchfilter只过滤ipm.note并将它传递给finditems()方法 - 这个工作......