收集 MDM 日志

为了帮助诊断由 MDM 服务器管理的 Windows 设备中的注册或设备管理问题,可以检查从桌面收集的 MDM 日志。 以下部分介绍收集 MDM 日志的过程。

从 Windows 设备下载 MDM 诊断信息日志

  1. 在托管设备上,转到 “设置>帐户>”“访问工作或学校”。

  2. 选择工作或学校帐户,然后选择 “信息”。

    在“设置”中访问工作或学校页面。

  3. “设置” 页底部,选择“ 创建报表”。

    访问工作或学校页面,然后访问“创建报表”。

  4. 此时会打开一个窗口,显示日志文件的路径。 选择“ 导出”。

    访问工作或学校日志文件。

  5. 在“文件资源管理器”中,导航到 C:\Users\Public\Documents\MDMDiagnostics 以查看报表。

使用 命令直接从 Windows 设备收集日志

还可以使用以下命令收集 MDM 诊断信息日志:

mdmdiagnosticstool.exe -area "DeviceEnrollment;DeviceProvisioning;Autopilot" -zip "c:\users\public\documents\MDMDiagReport.zip"
  • 在文件资源管理器中,导航到 c:\Users\Public\Documents\MDMDiagnostics 以查看报告。

了解 zip 结构

zip 文件根据 命令中使用的区域具有日志。 此说明基于 DeviceEnrollment、DeviceProvisioning 和 Autopilot 区域。 它适用于通过命令行或反馈中心收集的 zip 文件

  • DiagnosticLogCSP_Collector_Autopilot_*:Autopilot etls
  • DiagnosticLogCSP_Collector_DeviceProvisioning_*:预配 etls (Microsoft-Windows-Provisioning-Diagnostics-Provider)
  • MDMDiagHtmlReport.html:MDM 配置和策略的摘要快照。 包括、管理 URL、MDM 服务器设备 ID、证书、策略。
  • MdmDiagLogMetadata.json:mdmdiagnosticstool 元数据文件,其中包含用于运行该工具的命令行参数。
  • MDMDiagReport.xml:包含 MDM 配置的更详细视图,例如注册变量、预配包、多变量条件等。 有关诊断预配包的详细信息,请参阅 诊断预配包
  • MdmDiagReport_RegistryDump.reg:包含来自常见 MDM 注册表位置的转储
  • MdmLogCollectorFootPrint.txt:mdmdiagnosticslog 工具运行 命令的日志
  • *.evtx:常见事件查看器记录包含 MDM 事件的 microsoft-windows-devicemanagement-enterprise-diagnostics-provider-admin.evtx 主事件。

直接从 Windows 设备收集日志

MDM 日志在事件查看器中的以下位置捕获:

  • 应用程序和服务日志 > Microsoft > Windows > DeviceManagement-Enterprise-Diagnostic-Provider

下面是屏幕截图:

mdm 事件查看器。

在此位置, 管理员 通道默认记录事件。 但是,如果需要更详细的日志,可以通过在事件查看器的“查看”菜单中选择“显示分析和调试日志”选项来启用调试日志。

收集管理员日志

  1. 右键单击“ 管理 ”节点。
  2. 选择“ 将所有事件另存为”。
  3. 选择一个位置并输入文件名。
  4. 选择保存
  5. 选择 “显示这些语言的信息 ”,然后选择“ 英语”。
  6. 选择“确定”。

有关更详细的日志记录,可以启用 调试 日志。 右键单击“ 调试” 节点,然后选择“ 启用日志”。

收集调试日志

  1. 右键单击“ 调试” 节点。
  2. 选择“ 将所有事件另存为”。
  3. 选择一个位置并输入文件名。
  4. 选择保存
  5. 选择 “显示这些语言的信息 ”,然后选择“ 英语”。
  6. 选择“确定”。

可以在 Windows 设备上的事件查看器中打开日志文件 (.evtx 文件) 。

从 Windows 设备远程收集日志

如果电脑已在 MDM 中注册,则可以通过 MDM 通道从电脑远程收集日志(如果 MDM 服务器支持此功能)。 DiagnosticLog CSP 可用于按全名启用事件查看器通道。 下面是管理员和调试通道的事件查看器名称:

  • Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider%2FAdmin
  • Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider%2FDebug

示例:启用调试通道日志记录

<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Replace>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider%2FDebug/State</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">bool</Format>
                </Meta>
                <Data>true</Data>
            </Item>
        </Replace>
        <Final/>
    </SyncBody>
</SyncML>

示例:导出调试日志

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Exec>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider%2FDebug/Export</LocURI>
                </Target>
            </Item>
        </Exec>
        <Final/>
    </SyncBody>
</SyncML>

从 Windows 全息远程收集日志

对于已在 MDM 中注册的全息,可以使用 DiagnosticLog CSP 通过 MDM 通道远程收集 MDM 日志。

可以使用 DiagnosticLog CSP 启用 ETW 提供程序。 提供程序 ID 为 3DA494E4-0FE2-415C-B895-FB5265C5C83B。 以下示例演示如何启用 ETW 提供程序:

添加收集器节点

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Add>
            <CmdID>1</CmdID>
            <Item>
                <Target>
                   <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/MDM</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">node</Format>
                </Meta>
            </Item>
        </Add>
        <Final/>
    </SyncBody>
</SyncML>

将 ETW 提供程序添加到跟踪

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Add>
            <CmdID>1</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/MDM/Providers/3DA494E4-0FE2-415C-B895-FB5265C5C83B</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">node</Format>
                </Meta>
            </Item>
        </Add>
        <Final/>
    </SyncBody>
</SyncML>

启动收集器跟踪日志记录

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Exec>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/MDM/TraceControl</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">chr</Format>
                </Meta>
                <Data>START</Data>
            </Item>
        </Exec>
        <Final/>
    </SyncBody>
</SyncML>

停止收集器跟踪日志记录

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Exec>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/MDM/TraceControl</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">chr</Format>
                </Meta>
                <Data>STOP</Data>
            </Item>
        </Exec>
        <Final/>
    </SyncBody>
</SyncML>

在设备上收集日志后,可以使用 DiagnosticLog CSP 的 FileDownload 部分通过 MDM 通道检索文件。 有关详细信息,请参阅 DiagnosticLog CSP

查看日志

为了获得最佳结果,请确保查看日志的电脑或 VM 与从中收集日志的操作系统的内部版本匹配。

  1. 打开 eventvwr.msc。

  2. 右键单击“ 事件查看器” (“本地) ”,然后选择“ 打开保存的日志”。

    事件查看器屏幕截图。

  3. 导航到从设备获取的 etl 文件,然后打开该文件。

  4. 出现提示时选择“ ”,将其保存为新的日志格式。

    事件查看器提示。

    诊断 mdm 失败。

  5. 新视图包含来自通道的跟踪。 从“操作”菜单中选择“筛选当前日志”。

    事件查看器操作。

  6. 通过选择 “DeviceManagement-EnterpriseDiagnostics-Provider ”,将筛选器添加到事件源,然后选择“ 确定”。

    设备管理的事件筛选器。

  7. 现在可以开始查看日志了。

    事件查看器评审日志。

收集设备状态数据

下面是如何使用 DiagnosticLog CSP 收集当前 MDM 设备状态数据的示例。 可以在 CSP 中使用与处理 etl 文件相同的 FileDownload 节点从设备收集文件。

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Exec>
      <CmdID>2</CmdID>
      <Item>
        <Target>
          <LocURI>./Vendor/MSFT/DiagnosticLog/DeviceStateData/MdmConfiguration</LocURI>
        </Target>
        <Meta>
           <Format xmlns="syncml:metinf">chr</Format>
        </Meta>
        <Data>SNAP</Data>
      </Item>
    </Exec>
    <Final/>
  </SyncBody>
</SyncML>