我正在尝试将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)
}
答案 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)
}