分析 Exchange Online 邮箱的日历诊断日志

为了帮助诊断 Exchange Online 邮箱的会议问题,可以分析日历诊断日志(CDL)。 若要获取会议的 CDL,请参阅 获取 Exchange Online 邮箱的日历诊断日志。

以下部分将指导你完成分析过程。

先决条件

使用 Get-CalendarDiagnosticObjectsSummary.ps1 脚本 为会议生成以下Microsoft Excel 文件:

<CalLogSummary_short 会议 ID>.xlsx

该文件应包含每个关键参与者的以下一组工作表:

  • <participant SMTP address>_TimeLine:包含时间线
  • <participant SMTP address>:包含增强型 CDL
  • <participant SMTP address>_Raw:包含原始 CDL

注意

  • 该脚本下载并处理原始 CDL,以提供增强的 CDL 和简洁的会议操作时间线。
  • 原始 CDL 分析不在本文的范围内。

分析会议操作的时间线

参与者的时间线工作表的顶部行提供常规会议信息,例如会议 ID、主题和组织者。 这些行后跟与参与者相关的会议操作的时间戳高级摘要。 可以使用时间线排查基本会议问题。

例如,假设你想要了解谁取消了会议。 在以下屏幕截图中,代理人的日程表工作表显示代理人在Outlook 网页版中取消了会议。

委托的时间线工作表的屏幕截图。

注意

时间线中的每个编号条目对应于原始 CDL 工作表中的一行。 跳过的数字对应于具有可忽略会议操作的原始 CDL 行。

在以下屏幕截图中,用户的日程表工作表显示用户在 Outlook 中删除了会议。

用户的日程表工作表的屏幕截图。

分析增强型 CDN

参与者增强的 CDL 提供了与参与者相关的会议操作的详细记录。 尽管增强型 CDL 工作表包含与原始 CDL 工作表相同的会议操作,但它具有以下优势:

  • 列标题具有可用于隐藏非前列会议操作的筛选器。 通过筛选,可以显著减少审阅的条目数。

  • 工作表包含向每个会议操作添加信息的新列。 例如:

    • 每个会议操作进行分类的 LogType 列。 如果对此列进行筛选,则可以隐藏标记为可忽略的所有会议操作,例如某些系统操作或清理操作。

    • 一个 FreeBusy 列,在每次日志操作后提供会议忙/忙状态。

    • 一个 ResponsibleUser 列,指定哪个用户或组件负责会议操作。

增强的 CDL 工作表列

下表从左到右描述了增强型 CDL 工作表中的每个列。 具有星号的列名指示重要的诊断数据。

列说明
LogRow 与原始 CDL 工作表中的行号相对应但因原始 CDL 工作表标题而偏移的行值。
LogTimestamp 记录会议操作的 UTC 日期和时间。
LogType* 会议操作类型:
  • Core:重要的会议操作。
  • Ignorable:可以忽略的例程系统操作。 例如,由Microsoft基于事件的助理(EBA)或基于时间的助理(TBA)执行的会议操作。
  • Cleanup:可以忽略的例行维护操作。 例如,删除会议响应的自动 Outlook 操作。
SubjectProperty* 会议主题
客户* 对日历项执行操作的客户端的短名称。 例如:
  • Outlook : Desktop : MAPI:用户使用 Outlook 桌面客户端执行会议操作。
  • OWA-ModernCalendarSharing:用户使用 Outlook Web 应用执行会议操作。
  • Other EBA:EBA 执行会议操作。
  • Transport:日历项处于传输状态时发生会议操作。
LogClientInfoString 对日历项执行操作的客户端的长名称。
TriggerAction* 触发会议操作的上游操作,例如:
  • Create:用户创建日历项。
  • Update:用户更新日历项。
  • Move:用户将日历项移动到其他 Outlook 文件夹。
  • MoveToDeletedItems:用户将日历项目移动到 Outlook 中的“已删除邮件 ”文件夹。
  • SoftDelete:用户软删除日历项。
  • HardDelete:用户硬删除日历项。
触发器操作经常成对发生,用几秒钟分隔。 例如:
  • Create会议的触发器操作通常后跟Create会议项上的IPM.Appointment触发器操作。Update
  • Create接受的触发器操作通常后跟Update会议项目的触发器操作IPM.Appointment,以将其忙/闲状态设置为 Busy
  • Transport当与会者发送会议请求响应时发生的触发器操作通常后跟Update会议项目的触发器操作IPM.Appointment
ItemClass* 日历项的类,例如:
  • IPM.Appointment:会议项。
  • IPM.Schedule.Meeting.Request:会议请求项。
  • IPM.Schedule.Meeting.Canceled:会议取消项。 对于此项类,只 Create 关注触发器操作。
  • IPM.Schedule.Meeting.Notification.Forward:将会议转发给新用户时生成的会议转发通知项。 对于此项类,只 Create 关注触发器操作。
  • IPM.Schedule.Meeting.Resp.Pos:接受的会议响应项目。 对于此项类,只 Create 关注触发器操作。
  • IPM.Schedule.Meeting.Resp.Tent:暂定会议响应项。 对于此项类,只 Create 关注触发器操作。
  • IPM.Schedule.Meeting.Resp.Neg:拒绝的会议响应项。 对于此项类,只 Create 关注触发器操作。
注意:除非对响应跟踪问题进行故障排除,否则可以忽略 IPM.Schedule.Meeting.Resp.Pos/Tent/Neg 项类。
Seq:Exp:ItemVersion 复合值,包括:
  • AppointmentSequenceNumber:约会或会议的序列号。 更新了对时间、日期或位置的重大更改。
  • ExceptionNumber:异常的序列号。
  • ItemVersion:日历项的版本。
组织者* 约会或会议组织者的电子邮件地址。 对于会议响应,组织者是答复的用户。
From 约会或会议的组织者的 SMTP 地址。
FreeBusyStatus 日历项的忙/闲状态,例如:
  • Free
  • Busy
  • Tentative
  • Out of office
ResponsibleUser* 负责会议操作的用户或组件。
发送方 日历项目发件人的 SMTP 地址。
LogFolder 在其中找到日志条目的邮箱文件夹。 通常,可以忽略此列。
注意:日历日志记录文件夹中的 日志 条目在 31 天后被删除。
OriginalLogFolder 日历项目最初传递到的邮箱文件夹。
SharedFolderName
  • 如果文件夹是共享的,则该值为文件夹所有者的名称。
  • 如果未共享文件夹,则值为 Not Shared
IsFromSharedCalendar 指示日历项是否来自共享日历的布尔值。
ExternalSharingMasterId 外部共享的主日历项的唯一标识符。 如果 CDL 条目来自另一个邮箱,则值为 NotFound
ReceivedBy 日历项收件人的电子邮件地址或空白值。 通常,可以忽略此列。
ReceivedRepresenting 代表收件人接收日历项的代理人的电子邮件地址。
MeetingRequestType 会议请求的类型,例如:
  • NewMeetingRequest
  • FullUpdate
  • InformationalUpdate
  • Response
StartTime* 会议开始时间。
EndTime 会议结束时间。
OriginalStartDate 会议的原始开始日期。 除非重新安排会议,否则该值为空。
TimeZone 会议的时区。
位置 会议的位置。
CalendarItemType 日历项的类型,例如:
  • Single:非递归日历项。
  • Occurrence:定期日历项。
  • RecurringMaster:一组定期日历项的父项。
IsException 指示日历项是否是定期日历系列的异常的布尔值。
RecurrencePattern 日历项的重复频率,例如:
  • DailyRecurrence:定期频率(以天为单位)。
  • WeeklyRecurrence:以周和天为单位的重复频率。
  • RelativeMonthlyRecurrence:相对每月定期模式。
  • AbsoluteYearlyRecurrence:每年重复模式。
如果日历项不递归,则值为空。
AppointmentAuxiliaryFlags 一组标志,这些标志提供有关约会或会议的其他信息。 如果未应用任何标志,该值为空。
DisplayAttendeesAll 会议请求的与会者列表。 对于其他日历项,值为 NotFound.
AttendeeCount 与会者数。
AppointmentState 约会或会议状态的复合值,例如:
  • Meeting
  • Received
  • Cancelled
例如,该值可能 Meeting, Cancelled 指示会议已取消。
ResponseType* 与会者响应类型,例如:
  • None
  • Organizer
  • Tentative
  • Accept
  • Decline
  • NotResponded
ClientIntent 执行触发日志条目的操作的客户端应用程序的意向,例如:
  • None
  • MeetingMessageDelivery
该值仅指定几个意向,并且通常为空。
AppointmentRecurring 指示约会还是定期会议的布尔值。
HasAttachment 指示日历项是否具有任何附件的布尔值。
IsCancelled 指示是否取消日历项的布尔值。
IsAllDayEvent 指示日历项是否为全天事件的布尔值。
IsSeriesCancelled 指示是否取消整个定期日历项系列的布尔值。 对于非递归日历项目,该值为空。
SendMeetingMessagesDiagnostics 提供会议更改指标的复合值,可用于诊断会议更新未发送到所有会议参与者的原因。 例如,请考虑以下值:
RID=194b9d80-3a78-732c-3365-26041d4e76ec;SMMM=2;OAC=4;NAC=;AC=False;IIOM=;PC=4(Item.Body,Item.Subject)
在此示例中,重要的指标包括:
  • SMMM
    • 0:会议更新通知未发送给任何与会者。
    • 1:仅向添加或删除的与会者发送了会议更新通知。
    • 2:会议更新通知已发送给所有与会者。
  • OAC:会议与会者的原始数量。
  • NAC:新的会议与会者数。 如果数字不变,则值为空。
  • AC:指示与会者列表是否已更改的布尔值。
  • PC:已更改的会议属性数,以及已更改属性的部分列表。 已更改的属性(例如 Item.BodyItem.Subject 足够重要),可以触发系统生成的会议更新通知给所有与会者。
注意:某些指标可能为空。
AttendeeCollection 与会者列表及其响应的详细信息,例如:
  • 与会者电子邮件地址
  • 与会者类型:
    • 0:未指定
    • 1:必填
    • 2 可选:
    • 3:资源
  • 与会者响应类型:
    • 0:没有
    • 1:组织者
    • 2:初步
    • 接受:3
    • 4:下降
    • 5:未响应
  • 与会者响应的 UTC 时间戳
如果在运行 Get-CalendarDiagnosticObjectsSummary.ps1 脚本时不使用 -TrackingLogs 开关,则值为空。
CalendarLogRequestId 日历日志请求的唯一标识符。
CleanGlobalObjectId 唯一不可变会议 ID。

增强的 CDL 工作表筛选器

由于 CDL 通常包含大量数据,因此建议在开始分析之前筛选掉不必要的信息。 若要筛选 CDL,请执行以下步骤:

  1. 筛选 LogType 列以仅显示 Core 条目。

  2. 筛选 ItemClass 列以删除以下条目:

    • Meeting.Response
    • IPM.Schedule.Meeting.Notification.Forward
  3. 筛选 LogTimestamp 列以删除感兴趣的时间段之外的日志条目。