Powershell ...将电子邮件移动到存档文件夹.....移动除了最后一封电子邮件之外

时间:2015-03-05 14:53:23

标签: email powershell

我正在尝试将Outlook中的电子邮件从一个文件夹移动到另一个文件夹。

但是,我的代码在处理上一封电子邮件时会抛出错误。

"无法索引System .__ ComObject类型的对象。"

它将所有其他电子邮件移动到存档文件夹ok。

如果只有1封电子邮件,则会出错.... 如果有2封或者更多的电子邮件存在,那么它将移动除最后一封电子邮件之外的所有邮件,然后发生错误。

代码是

$filepath="Z:\"
$olFolderInbox = 6

$i=0 
$outlook = new-object -com outlook.application; 
$ns = $outlook.GetNameSpace("MAPI");
$inbox = $ns.Folders | ? { $_.Name -eq '#Whe ContractorRFPs' };
$trgtfldr = $inbox.Folders | ? { $_.Name -match 'Inbox' };
$mvdfldr = $inbox.Folders | ? { $_.Name -match 'Archived' };
$messages = $trgtfldr.items

    for($i=($messages.count -1);$i -gt -1;$i--){
    $($messages)[$i].move($mvdfldr)
    }

2 个答案:

答案 0 :(得分:0)

为什么不使用foreach循环?

$messages = $trgtfldr.items

foreach($message in $messages){
 $message.move($mvdfldr)
}

答案 1 :(得分:0)

您可以像这样设置循环

$messages = $trgtfldr.items
$messageCount = $messages.count

for ($i = $messageCount - 1; $i -ge 0; $i--) {
    $message = $messages.GetLast()
    $message.move($mvdfldr)
}