powershell - 将多个项目从一个 Outlook 文件夹移动到另一个文件夹的问题 - Powershell
问题描述
我正在尝试通过 mapi 寻址从 Outlook 收件箱文件夹中选择多封电子邮件,并希望将这些电子邮件的副本移动到同一收件箱中的另一个文件夹。
不幸的是,我的脚本似乎随心所欲,有时会复制 6 封电子邮件,然后因以下失败而停止,有时会在第一封电子邮件时停止。
失败:
... "veeam")} | ForEach-Object {$_.Copy().Move($Namespace.Folders.Item("$ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [ForEach-Object], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.PowerShell.Commands.ForEachObjectCommand
我找不到任何解决方案,我坐在这里很困惑,因为在另一个邮箱中代码工作得很好。
当然,我是在预先设置$Mailbox
变量$TempWorkPath
。
在此先感谢您的帮助。
尝试在 foreach 循环中运行代码性能较差,并以同样的问题结束。
大约 3 个小时的谷歌搜索根本没有帮助我。
只是移动对象会导致代码中断,可能是因为索引?
Add-Type -Assembly "Microsoft.Office.Interop.Outlook"
$OutlookSession = New-Object -ComObject Outlook.Application
$Namespace = $OutlookSession.GetNameSpace("MAPI")
$Namespace.Folders.Item("$Mailbox").Folders.Item("Posteingang").Items.Restrict('[UnRead] = True') | Where-Object {($_.Subject -match "ackup") -or ($_.SenderEmailAddress -match "veeam")} | ForEach-Object {$_.Copy().Move($Namespace.Folders.Item("$Mailbox").Folders.Item("Posteingang").Folders.Item("$TempWorkPath"))} | Out-Null
<# 使用选定/复制的电子邮件执行操作 #>
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($OutlookSession) | Out-Null
$OutlookSession = $null | Out-Null
在理论上,基于我在另一个文件夹中的测试,这应该可以正常工作,创建电子邮件的副本,将其移动到我的文件夹,然后我可以用它做事。
解决方案
好吧,我想我找到了解决这个问题的方法。在 while 循环而不是 foreach 循环中运行命令似乎效果更好。
$Inbox = $Namespace.Folders.Item("$Mailbox").Folders.Item("Posteingang").Items.Restrict('[UnRead] = True') | Where-Object {($_.Subject -match "ackup") -or ($_.SenderEmailAddress -match "veeam")}
$MailCounter = $Inbox.Count
$HelperForCounting = 0
while ($MailCounter -gt $HelperForCounting)
{
$Inbox[$MailCounter].Copy().Move($Namespace.Folders.Item("$Mailbox").Folders.Item("Posteingang").Folders.Item("$TempWorkPath"))
$MailCounter = $MailCounter - 1
}
问候
推荐阅读
- android - if/else 的时间间隔 - 如何?
- .net - 使用模板时文本框文本突出显示/光标不可见
- r - 在r中循环数据框中的列索引
- symfony - 如何在数据表中获取对象的数据?
- python - 找不到满足 selenium 要求的版本;在 Python3.6.5 上安装 Selenium 时找不到与 selenium 匹配的发行版
- javascript - 将标签输入保存在数组中并在重新打开时显示
- delphi - Delphi 中的 Power BI 报表
- react-native - React Native 导入 React Navigation
- reactjs - 由于意外令牌,React 测试套件失败
- android - 使用 webrtc 的原生 android 应用程序