CalCheck - Outlook 日历检查工具

原文发布于 2012 年 2 月 23 日(星期四)

在过去大约一年的时间里,我一直根据我作为 Outlook 工程师的经验以及其他工程师的建议开发该工具 - 增加功能和检查。最终在今年 2 月份发布了该工具,这样一来我们所有的客户便可下载并使用它以检查其日历中的潜在问题 - 它将有望在您使用 Outlook 日历遇到问题时(或者贵组织中用户的 Outlook 日历出现问题时)成为名副其实的省时工具。

安装

从 Microsoft 下载中心下载 CalCheck(该链接可能指向英文页面)

此实用程序适用于:

  • Microsoft Office Outlook 2003
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2010(32 位)
  • Microsoft Office Outlook 2010(64 位)
  • Microsoft Exchange Server 2003
  • Microsoft Exchange Server 2007
  • Microsoft Exchange Server 2010

重要提示:该工具的 64 位版本只适用于 64 位版本的 Microsoft Outlook 2010。

该下载是 ZIP 文件 - 只需在空目录中将其解压缩,在该目录中打开命令窗口,并运行它即可。

CalCheck 的用途

Outlook 日历检查工具 (CalCheck) 是一个可检查 Microsoft Outlook 日历问题的命令行程序。该工具会打开 Outlook 配置文件以访问 Outlook 日历。它可执行各种检查,例如权限、忙/闲发布、委派配置和自动预订。然后它会检查日历文件夹中的各个项目是否存在会导致意外行为(例如会议似乎丢失)的已知问题。

当 CalCheck 执行此过程时,它会生成可用于帮助诊断问题项目或确定趋势的报告。

检查的执行

执行以下日历特定的检查并在报告中进行记录:

  • 对日历的权限
  • 对日历的委派
  • 忙/闲发布信息
  • 邮箱或日历的直接预订设置
  • 日历文件夹中的项目总数

执行以下项级检查并在报告中进行记录:

  • 无组织者电子邮件地址
  • 无发件人电子邮件地址
  • 无 dispidRecurring 属性(导致项目不在日/周/月视图中显示)
  • 是否存在 dispidApptStartWhole 和 dispidApptEndWhole 属性的时间
  • 将来召开的会议或定期会议中没有主题(记录一条警告)
  • 消息类别检查(记录一条警告)
  • dispidApptRecur(重复周期 Blob)检查整体的开始和结束时间,而不是检查例外
  • 检查日历中的冲突项
  • 根据某些 MAPI 属性检查重复项
  • 检查是否超过 1250 个定期会议(记录一条警告)和 1300 个定期会议(报告一个错误);上限为 1300
  • 检查您是否是与会者以及您是否成为会议的组织者
  • 检查会议异常数据以确保其大小正确

服务器模式

您还可以选择在服务器模式下运行 CalCheck。在服务器模式下,CalCheck 会尝试打开 Exchange 服务器上的所有邮箱并执行本文的“执行的检查”一节中列出的检查。服务器模式会生成一个 CalCheckSvr.log 文件,其中将列出出现错误的邮箱。此外,CalCheck 会为每个邮箱生成单独的 CalCheck__.log 文件。此日志文件可显示更多邮箱特定的详细信息。

若要使用服务器模式,您必须使用与有权访问指定 Exchange 服务器上的所有邮箱的帐户关联的消息配置文件。若要运行服务器模式,请使用“-S”命令行开关。

示例

运行以检查单个邮箱/日历:

图像

如果您未在命令行中指定配置文件,则系统将提示您选择配置文件,如上面的屏幕截图中所示。

选择配置文件后,该工具将运行,并且只要一切成功,您将看到类似输出:

图像

查看此窗口,其中显示存在 CalCheck.log 以及可在何处找到该文件。打开该文件将显示如下一些信息:

02/17/2012 05:09:20PM Calendar Checking Tool - Version 1.0
02/17/2012 05:09:20PM ====================================
02/17/2012 05:13:45PM Opening mailbox: Mailbox 02/17/2012 05:13:45PM /O=Org/OU=OU/cn=Recipients/cn=Mailbox
02/17/2012 05:13:45PM Local time zone: Eastern Standard Time 02/17/2012 05:13:45PM Successfully opened the Calendar folder. 02/17/2012
05:13:45PM Processing calendar for Mailbox
02/17/2012 05:13:46PM Successfully located and opened the local free busy message for this mailbox.
02/17/2012 05:13:47PM Publishing 2 month(s) of free/busy data on the server.
02/17/2012 05:13:47PM Resource Scheduling / Automatically accept meeting requests is disabled.
02/17/2012 05:13:47PM ====================================
02/17/2012 05:13:47PM Delegates for this mailbox:
02/17/2012 05:13:47PM ===========================
02/17/2012 05:13:47PM No delegates are set.
02/17/2012 05:13:47PM ===========================
02/17/2012 05:13:47PM Permissions on this Calendar:
02/17/2012 05:13:47PM =============================
02/17/2012 05:13:47PM Default: None
02/17/2012 05:13:47PM Manager: Reviewer
02/17/2012 05:13:47PM Coworker1: None
02/17/2012 05:13:47PM Coworker2: Reviewer
02/17/2012 05:13:47PM Coworker3: Reviewer
02/17/2012 05:13:47PM =============================
02/17/2012 05:13:48PM Found 1404 items in the Calendar. Processing...
02/17/2012 05:13:48PM WARNING: No Subject on this item. You may want to add a Subject to this item.
02/17/2012 05:13:48PM Properties to help investigate this reported item: 02/17/2012 05:13:48PM Subject:
Location: No subject on recurring item
Start Time: 01/11/2011 10:00:00PM
End Time: 01/11/2011 10:30:00PM
Last Modifier: Mailbox
Last Modified Time: 02/04/2011 02:48:08PM
Is a recurring appointment: true
Sender Name: Mailbox
Sender Address: /o=Org/ou=OU/cn=recipients/cn=Mailbox
Organizer Name: Mailbox
Organizer Address: /o=Org/ou=OU/cn=recipients/cn=Mailbox
Recurrence Start: 12:00:00.000 AM 1/11/2011
Recurrence End: 12:00:00.000 AM 2/1/2011
Recurrence End Type: End After X Occurrences
Number of Exceptions: 0x0000
 
02/17/2012 05:13:50PM ERROR: Detected a duplicate item in the Calendar. Please check this item.
02/17/2012 05:13:50PM Properties to help investigate this reported item:
02/17/2012 05:13:50PM Subject: Doctor appointment
Location: Doctor’s Office
Start Time: 03/04/2012 04:30:00PM
End Time: 03/04/2012 06:00:00PM
Last Modifier: Mailbox
Last Modified Time: 08/01/2011 06:29:05PM
Is a recurring appointment: false
Sender Name: Mailbox
Sender Address: /o=Org/ou=OU/cn=recipients/cn=Mailbox
Organizer Name: Mailbox
Organizer Address: /o=Org/ou=OU/cn=recipients/cn=Mailbox

有关找到的问题项目,该报告将提供可用于转到并查找问题项目的信息,以便能够删除它、重新创建它或修复它(如有可能)等。

命令开关及其用途

CalCheck [-P ] [-M ] [-S ] [-A] [-F] [-R] [-V] [-No] CalCheck -?
 
-P 配置文件名称(如果未指定此参数,则该工具将提示您提供配置文件)
-M 邮箱 DN(如果指定此参数,则仅处理指定的邮箱)
-S 服务器名称(处理整个服务器,除非指定某个邮箱)
-A 将所有日历项目输出到 CALCHECK.CSV
-F 创建 CalCheck 文件夹,并将标记的错误项目移动到该文件夹中
-R 将包含 CalCheck.log 文件的报告邮件放在收件箱中
-V 详细输出到命令提示符窗口
-No 省略日历项测试
No 参数与“org”一起使用可省略“与会者成为组织者”测试,与“dup”一起使用可省略重复项检测
-? 显示此消息

有关特定开关的一些其他提示:

“-M” :您必须对邮箱使用 legacyExchangeDN,且您使用的配置文件必须是有权打开其他邮箱的邮箱的配置文件。

“-A” :将创建包含所有日历项目(每行一个)的 CSV 文件。将为可用于查找该工具未检测到的问题的每个项目列出一些属性:

图像

您可以通过在 Excel 中打开该 CSV 来查看日历中的所有项目。您可以根据开始时间、主题、定期项目等内容排序和筛选项目。这对于查找 CalCheck 无法检测到的或者当前并非由 CalCheck 查找的问题十分有用。如果您在该 CSV 中找到问题项目,可以打开日历并将其放入类别视图以获取类似 Outlook 中日历的视图。

为此,请在 Outlook 中,单击“视图”(View) 选项卡,单击“更改视图”(Change View) 下拉列表,并选择“按类别”(By Category)。这将显示如下所示的日历视图:

图像

图像

此视图将日历中的所有项目显示为列表,与在“收件箱”(Inbox) 文件夹中查看电子邮件类似。您可在此对“主题”(Subject)、“位置”(Location)、“开始”(Start) 和“结束”(End) 等内容进行排序。这可用于在普通日历视图中查找有困难或无法查找时查找日历文件夹中的问题项目。

“-F” :将在您的文件夹列表中创建 CalCheck 文件夹,并将标记为“错误”的项目移到该文件夹中:

图像

可轻松将项目移回日历中,或者在不需要时从此处删除项目,或者根据需要进行更正并在稍后放回日历中。一般经验是重新创建项目并删除移动到 CalCheck 文件夹中的项目。

“-R” :将在“收件箱”(Inbox) 文件夹中创建邮件并将 CalCheck.log 文件添加为附件。在服务器模式下运行该工具时,这将十分有用,因为每位用户将在其收件箱中收到其报告:

图像

“-No” :它有两种类型:“-No org”和“-No dup”:

“-No org” :将省略对“与会者成为会议的组织者”进行检查。此检查的一部分使用邮箱的 legacyExchangeDN。如果 legacyExchangeDN 出于任何原因(例如迁移)已更改,则此测试将为可能并非真正错误的项目给出错误提示。由 CalCheck 记录的错误将显示两个 DN。以下是一个示例:

12/21/2011 05:27:25PM ERROR: dispidApptStateFlags is 1, but the address for this mailbox does not match the organizer address.
12/21/2011 05:27:25PM Check to ensure the Organizer Address is correct, and whether or not this user should be the organizer.
12/21/2011 05:27:25PM Organizer Address: /o=Org1/ou=admin group 1/cn=recipients/cn=user1
12/21/2011 05:27:25PM DN for this user: /o=Org2/ou=admin group 2/cn=recipients/cn=user1
12/21/2011 05:27:25PM See KB 2563324 for additional information: https://support.microsoft.com/kb/2563324/zh-cn
12/21/2011 05:27:25PM Properties to help investigate this reported item: 12/21/2011 05:27:25PM Subject: Test

此处的邮箱实际上是同一邮箱,但因为 legacyExchangeDN 已更改,它被标记为错误。

“-No dup” :将省略重复项检测,因为此测试会创建项目的内存列表并针对该列表测试每个项目。由于要进行额外处理并额外占用内存,它可能会略微减缓该过程。

CalCheck 不具备 的功能

  • CalCheck 只是一个报告工具。它不会自动修改或“修复”任何项目。如果使用了“-F”开关,它会将检测到的项目作为错误项移动到 CalCheck 文件夹,但除此之外,它不会对任何项目做出任何更改。
  • CalCheck 只能针对位于 Exchange 服务器上的日历运行。它无法针对其他服务器(例如 IMAP 或 POP3 等)运行。
  • CalCheck 无法发现日历项目可能发生的各种损坏。但是,它可以找到无需花费时间仔细梳理日历和/或联系技术支持即可攻破的许多已知问题。

反馈

请留下反馈意见!最好的方法是访问 https://calcheck.codeplex.com/discussions(该链接可能指向英文页面)

如果您遇到 CalCheck 的相关问题,您可在 https://calcheck.codeplex.com/workitem/list/basic(该链接可能指向英文页面)上发布有关它的信息

谢谢,希望这将帮助您节省诊断和解决日历问题的时间!

Randy Topken
高级呈报工程师
Outlook 团队

这是一篇本地化的博客文章。请访问 CalCheck - The Outlook Calendar Checking Tool 以查看原文