You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell移动Exchange邮箱邮件报错求助:无法找到收件人

问题修复方案

原脚本核心错误

  1. 错误嵌套调用Get-MailboxFolderStatistics:第一次获取到test文件夹的统计对象后,再次调用该cmdlet会把这个对象当作邮箱标识传入,导致系统无法识别user@company.com\test为有效收件人。
  2. Get-MailboxFolderStatistics仅能获取文件夹的统计信息(如项目数、大小),无法直接提取文件夹内的邮件列表。
  3. 使用Move-Item错误:Exchange Online中移动邮件需使用专门的Move-EXOMessage cmdlet,而非通用文件操作的Move-Item。

修正后的脚本

$mailboxName = "user@company.com"
$sourceFolderName = "test"
$targetFolderName = "test2"

$successCount = 0
$failureCount = 0

try {
    # 获取源文件夹的唯一标识FolderId
    $sourceFolder = Get-MailboxFolderStatistics -Identity $mailboxName | Where-Object { $_.Name -eq $sourceFolderName }
    if (-not $sourceFolder) {
        throw "源文件夹 $sourceFolderName 在邮箱 $mailboxName 中不存在"
    }

    # 获取目标文件夹的唯一标识FolderId
    $targetFolder = Get-MailboxFolderStatistics -Identity $mailboxName | Where-Object { $_.Name -eq $targetFolderName }
    if (-not $targetFolder) {
        throw "目标文件夹 $targetFolderName 在邮箱 $mailboxName 中不存在"
    }

    # 提取源文件夹内的所有邮件
    $emails = Get-EXOMessage -Mailbox $mailboxName -FolderId $sourceFolder.FolderId

    # 遍历移动每一封邮件
    foreach ($email in $emails) {
        try {
            Move-EXOMessage -Identity $email.Id -TargetFolder $targetFolder.FolderId
            $successCount++
        } catch {
            $failureCount++
            Write-Host "移动邮件失败:$($email.Subject),错误信息:$_"
        }
    }

    Write-Host "执行完成:成功移动 $successCount 封邮件,失败 $failureCount 封"
} catch {
    Write-Host "全局错误:$_"
}

额外注意事项

  • 确保ExchangeOnlineManagement模块版本在v3.0以上,旧版本可能没有Get-EXOMessage和Move-EXOMessage cmdlet。
  • 如果存在同名文件夹(如不同父目录下的test),建议通过FolderPath精准匹配,示例:Where-Object { $_.FolderPath -eq "/test" }。

内容的提问来源于stack exchange,提问作者TFesmire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:35:14