2011-10-11 2 views
0

私は、Outlook interopを使用して特定のメッセージを受信トレイから他のフォルダに移動する小さなpowershellスクリプトを使用しています。基本的な移動操作は、以下のコードを使用して行われます:Outlook Items.Restrictすべてのメッセージを返さない

[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のメッセージを取得します。

誰もこの行動を以前に観察しましたか?私が行方不明になっていることは明らかですか?

+0

私はvarius SenderNameと$ message.countでカウントを行います見通し(送付者からの567のメールでも) –

答えて

4

ループ中にコレクションを変更しています。 静的配列/リストにエントリIDを保存してから、メッセージを一度に1つずつ開くか、1から1までのループを使用します。

+0

doh ...気付いて、それを指摘してくれてありがとう。私は部屋の一角に立つつもりです。 :-( – Nasir

関連する問題