2011-10-11 4 views
0

J'ai un petit script PowerShell, qui utilise Outlook interop pour déplacer certains messages de la boîte de réception vers d'autres dossiers. L'opération de déplacement de base est effectuée à l'aide du code ci-dessous:Outlook Items.Restrict Ne retourne pas tous les messages

[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 
} 

Le problème je remarque que items.Restrict ne renvoie pas tous les messages correspondant. Chaque fois que je lance le script, je reçois entre 3 et 20 messages.

Quelqu'un at-il déjà observé ce comportement? Y at-il quelque chose d'évident que j'ai manqué?

+0

Je l'ai fait avec varius SenderName et $ message.count correspondent au nombre sur perspectives (également avec 567 mail d'un expéditeur) –

Répondre

4

Vous modifiez la collection tant que vous êtes dans la boucle. soit enregistrer les ID d'entrée dans un tableau statique/liste, puis rouvrir les messages un à la fois ou utiliser une boucle de compte à 1.

+0

doh ... merci de le remarquer et de le signaler. Je vais me tenir dans un coin de ma chambre. :-( – Nasir

Questions connexes