Outlook Items.Restrict Не возвращает все сообщения - PullRequest
0 голосов
/ 11 октября 2011

У меня есть небольшой скрипт PowerShell, который использует взаимодействие Outlook для перемещения определенных сообщений из папки «Входящие» в другие папки. Основная операция перемещения выполняется с помощью кода ниже:

[Reflection.Assembly]::LoadWithPartialname("Microsoft.Office.Interop.Outlook") | Out-Null
$olFolders = "Microsoft.Office.Interop.Outlook.OlDefaultFolders" -as [type] 
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$inbox = $namespace.getDefaultFolder($olFolders::olFolderInbox)
$filter = "[SenderName] = 'Dummy Sender'"
$messages = $inbox.items.Restrict($filter)
$messages | % { 
    Write-Host "`t$($_.Subject)" 
    [void]$_.Move($destination) | Out-Null
}

Проблема, которую я замечаю, состоит в том, что items.Restrict не возвращает все соответствующие сообщения. Каждый раз, когда я запускаю скрипт, я получаю от 3 до 20 сообщений.

Кто-нибудь наблюдал такое поведение раньше? Есть ли что-то очевидное, чего мне не хватает?

1 Ответ

4 голосов
/ 11 октября 2011

Вы изменяете коллекцию, пока находитесь в цикле.либо сохраните идентификаторы записей в статическом массиве / списке, а затем повторно открывайте сообщения по одному или используйте цикл с обратным отсчетом до 1.

...