Мне нужно рекурсивно запросить мой почтовый ящик с помощью PowerShell для всех «недоставленных средств возврата электронной почты» ...
У меня проблемы с рекурсивной частью ...
Это сценарий, который я запустил:
$outlook = new-object -com Outlook.Application
$ns = $olApp.GetNamespace("MAPI")
$mb = $namespace.Folders | ?{$_.name -match "mailbox"}
$folder1 = $mb.Folders | ?{$_.name -match "folder1"}
$folder1.Folders | %{$_.name}
$folder1.items | foreach {
if($_.subject -match "undelivered") {...}
}
Однако это не рекурсивный список всех элементов.
Вот короткий сценарий, который должен вам помочь. Он просматривает все папки в почтовом ящике и выводит их путь. Вы можете обновить работу, выполненную в рекурсивном разделе, чтобы проверять элементы в каждой папке, когда она проходит через них.
$outlook = New-Object -Com Outlook.Application
$mapi = $outlook.GetNamespace('MAPI')
$mailboxRoot = $mapi.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox).Parent
$walkFolderScriptBlock = {
param(
$currentFolder
)
foreach ($item in $currentFolder.Folders) {
$item.FolderPath
& $walkFolderScriptBlock $item
}
}
& $walkFolderScriptBlock $mailboxRoot