试图将邮件从收件箱移动到PST,但它们消失了



我写了一个简单的脚本,目的是备份收件箱,存档和发送的邮件到附件的PST数据文件。

看起来它工作得很好:脚本从我的电子邮件帐户找到源文件夹,它在附件PST上找到目标文件夹,它发现要备份的邮件(即我已经深入检查了$namespace对象)。

当我重新打开Outlook客户端时,我得到了一个不愉快的惊喜。如我所料,我的邮件没有存储在我的电子邮件帐户,,但它们都没有出现在我的附件PST中.

发生了什么? ?

编辑:或者,你能给我建议任何关于Outlook MAPI for Powershell的文档吗?Google返回给我弱结果

$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNameSpace("MAPI")
$SourceDest = [ordered]@{}
$SourceDest['Inbox'] = 'PSTfolder1'
$SourceDest['Archive'] = 'PSTfolder2'
$SourceDest['Sent'] = 'PSTfolder3'
foreach ($from_folder in $SourceDest.Keys) {
$to_folder = $SourceDest[$from_folder]
$Source = $namespace.Folders['mymail@account.com'].Folders[$from_folder]
$Dest = $namespace.Folders['myPST'].Folders[$to_folder]
$Messages = $Source.Items
foreach ($msg in $Messages) {
[void]$msg.Move($Dest)
}
}

执行脚本时Outlook正在运行吗?你看到邮件被移动了吗?

请记住,Move是一个返回新项的函数,它不返回void。这对你来说无关紧要。

重要的是,当你在循环它的项目时,你正在修改集合(因为Move删除了原始集合)。使用从Items.Count到1的回环。

最新更新