Powershell...将电子邮件移动到存档文件夹.....移动除最后一封电子邮件外的所有电子邮件?

Powershell...Moving emails to archive folder.....moves all but last email?

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

但是,我的代码在处理最后一封电子邮件时出错。

"Unable to index into an object of type System.__ComObject."

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

如果只有 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)
    }

为什么不使用 foreach 循环?

$messages = $trgtfldr.items

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

您可以像这样设置循环

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

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