Я пытаюсь выбрать несколько электронных писем из папки входящих сообщений 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 часов поиска в Google мне не помогли.
Простое перемещение объекта приводит к разрыву кода, возможно, из-за индексации?
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
В теории, основанной на моих тестах в другой папке, это должно работать идеальноВ общем, создайте копию электронного письма, переместите его в мою папку, и после этого я смогу что-то с этим сделать.