У меня есть небольшой скрипт 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 сообщений.
Кто-нибудь наблюдал такое поведение раньше? Есть ли что-то очевидное, чего мне не хватает?