【问题标题】:Need Microsoft Outlook/Exchange mailbox version via batch script通过批处理脚本需要 Microsoft Outlook/Exchange 邮箱版本
【发布时间】:2016-03-03 22:09:45
【问题描述】:

有什么方法可以判断用户的 Outlook 客户端邮箱是驻留在 Exchange 2010 邮箱还是 Exchange 2013 邮箱中,并具有以下要求:

  • 我需要能够仅从客户端通过本地计算机上的注册表项或文件向我表明它是 Exchange 2010 或 2013 客户端
  • 不使用 PowerShell。我希望能够找到差异并使用批处理脚本来记录管理人员在 Exchange 2010 邮箱中的用户以及在 Exchange 2013 邮箱中的用户。

我问的原因是因为公司正在将邮箱从 Exchange 2010 迁移到 Exchange 2013。我只能访问本地计算机。我想使用批处理编写报告。查找由 Exchange 2010/2013 客户端创建的注册表项或特定文件似乎是我最可行的选择。

【问题讨论】:

    标签: batch-file outlook registry exchange-server


    【解决方案1】:

    Exchange 服务器存储的版本数据确实以名为“0102663b”的二进制值存储在配置文件中每个存储的配置文件数据部分中

    HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\<profile name>\4cd3558f0de14d49a9023eb7f6002752
    

    “15.0”是 Outlook 版本,“”是配置文件的名称,“4cd3558f0de14d49a9023eb7f6002752”是配置文件部分的 guid(它是动态生成的,在不同的机器和配置文件上会有所不同)和“0102663b " 对应标记为 0x663B0102 的 MAPI 属性。

    对于解析值(例如0f 00 00 00 6a 04 a5 0f),它是一个8字节的int,版本的每个部分都编码为2字节的int。在您的情况下,它是 (0x0F, 0x0, 0x046A, 0x0FA5) = (15, 0, 1130, 4005)。

    Microsoft 不建议直接访问配置文件数据,因为位置会根据 Outlook 版本而变化。

    如果使用Redemption 是一个选项,它会公开RDOExchangeMailboxStore 对象的ServerVersion 属性。以下脚本将打印当前配置文件中所有 Exchange 邮箱的版本(假定 Application 对象指向 Outlook.Application 对象的一个​​实例):

      skPrimaryExchangeMailbox = 3
      skDelegateExchangeMailbox = 4
      set Session = CreateObject("Redemption.RDOSession")
      Session.MAPIOBJECT = Application.Session.MAPIOBJECT
      for each Store in Session.Stores
        If (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
          Debug.Print Store.ServerVersion & " - " & Store.Name
        End If
      next
    

    【讨论】:

    • 谢谢你,德米特里。在“0102663b”注册表项中,我看到一个十六进制值 0f 00 00 00 6a 04 a5 0f。我想知道是否有办法根据该十六进制值来判断版本?此外,我加载了 Redemption,将您的代码复制到 VBScript 中并运行它并收到以下错误消息(需要对象:'Application')。第 4 行字符 1。代码 800A01A8。
    • 我没有看到截图。它说什么?至于解析值,它是一个 8 字节的 int,版本的每个部分都编码为一个 2 字节的 int。在您的情况下,它是 (0x0F, 0x0, 0x046A, 0x0FA5) = (15, 0, 1130, 4005)。
    • 德米特里,谢谢!你已经为我提供了我正在寻找的答案。您能否将您的后续回复添加到原始回复中,以便我可以标记为已解决?如果这是一个单独的问题,请告诉我,我会创建一个,但是我可以在网上找到一个资源,告诉我哪些键包含哪些值?我用谷歌搜索“0102663b”,一无所获。 Outlook\Exchange 注册表项是神秘的,我想从这些项中提取尽可能多的信息。如果您有兴趣,这是我的批处理脚本(有效,但不完整)gist.github.com/CometAttack/aa5c3bcb1d000d72b195
    • 完成。请参阅上述内容。
    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多