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 個のアイテムがある場合、ページサイズを 1000 に設定すると出力ファイルに 1008 個のアイテムがリストされ、100 に設定すると 1907 個がリストされます。とにかく、私は常に例外を受け取ります(ただし、一部のメールボックスのみ)。
より深く掘り下げるためのアイデア/ヒントはありますか?