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

PowerShell获取Outlook已发送会议响应组织者失败问题求助

问题:Outlook会议响应邮件的收件人/组织者字段获取异常

场景与初始代码

当受邀参加会议并选择接受、暂定或拒绝后,对应的响应邮件会出现在已发送邮件文件夹(对应常量olFolderSentMail = 5)中。我尝试用以下PowerShell代码获取指定日期范围内的该文件夹邮件列表:

$olFolderSentMail = 5
$ol = New-Object -ComObject Outlook.Application
$ns = $ol.GetNamespace('MAPI')
$Start = $targetDate.ToShortDateString() + " 00:00"
$End = $targetDate.AddDays(+1).ToShortDateString() + " 00:00"
$sentMail = $ns.GetDefaultFolder($olFolderSentMail)

$sentMail.Items | Where-Object { $_.ReceivedTime -ge "$Start" -and $_.ReceivedTime -lt "$End" } | ForEach-Object {
    $organizer = $_.MeetingOrganizer
    "{0,-20} {1,-20} {2,-20} {3:yyyy-MM-dd HH:mm:ss} {4}" -f $_.To, $organizer, $_.CC, $_.ReceivedTime, $_.Subject
} | Out-String -Width 1024

输出示例(To和MeetingOrganizer字段为空):

<spaces>2024-04-05 06:59:00 Tentative: meeting subject

问题:输出中的To和MeetingOrganizer字段均为空,但在Outlook已发送邮件文件夹中能正常看到组织者名称。使用版本为Microsoft® Outlook® for Microsoft 365 MSO (Version 2403 Build 16.0.17425.20124) 64位。

尝试的修改方案

感谢Dmitry Streblechenko的解答,我按照建议修改了代码,改用Restrict方法过滤,并尝试通过关联约会获取组织者信息:

...
$Filter = "[ReceivedTime] >= '$Start' AND [ReceivedTime] < '$End'"

$sentMail.Items.Restrict($Filter) | ForEach-Object {
  $to = $_.To
  $appt = $_.getAssociatedAppointment($true)
  if ($appt -ne $null) {
    $to = $appt.Organizer
  }

  "{0,-20} {1,-20} {2:yyyy-MM-dd HH:mm:ss} {3}" -f $to, $_.CC, $_.ReceivedTime, $_.Subject
} | Out-String -Width 1024

新的异常问题

编辑补充:修改后的代码对拒绝会议的响应无效——To、Organizer和收件人字段均为空(尽管Outlook已发送项中显示了收件人)。更奇怪的是,我对同一个会议依次执行接受、暂定、拒绝操作后,原本能正常显示的前两个响应的组织者信息,在执行拒绝操作后全部丢失了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:20:32