DiagnosticLog 云解决方案提供商

以下列表显示了 DiagnosticLog 配置服务提供程序节点:

DeviceStateData

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/DeviceStateData

CSP 公开的所有类型的设备状态数据的根节点。

DiagnosticLog CSP 中的 DeviceStateData 功能提供额外的设备信息。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

DeviceStateData/MdmConfiguration

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1607 [10.0.14393] 及更高版本
./Vendor/MSFT/DiagnosticLog/DeviceStateData/MdmConfiguration

此节点使用“SNAP”触发设备管理状态数据的对齐。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 Exec、Get

示例

<?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>

DiagnosticArchive

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/DiagnosticArchive

存档定义和集合的根节点。

DiagnosticLog CSP 中的 DiagnosticArchive 功能用于触发设备,将故障排除数据收集到 zip 存档文件中,并将该存档上传到云存储。

DiagnosticArchive 专为即席故障排除方案而设计,例如 IT 管理员使用事件日志事件、注册表值以及应用或 OS 日志文件的集合调查应用安装失败。

注意

DiagnosticArchive 是用于设备故障排除的“打破玻璃”后备选项。 诊断数据(如日志文件)可以增加到数 GB。 收集、传输和存储大量数据可能会给用户的设备、网络和云存储造成负担。 调用 DiagnosticArchive 的管理服务器必须注意尽量减少数据收集频率和范围。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

DiagnosticArchive/ArchiveDefinition

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/DiagnosticArchive/ArchiveDefinition

此节点的执行操作接受 Collection XML 代码片段 (作为字符串,) 描述要收集的数据和上传位置。 结果将被压缩并上传到指定的 SasUrl。 压缩的文件名格式为 DiagLogs-{ComputerName}-YYYYMMDDTHHMMSSZ.zip

使用 Windows 10 KB5011543 和 Windows 11 KB5011563,可以额外支持一个额外的元素,该元素将确定 CSP 生成的输出文件是否为平展文件夹结构,而不是为 XML 中的每个指令提供单独的文件夹。 以下示例显示了一个 Collection XML:

<Collection>
   <!--NOTE: The value shown here is an example only, for more information see the ID documentation which follows the example -->
   <ID>f1e20cb4-9789-4f6b-8f6a-766989764c6d</ID>
   <!--NOTE: The value shown here is an example only, for more information see the SasUrl documentation which follows the example -->
   <SasUrl><![CDATA[https://myaccount.blob.core.windows.net/mycontainer?sp=aw&st=2020-07-01T23:02:07Z&se=2020-07-02T23:02:07Z&sv=2019-10-10&sr=c&sig=wx9%2FhwrczAI0nZL7zl%2BhfZVfOBvboTAnrGYfjlO%2FRFA%3D]]></SasUrl>
   <RegistryKey>HKLM\Software\Policies</RegistryKey>
   <FoldersFiles>%ProgramData%\Microsoft\DiagnosticLogCSP\Collectors\*.etl</FoldersFiles>
   <Command>%windir%\system32\ipconfig.exe /all</Command>
   <Command>%windir%\system32\mdmdiagnosticstool.exe -out %ProgramData%\temp\</Command>
   <FoldersFiles>%ProgramData%\temp\*.*</FoldersFiles>
   <Events>Application</Events>
   <OutputFileFormat>Flattened</OutputFileFormat>
</Collection>

XML 应在 元素中 Collection 包含以下元素:

  • ID:ID 值唯一标识此数据收集请求。 为了避免意外重复数据收集,CSP 会忽略具有相同 ID 值的后续 Set 或 Execute 调用。 CSP 希望在收到请求时填充值,因此必须由 IT 管理员或管理服务器生成该值。
  • SasUrl:SasUrl 值是 CSP 将包含收集的数据的 zip 文件上传到的目标 URI。 管理服务器负责预配存储,以便存储服务器接受设备的 HTTP PUT 到此 URL。 例如,设备管理服务可以:
    • 预配可由目标设备访问的云存储,例如 Microsoft Azure Blob 存储容器
    • 生成共享访问签名 URL,授予拥有者 (目标设备) 对存储容器的限时写入访问权限
    • 通过 Collection XML 作为 SasUrl 值将此值传递给目标设备上的 CSP。

此外,XML 可能包含 一个或多个数据收集指令,其中可能包括以下任何一项:

  • RegistryKey:导出给定路径下的所有项名称和值, (递归) 。

    • 预期的输入值:注册表路径,例如“HKLM\Software\Policies”。
    • 输出格式:创建.reg文件,类似于 reg.exe EXPORT 命令的输出。
    • 隐私防护措施:为了启用诊断日志捕获,同时降低 IT 管理员无意中捕获用户生成文档的风险,注册表路径仅限于 HKLM 和 HKCR 下的路径。
  • 事件:从命名的 Windows 事件日志中导出所有事件。

    • 预期输入值:命名事件日志通道,例如“Application”或“Microsoft-Windows-DeviceGuard/Operational”。
    • 输出格式:创建 .evtx 文件。
  • 命令:此指令类型允许执行特定命令,例如 ipconfig.exe。 请注意,DiagnosticArchive 和 Commands 指令不是通用脚本平台。 DiagnosticArchive 上下文中允许使用这些命令来处理关键设备信息可能无法通过现有日志文件获取的情况。

    • 预期的输入值:完整的命令行,包括路径和任何参数,例如 %windir%\\system32\\ipconfig.exe /all
    • 输出格式:命令的控制台文本输出捕获在文本文件中,并包含在整个输出存档中。 对于可能生成文件输出而不是控制台输出的命令,将使用后续 FolderFiles 指令来捕获该输出。 上面的示例 XML 使用 mdmdiagnosticstool.exe 的 -out 参数演示了此模式。
    • 隐私防护:若要启用诊断数据捕获,同时降低 IT 管理员无意中捕获用户生成文档的风险,仅允许以下命令:
      • %windir%\system32\certutil.exe
      • %windir%\system32\dxdiag.exe
      • %windir%\system32\gpresult.exe
      • %windir%\system32\msinfo32.exe
      • %windir%\system32\netsh.exe
      • %windir%\system32\nltest.exe
      • %windir%\system32\ping.exe
      • %windir%\system32\powercfg.exe
      • %windir%\system32\w32tm.exe
      • %windir%\system32\wpr.exe
      • %windir%\system32\dsregcmd.exe
      • %windir%\system32\dispdiag.exe
      • %windir%\system32\ipconfig.exe
      • %windir%\system32\logman.exe
      • %windir%\system32\tracelog.exe
      • %programfiles%\windows defender\mpcmdrun.exe
      • %windir%\system32\MdmDiagnosticsTool.exe
      • %windir%\system32\pnputil.exe
  • FoldersFiles:从给定路径 (捕获日志文件,而不) 递归。

    • 预期的输入值:带或不带通配符的文件路径,例如“%windir%\System32”或“%programfiles%\*.log”。
    • 隐私防护:若要启用诊断日志捕获,同时降低 IT 管理员无意中捕获用户生成文档的风险,仅允许以下根下的路径:
      • %PROGRAMFILES%
      • %PROGRAMDATA%
      • %PUBLIC%
      • %WINDIR%
      • %TEMP%
      • %TMP%
    • 此外,仅捕获具有以下扩展名的文件:
      • 。日志
      • .txt
      • .dmp
      • .cab
      • .zip
      • .xml
      • .html
      • .evtx
      • 。Etl
  • OutputFileFormat:平展文件夹结构,而不是为 XML 中的每个指令提供单独的文件夹。

    • 值“平展”是 OutputFileFormat 唯一支持的值。 如果 XML 中不存在 OutputFileFormat,或者显式设置为 Flattened 以外的其他内容,则会将文件结构保留为旧结构。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 Exec、Get、Replace

DiagnosticArchive/ArchiveResults

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/DiagnosticArchive/ArchiveResults

拉取上次存档运行的结果。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 “获取”

示例

获取上述 URI 将返回最后一个诊断请求的数据收集结果。 例如:

<SyncML>
    <SyncHdr/>
      <SyncBody>
          <Status>
            <CmdID>1</CmdID>
            <MsgRef>1</MsgRef>
            <CmdRef>0</CmdRef>
            <Cmd>SyncHdr</Cmd>
            <Data>200</Data>
          </Status>
          <Status>
            <CmdID>2</CmdID>
            <MsgRef>1</MsgRef>
            <CmdRef>1</CmdRef>
            <Cmd>Get</Cmd>
            <Data>200</Data>
          </Status>
          <Results>
            <CmdID>3</CmdID>
            <MsgRef>1</MsgRef>
            <CmdRef>1</CmdRef>
          <Item>
            <Source>
            <LocURI>./Vendor/MSFT/DiagnosticLog/DiagnosticArchive/ArchiveResults</LocURI>
            </Source>
          <Data>
            <Collection HRESULT="0">
                <ID>f1e20cb4-9789-4f6b-8f6a-766989764c6d</ID>
                <RegistryKey HRESULT="0">HKLM\Software\Policies</RegistryKey>
                <FoldersFiles HRESULT="0">C:\ProgramData\Microsoft\DiagnosticLogCSP\Collectors\*.etl</FoldersFiles>
                <Command HRESULT="0">%windir%\system32\ipconfig.exe /all</Command>
                <Command HRESULT="-2147024637">%windir%\system32\mdmdiagnosticstool.exe -out c:\ProgramData\temp\</Command>
                <FoldersFiles HRESULT="0">c:\ProgramData\temp\*.*</FoldersFiles>
                <Events HRESULT="0">Application</Events>
              </Collection>
          </Data>
          </Item>
          </Results>
          <Final/>
      </SyncBody>
</SyncML>

若要了解如何读取生成的数据,请参阅 如何查看 ArchiveResults

EtwLog

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog

CSP 管理的所有类型的事件日志记录节点的根节点。

DiagnosticLog CSP 的 Windows (ETW) 日志功能用于控制以下类型的事件跟踪:

ETW 日志功能专为高级使用而设计,并假定开发人员熟悉 ETW。 有关详细信息,请参阅 关于事件跟踪

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

EtwLog/Channels

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Channels

已注册的“通道”节点的根节点。

事件跟踪的类型从特定通道导出事件数据。 用户可以使用全名添加或删除通道节点,例如 Microsoft-Windows-AppModel-Runtime/管理员。

DiagnosticLog CSP 维护每个通道节点的日志文件,如果在同一通道节点上再次触发启动命令,则会覆盖日志文件。

对于每个通道节点,用户可以:

  • 将通道事件数据导出到日志文件 (.evtx) 。
  • 启用或禁用事件日志服务的通道,以允许或禁止将事件数据写入通道。
  • 指定 XPath 查询以在导出通道事件数据时筛选事件。

有关使用 DiagnosticLog 从电脑或移动设备远程收集日志的详细信息,请参阅 收集 MDM 日志

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

EtwLog/Channels/{ChannelName}

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/{ChannelName}

每个动态节点表示已注册的“通道”节点。 节点名称必须是有效的 Windows 事件日志通道名称,例如“Microsoft-Client-Licensing-Platform%2FAdmin”。 在 LocURI 中指定名称时,它必须经过 URL 编码,否则会意外地将其转换为其他 URI。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
动态节点命名 UniqueName:节点名称必须是有效的 Windows 事件日志通道名称,例如“Microsoft-Client-Licensing-Platform%2FAdmin”

示例

  • 添加频道

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Add>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Client-Licensing-Platform%2FAdmin</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>
            <Delete>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Client-Licensing-Platform%2FAdmin</LocURI>
                    </Target>
                </Item>
            </Delete>
            <Final/>
        </SyncBody>
    </SyncML>
    
EtwLog/Channels/{ChannelName}/Export
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/{ChannelName}/Export

此节点用于触发将事件从此节点的关联 Windows 事件通道导出到日志文件中。 日志文件的扩展名为 .evtx,这是 Windows 事件通道日志的标准扩展名。 “Get”命令返回此节点的名称。

描述框架属性:

属性名 属性值
格式 null
访问类型 Exec、Get

示例

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Exec>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Client-Licensing-Platform%2FAdmin/Export</LocURI>
                </Target>
            </Item>
        </Exec>
        <Final/>
    </SyncBody>
</SyncML>
EtwLog/Channels/{ChannelName}/Filter
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/{ChannelName}/Filter

此节点用于设置或获取 xpath 查询字符串,以便在从通道导出日志文件时筛选事件。 默认值为空字符串。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 获取、替换
默认值 ""

示例

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Get>
            <CmdID>1</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Client-Licensing-Platform%2FAdmin/Filter</LocURI>
                </Target>
            </Item>
        </Get>
        <Final/>
    </SyncBody>
</SyncML>
EtwLog/Channels/{ChannelName}/State
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/{ChannelName}/State

此节点用于设置或获取系统中此节点关联 Windows 事件通道的“已启用”状态。 将其设置为“TRUE”可启用通道;将其设置为“FALSE”将禁用通道。

描述框架属性:

属性名 属性值
格式 bool
访问类型 获取、替换

允许的值:

描述
true 通道已启用。
false 通道已禁用。

示例

  • 获取通道状态:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Get>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Client-Licensing-Platform%2FAdmin/State</LocURI>
                    </Target>
                </Item>
            </Get>
            <Final/>
        </SyncBody>
    </SyncML>
    
  • 设置通道状态:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Replace>
                <CmdID>2</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Channels/Microsoft-Client-Licensing-Platform%2FAdmin/State</LocURI>
                    </Target>
                    <Meta>
                        <Format xmlns="syncml:metinf">bool</Format>
                    </Meta>
                    <Data>false</Data>
                </Item>
            </Replace>
            <Final/>
        </SyncBody>
    </SyncML>
    

EtwLog/Collectors

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors

已注册的“收集器”节点的根节点。

这种类型的事件跟踪从已注册的 ETW 提供程序集合收集事件数据。 事件收集器是已注册 ETW 提供程序的容器。 用户可以添加或删除收集器节点,并在此收集器中注册或注销多个提供程序。

{CollectorName} CSP 中必须是唯一的,并且不能是有效的事件通道名称或提供程序 GUID。

DiagnosticLog CSP 维护每个收集器节点的日志文件,如果在同一收集器节点上再次触发启动命令,则会覆盖日志文件。

对于每个收集器节点,用户可以:

  • 使用所有已注册和已启用的提供程序启动或停止会话。
  • 查询会话状态。
  • 更改跟踪日志文件模式。
  • 更改跟踪日志文件大小限制。

在跟踪会话正在进行时,配置日志文件模式和日志文件大小限制不会生效。 当用户停止当前会话,然后再次为此收集器启动它时,将应用这些属性。

对于此收集器中的每个已注册提供程序,用户可以:

  • 指定关键字以筛选来自此提供程序的事件。
  • 更改跟踪级别以筛选来自此提供程序的事件。
  • 在跟踪会话中启用或禁用提供程序。

在跟踪会话正在进行时, 状态关键字TraceLevel 上的更改将立即生效。

注意

Microsoft-WindowsPhone-Enterprise-Diagnostics-Provider (GUID - 3da494e4-0fe2-415C-b895-fb5265c5c83b) 具有 Windows 中内置的所需调试资源文件,这将允许在远程计算机上解码日志文件。 任何其他日志可能没有解码所需的调试资源。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

示例

若要使用此 CSP 收集诊断,请:

  1. 为目标 ETW 提供程序的容器指定 CollectorName
  2. (可选) 使用以下选项设置日志记录和日志文件参数:
  3. 通过向 EtwLog/Collectors/CollectorName/Providers/ProviderGUID 的 Add 操作提供其 ProviderGUID 来指示一个或多个目标 ETW 提供程序。
  4. (可选) 使用以下选项设置日志记录和日志文件参数:
  5. 使用 TraceControl EXECUTE 命令“START”开始日志记录。
  6. 在目标设备上执行将在日志文件中生成活动的操作。
  7. 使用 TraceControl EXECUTE 命令“STOP”停止日志记录。
  8. 使用 FileDownload 中所述的读取日志文件方法收集位于 %temp% 文件夹中的日志文件。

EtwLog/Collectors/{CollectorName}

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}

每个动态节点表示已注册的“收集器”节点。 CSP 将为此收集器维护一个 ETW 跟踪会话,其名称用作唯一标识符。 在收集器中,可以注册和注销有效的 ETW 提供程序。 如果提供程序的状态为“已启用”,收集器的关联跟踪会话将启用其中已注册的提供程序。 可以单独控制每个提供程序的状态、跟踪级别和关键字。 此节点的名称不能是有效的 Windows 事件通道名称。 它可以是 etw 提供程序 guid,只要它不等于已注册的“提供程序”节点名称。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
动态节点命名 ServerGeneratedUniqueIdentifier

示例

  • 添加收集器

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Add>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement</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>
            <Delete>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement</LocURI>
                    </Target>
                </Item>
            </Delete>
            <Final/>
        </SyncBody>
    </SyncML>
    
EtwLog/Collectors/{CollectorName}/LogFileSizeLimitMB
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/LogFileSizeLimitMB

此节点用于设置或获取跟踪日志文件大小限制 ((以兆字节为单位),) 此收集器节点的关联跟踪会话。 值范围为 1~2048。 默认值为 4。

描述框架属性:

属性名 属性值
格式 int
访问类型 获取、替换
允许的值 范围: [1-2048]
默认值 4
EtwLog/Collectors/{CollectorName}/Providers
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/Providers

在此收集器节点中注册的所有提供程序的根节点。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}

每个动态节点表示在此收集器节点中注册的 ETW 提供程序。 节点名称必须是有效的提供程序 GUID。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
动态节点命名 UniqueName:节点名称必须是有效的提供程序 GUID。

示例

  • 添加提供程序:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Add>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/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>
            <Delete>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/Providers/3da494e4-0fe2-415C-b895-fb5265c5c83b</LocURI>
                    </Target>
                </Item>
            </Delete>
            <Final/>
        </SyncBody>
    </SyncML>
    
EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}/Keywords
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}/Keywords

此节点用于在此收集器节点的关联跟踪会话中设置或获取事件提供程序的关键字。 字符串采用十六进制数字和 16 个字符宽的形式。 它将在 CSP 内部转换为 ULONGLONG 数据类型。 默认值为“0”,这意味着包括来自此提供程序的所有事件。 如果关联的跟踪会话正在进行中,则会立即应用新的关键字设置;如果不是,则会在下次启动会话时应用它。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 获取、替换
默认值 "0"

示例

  • 获取提供程序关键字:

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>
        <Get>
          <CmdID>1</CmdID>
          <Item>
            <Target>
              <LocURI>
                ./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/Providers/3da494e4-0fe2-415C-b895-fb5265c5c83b/Keywords
              </LocURI>
            </Target>
          </Item>
        </Get>
        <Final/>
      </SyncBody>
    </SyncML>
    
  • 设置提供程序关键字:

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>
        <Replace>
          <CmdID>4</CmdID>
          <Item>
            <Target>
              <LocURI>
                ./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/Providers/3da494e4-0fe2-415C-b895-fb5265c5c83b/Keywords
              </LocURI>
            </Target>
            <Meta>
              <Format xmlns="syncml:metinf">chr</Format>
              <Type>text/plain</Type>
            </Meta>
            <Data>12345678FFFFFFFF</Data>
          </Item>
        </Replace>
        <Final/>
      </SyncBody>
    </SyncML>
    
EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}/State
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}/State

此节点用于在此收集器节点的关联跟踪会话中设置或获取事件提供程序的状态。 如果未启动跟踪会话,则更改值可控制在会话启动时是否启用提供程序;如果跟踪会话已启动,则更改其值会导致在实时跟踪会话中启用或禁用提供程序。 默认值为 true。

描述框架属性:

属性名 属性值
格式 bool
访问类型 获取、替换
默认值 true

允许的值:

描述
true (默认) 在跟踪会话中启用了提供程序。 这是默认设置。
false 在跟踪会话中禁用提供程序。

示例

设置提供程序状态:

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Replace>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/Providers/3da494e4-0fe2-415C-b895-fb5265c5c83b/State</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">bool</Format>
                </Meta>
                <Data>false</Data>
            </Item>
        </Replace>
        <Final/>
    </SyncBody>
</SyncML>
EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}/TraceLevel
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/Providers/{ProviderGuid}/TraceLevel

此节点用于在此收集器节点的关联跟踪会话中设置或获取此事件提供程序的跟踪级别。 默认值为 5,这是TRACE_LEVEL_VERBOSE。 如果关联的跟踪会话正在进行中,则会立即应用新的跟踪级别设置;如果不是,则会在下次启动会话时应用它。

描述框架属性:

属性名 属性值
格式 int
访问类型 获取、替换
默认值 5

允许的值:

描述
1 TRACE_LEVEL_CRITICAL - 异常退出或终止事件。
2 TRACE_LEVEL_ERROR - 严重错误事件。
3 TRACE_LEVEL_WARNING - 分配失败等警告事件。
4 TRACE_LEVEL_INFORMATION - 非错误事件,例如入口或退出事件。
5 (默认) TRACE_LEVEL_VERBOSE - 详细信息。

示例

设置提供程序 TraceLevel:

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Replace>
            <CmdID>2</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/Providers/3da494e4-0fe2-415C-b895-fb5265c5c83b/TraceLevel</LocURI>
                </Target>
                <Meta>
                    <Format xmlns="syncml:metinf">int</Format>
                </Meta>
                <Data>1</Data>
            </Item>
        </Replace>
        <Final/>
    </SyncBody>
</SyncML>
EtwLog/Collectors/{CollectorName}/TraceControl
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/TraceControl

此节点将触发此收集器节点的关联跟踪会话的“启动”和“停止”。 “Get”返回此节点的名称。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 Exec、Get

允许的值:

描述
START 启动日志跟踪。
STOP 停止日志跟踪。

示例

添加日志记录任务后,可以通过在此节点上运行 Execute 命令来启动/停止跟踪。

  • 启动收集器跟踪日志记录:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Exec>
                <CmdID>2</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/DeviceManagement/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/DeviceManagement/TraceControl</LocURI>
                    </Target>
                    <Meta>
                        <Format xmlns="syncml:metinf">chr</Format>
                    </Meta>
                    <Data>STOP</Data>
                </Item>
            </Exec>
            <Final/>
        </SyncBody>
    </SyncML>
    
EtwLog/Collectors/{CollectorName}/TraceLogFileMode
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/TraceLogFileMode

此节点用于设置或获取此收集器节点的关联跟踪会话的跟踪日志文件模式。 仅允许的两个值是 1 和 2,它们是EVENT_TRACE_FILE_MODE_SEQUENTIAL和EVENT_TRACE_FILE_MODE_CIRCULAR。 默认值为 1。

描述框架属性:

属性名 属性值
格式 int
访问类型 获取、替换
默认值 1

允许的值:

描述
1 (默认) 按顺序将事件 EVENT_TRACE_FILE_MODE_SEQUENTIAL-Writes 日志文件。 当文件达到其最大大小时,它会停止。
2 将事件 EVENT_TRACE_FILE_MODE_CIRCULAR-Writes 日志文件。 文件达到最大大小后,最早的事件将替换为传入事件。
EtwLog/Collectors/{CollectorName}/TraceStatus
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/EtwLog/Collectors/{CollectorName}/TraceStatus

此节点用于获取此收集器节点的关联跟踪会话的状态。 1 表示“正在进行”;0 表示“未启动或停止”。

描述框架属性:

属性名 属性值
格式 int
访问类型 “获取”

FileDownload

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload

与 csp 中的日志文件下载相关的所有 csp 节点的根节点。

DiagnosticLog CSP 的 FileDownload 功能使管理服务器可以直接从设备拉取数据。 在 FileDownload 上下文中,客户端和服务器角色在概念上是相反的,管理服务器充当客户端从托管设备下载数据。

读取日志文件

  1. 枚举 ./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel 下的日志文件。
  2. 在枚举结果中选择日志文件。
  3. 设置 BlockSizeKB per DM 服务器有效负载限制。
  4. 获取 BlockCount 以确定读取请求总数。
  5. 设置 BlockIndexToRead 以初始化读取起点。
  6. 获取用于上传日志块的 BlockData
  7. 增加 BlockIndexToRead
  8. 重复步骤 5 到 7,直到 BlockIndexToRead == (BlockIndexToRead – 1)

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

FileDownload/DMChannel

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel

用于控制通过日志记录 csp 节点生成的关联日志文件的文件下载的所有 csp 节点的根节点。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

FileDownload/DMChannel/{FileContext}

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}

每个动态节点表示一个“FileContext”节点,该节点对应于一个日志记录 CSP 节点生成的日志文件, (位于“EtwLog”节点) 下面。 节点名称必须是已注册的“提供程序”、“收集器”或“通道”节点的名称。 日志文件及其位置将由 CSP 根据节点名称确定。 文件下载是通过将日志文件划分为已配置块大小的多个块,然后根据 MDM 服务器的要求发送块来完成的。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
动态节点命名 UniqueName:节点名称必须是已注册的“提供程序”、“收集器”或“通道”节点的名称。
FileDownload/DMChannel/{FileContext}/BlockCount
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}/BlockCount

此节点用于获取关联日志文件的块总数。 如果尚未生成日志文件,则返回的值为 -1;如果跟踪会话正在进行,则返回的值为 -2。

描述框架属性:

属性名 属性值
格式 int
访问类型 “获取”

示例

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Get>
            <CmdID>1</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/DeviceManagement/BlockCount</LocURI>
                </Target>
            </Item>
        </Get>
        <Final/>
    </SyncBody>
</SyncML>
FileDownload/DMChannel/{FileContext}/BlockData
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}/BlockData

此节点用于获取“BlockIndexToRead”节点指向的块的二进制数据。

描述框架属性:

属性名 属性值
格式 b64
访问类型 “获取”

示例

<?xml version="1.0"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
    <SyncBody>
        <Get>
            <CmdID>1</CmdID>
            <Item>
                <Target>
                    <LocURI>./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/DeviceManagement/BlockData</LocURI>
                </Target>
            </Item>
        </Get>
        <Final/>
    </SyncBody>
</SyncML>
FileDownload/DMChannel/{FileContext}/BlockIndexToRead
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}/BlockIndexToRead

此节点用于设置和获取指向“BlockData”节点的数据块的块索引。 值范围为 0~ (BlockCount-1) 。

示例

  • 将 BlockIndexToRead 设置为 0:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Replace>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/DeviceManagement/BlockIndexToRead</LocURI>
                    </Target>
                    <Meta>
                        <Format xmlns="syncml:metinf">int</Format>
                    </Meta>
                    <Data>0</Data>
                </Item>
            </Replace>
            <Final/>
        </SyncBody>
    </SyncML>
    
  • 将 BlockIndexToRead 设置为 1:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Replace>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/DeviceManagement/BlockIndexToRead</LocURI>
                    </Target>
                    <Meta>
                        <Format xmlns="syncml:metinf">int</Format>
                    </Meta>
                    <Data>1</Data>
                </Item>
            </Replace>
            <Final/>
        </SyncBody>
    </SyncML>
    

描述框架属性:

属性名 属性值
格式 int
访问类型 获取、替换
FileDownload/DMChannel/{FileContext}/BlockSizeKB
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}/BlockSizeKB

此节点用于设置或获取块大小 ((以千字节为单位),) 用于下载 assoicated 日志文件。 值范围为 1~16。 默认值为 4。

描述框架属性:

属性名 属性值
格式 int
访问类型 获取、替换
允许的值 范围: [1-16]
默认值 4

示例

  • 设置 BlockSizeKB:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Replace>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/DeviceManagement/BlockSizeKB</LocURI>
                    </Target>
                    <Meta>
                        <Format xmlns="syncml:metinf">int</Format>
                    </Meta>
                    <Data>1</Data>
                </Item>
            </Replace>
            <Final/>
        </SyncBody>
    </SyncML>
    
  • 获取 BlockSizeKB:

    <?xml version="1.0"?>
    <SyncML xmlns="SYNCML:SYNCML1.2">
        <SyncBody>
            <Get>
                <CmdID>1</CmdID>
                <Item>
                    <Target>
                        <LocURI>./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/DeviceManagement/BlockSizeKB</LocURI>
                    </Target>
                </Item>
            </Get>
            <Final/>
        </SyncBody>
    </SyncML>
    
FileDownload/DMChannel/{FileContext}/DataBlocks
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}/DataBlocks

关联日志文件的所有“BlockNumber”节点的根节点。 其子级的数目应为日志文件的总块计数。 如果“BlockCount”节点的值小于 0,则不存在子节点。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”
FileDownload/DMChannel/{FileContext}/DataBlocks/{BlockNumber}
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1511 [10.0.10586] 及更高版本
./Vendor/MSFT/DiagnosticLog/FileDownload/DMChannel/{FileContext}/DataBlocks/{BlockNumber}

每个动态节点表示一个“BlockNumber”节点。 节点名称是一个整数,等于此节点所代表的块的索引。 因此,节点名称的范围应介于 0 到 (BlockCount -1) 。 它返回此节点所引用的块的二进制数据。

描述框架属性:

属性名 属性值
格式 b64
访问类型 “获取”
动态节点命名 ClientInventory

策略

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy

包含诊断设置的策略。

这可用于配置 Windows 事件日志策略,例如最大日志大小。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

策略/通道

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy/Channels

包含事件日志通道设置的策略。

描述框架属性:

属性名 属性值
格式 node
访问类型 “获取”

Policy/Channels/{ChannelName}

范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy/Channels/{ChannelName}

每个动态节点表示已注册的“通道”节点。 节点名称必须是有效的 Windows 事件日志通道名称,例如“Microsoft-Client-Licensing-Platform%2FAdmin”。 在 LocURI 中指定名称时,它必须经过 URL 编码,否则会意外地将其转换为其他 URI。

描述框架属性:

属性名 属性值
格式 node
访问类型 添加、删除、获取
动态节点命名 UniqueName:节点名称必须是有效的 Windows 事件日志通道名称,例如 Microsoft-Client-Licensing-Platform%2FAdmin。 在 LocURI 中指定名称时,它必须经过 URL 编码,否则它可能会意外转换为不同的 URI。

示例

  • 添加通道

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Add>​
          <CmdID>2</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">node</Format>​
              <Type></Type>​
            </Meta>​
          </Item>​
        </Add>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 删除通道

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Delete>​
          <CmdID>3</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName​
              </LocURI>​
            </Target>​
          </Item>​
        </Delete>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 获取频道

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Get>​
          <CmdID>4</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName​
              </LocURI>​
            </Target>​
          </Item>​
        </Get>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
Policy/Channels/{ChannelName}/ActionWhenFull
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy/Channels/{ChannelName}/ActionWhenFull

日志文件达到最大大小时要执行的操作。 “Truncate”、“Overwrite”、“Archive”。

如果禁用或未配置此策略设置,本地配置的值将用作默认值。 安装的每个通道(无论是收件箱还是由 ISV 安装)都负责定义自己的本地配置,并且该配置可由任何管理员更改。 通过此策略设置的值将替代,但不替换本地配置。

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 添加、删除、获取、替换

允许的值:

描述
截断 当日志文件达到其最大文件大小时,新事件不会写入日志,并且会丢失。
Overwrite 当日志文件达到其最大文件大小时,新事件将覆盖旧事件。
Archive 当日志文件达到其最大大小时,日志文件将保存到“存档位置”策略设置指定的位置。 如果未设置存档位置值,则新文件将保存在与当前日志文件相同的目录中。

示例

  • 添加 ActionWhenFull

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Add>​
          <CmdID>14</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/ActionWhenFull​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">chr</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>Archive</Data>​
          </Item>​
        </Add>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • Delete ActionWhenFull

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Delete>​
          <CmdID>15</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/ActionWhenFull​
              </LocURI>​
            </Target>​
          </Item>​
        </Delete>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 获取 ActionWhenFull

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Get>​
          <CmdID>13</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/ActionWhenFull​
              </LocURI>​
            </Target>​
          </Item>​
        </Get>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • Replace ActionWhenFull

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Replace>​
          <CmdID>16</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/ActionWhenFull​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">chr</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>Truncate</Data>​
          </Item>​
        </Replace>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
Policy/Channels/{ChannelName}/Enabled
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy/Channels/{ChannelName}/Enabled

此策略设置指定应启用或禁用通道。 将值设置为 TRUE 以启用,将 FALSE 设置为禁用。

如果禁用或未配置此策略设置,本地配置的值将用作默认值。

描述框架属性:

属性名 属性值
格式 bool
访问类型 添加、删除、获取、替换

允许的值:

描述
true 启用通道。
false 禁用通道。

示例

  • 添加已启用

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Add>​
          <CmdID>18</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/Enabled​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">bool</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>TRUE</Data>​
          </Item>​
        </Add>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 已启用删除

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Delete>​
          <CmdID>19</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/Enabled​
              </LocURI>​
            </Target>​
          </Item>​
        </Delete>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • Get Enabled

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Get>​
          <CmdID>17</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/Enabled​
              </LocURI>​
            </Target>​
          </Item>​
        </Get>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 替换已启用

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Replace>​
          <CmdID>20</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/Enabled​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">bool</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>FALSE</Data>​
          </Item>​
        </Replace>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
Policy/Channels/{ChannelName}/MaximumFileSize
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy/Channels/{ChannelName}/MaximumFileSize

通道日志文件的最大大小(以 MB 为单位)。

  • 如果启用此策略设置,则可以将最大日志文件大小配置为 1 兆字节到 2 TB 之间(以兆字节为单位)。
  • 如果禁用或未配置此策略设置,日志文件的最大大小将设置为本地配置的值。 本地管理员可以使用“日志属性”对话框更改此值,默认值为 1 MB。

描述框架属性:

属性名 属性值
格式 int
访问类型 添加、删除、获取、替换
允许的值 范围: [1-2000000]
默认值 1

示例

  • 添加 MaximumFileSize

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Add>​
          <CmdID>6</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/MaximumFileSize​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">int</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>3</Data>​
          </Item>​
        </Add>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 删除 MaximumFileSize

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Delete>​
          <CmdID>7</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/MaximumFileSize​
              </LocURI>​
            </Target>​
          </Item>​
        </Delete>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 获取 MaximumFileSize

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Get>​
          <CmdID>5</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/MaximumFileSize​
              </LocURI>​
            </Target>​
          </Item>​
        </Get>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 替换 MaximumFileSize

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Replace>​
          <CmdID>8</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/MaximumFileSize​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">int</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>5</Data>​
          </Item>​
        </Replace>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
Policy/Channels/{ChannelName}/SDDL
范围 版本 适用的操作系统
✅ 设备
❌ 用户
✅ 专业版
✅ 企业版
✅ 教育版
✅ Windows SE
✅ IoT 企业版/IoT 企业版 LTSC
✅Windows 10版本 1903 [10.0.18362] 及更高版本
./Vendor/MSFT/DiagnosticLog/Policy/Channels/{ChannelName}/SDDL

SDDL 字符串控制对通道的访问。 有关详细信息,请参阅 ChannelType 复杂类型

描述框架属性:

属性名 属性值
格式 chr (字符串)
访问类型 添加、删除、获取、替换
区分大小写 True

示例

  • 添加 SDDL

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Add>​
          <CmdID>10</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/SDDL​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">chr</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>YourSDDL</Data>​
          </Item>​
        </Add>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 删除 SDDL

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Delete>​
          <CmdID>11</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/SDDL​
              </LocURI>​
            </Target>​
          </Item>​
        </Delete>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 获取 SDDL

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Get>​
          <CmdID>9</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/SDDL​
              </LocURI>​
            </Target>​
          </Item>​
        </Get>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    
  • 替换 SDDL

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>​
        <Replace>​
          <CmdID>12</CmdID>​
          <Item>​
            <Target>​
              <LocURI>​
                ./Vendor/MSFT/DiagnosticLog/Policy/Channels/ChannelName/SDDL​
              </LocURI>​
            </Target>​
            <Meta>​
              <Format xmlns="syncml:metinf">chr</Format>​
              <Type>text/plain</Type>​
            </Meta>​
            <Data>YourNewSDDL</Data>​
          </Item>​
        </Replace>​
        <Final/> ​
      </SyncBody>​
    </SyncML>
    

比较 FileDownload 和 DiagnosticArchive

FileDownload 和 DiagnosticArchive 功能都可用于将数据从设备获取到管理服务器,但它们已针对不同的工作流进行优化。

  • FileDownload 使管理服务器可以直接从托管设备拉取字节级跟踪数据。 数据传输通过现有的 OMA-DM/SyncML 上下文进行。 它与 EtwLogs 功能一起使用,作为高级监视或诊断流的一部分。 FileDownlod 需要管理服务器进行精细的业务流程,但不需要专用云存储。
  • DiagnosticArchive 允许管理服务器以单个命令的形式为 CSP 提供一组完整的指令。 CSP 根据这些说明协调工作客户端,将请求的诊断文件打包到 zip 存档中,并将该存档上传到云存储。 数据传输在 OMA-DM 会话外部通过 HTTP PUT 进行。

如何查看 ArchiveResults

由 ArchiveResults 创建和上传的 zip 存档包含一个文件夹结构,如以下示例所示:

PS C:\> dir C:\DiagArchiveExamples\DiagLogs-MYDEVICE-20201202T182748Z

    Directory: C:\DiagArchiveExamples\DiagLogs-MYDEVICE-20201202T182748Z

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---            1/4/2021  2:45 PM                1
la---            1/4/2021  2:45 PM                2
la---           12/2/2020  6:27 PM           2701 results.xml

原始 Collection XML 中的每个数据收集指令对应于输出中的一个文件夹。 例如,第一个指令是:

<Collection HRESULT="0">
     <RegistryKey HRESULT="0">HKLM\Software\Policies</RegistryKey>
</Collection>

然后,文件夹 1 将包含相应的 export.reg 文件。

该文件 results.xml 是输出的权威映射。 它包括每个指令的状态代码。 文件中指令的顺序对应于输出文件夹的顺序。 使用 results.xml 管理员可以查看收集了哪些数据、可能发生了哪些故障,以及哪些文件夹包含哪些输出。 例如,以下内容 results.xml 指示 HKLM\Software\Policies 的注册表导出成功,并且可以在 文件夹中 1找到数据。 它还指示 netsh.exe wlan show profiles 命令失败。

<Collection HRESULT="0">
    <ID>268b3056-8c15-47c6-a1bd-4bc257aef7b2</ID>
    <RegistryKey HRESULT="0">HKLM\Software\Policies</RegistryKey>
    <Command HRESULT="-2147024895">%windir%\system32\netsh.exe wlan show profiles</Command>
</Collection>

管理员可以将自动化应用到“results.xml”,以创建自己的首选数据视图。 例如,以下 PowerShell 单行器从 XML 中提取指令的有序列表,其中包含状态代码和详细信息。

Select-XML -Path results.xml -XPath '//RegistryKey | //Command | //Events | //FoldersFiles' | Foreach-Object -Begin {$i=1} -Process { [pscustomobject]@{DirectiveNumber=$i; DirectiveHRESULT=$_.Node.HRESULT; DirectiveInput=$_.Node.('#text')} ; $i++}

此示例生成类似于以下输出的输出:

DirectiveNumber DirectiveHRESULT DirectiveInput
--------------- ---------------- --------------
              1 0                HKLM\Software\Policies
              2 0                HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
              3 0                HKLM\Software\Microsoft\IntuneManagementExtension
              4 0                HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
              5 0                %windir%\system32\ipconfig.exe /all
              6 0                %windir%\system32\netsh.exe advfirewall show allprofiles
              7 0                %windir%\system32\netsh.exe advfirewall show global
              8 -2147024895      %windir%\system32\netsh.exe wlan show profiles

下一个示例将 zip 存档提取到自定义的平展文件结构中。 每个文件名包括指令号、HRESULT 等。 可以自定义此示例,以便对文件名中包含的信息以及要为特殊字符做出的格式设置选项做出不同的选择。

param( $DiagnosticArchiveZipPath = "C:\DiagArchiveExamples\DiagLogs-MYDEVICE-20201202T182748Z.zip" )

#region Formatting Choices
$flatFileNameTemplate = '({0:D2}) ({3}) (0x{2:X8})'
$maxLengthForInputTextPassedToOutput = 80
#endregion

#region Create Output Folders and Expand Zip
$diagnosticArchiveTempUnzippedPath = $DiagnosticArchiveZipPath + "_expanded"
if(-not (Test-Path $diagnosticArchiveTempUnzippedPath)){mkdir $diagnosticArchiveTempUnzippedPath}
$reformattedArchivePath = $DiagnosticArchiveZipPath + "_formatted"
if(-not (Test-Path $reformattedArchivePath)){mkdir $reformattedArchivePath}
Expand-Archive -Path $DiagnosticArchiveZipPath -DestinationPath $diagnosticArchiveTempUnzippedPath
#endregion

#region Discover and Move/rename Files
$resultElements = ([xml](Get-Content -Path (Join-Path -Path $diagnosticArchiveTempUnzippedPath -ChildPath "results.xml"))).Collection.ChildNodes | Foreach-Object{ $_ }
$n = 0
foreach( $element in $resultElements )
{
    $directiveNumber = $n
    $n++
    if($element.Name -eq 'ID'){ continue }
    $directiveType = $element.Name
    $directiveStatus = [int]$element.Attributes.ItemOf('HRESULT').psbase.Value
    $directiveUserInputRaw = $element.InnerText
    $directiveUserInputFileNameCompatible = $directiveUserInputRaw -replace '[\\|/\[\]<>\:"\?\*%\.\s]','_'
    $directiveUserInputTrimmed = $directiveUserInputFileNameCompatible.substring(0, [System.Math]::Min($maxLengthForInputTextPassedToOutput, $directiveUserInputFileNameCompatible.Length))
    $directiveSummaryString = $flatFileNameTemplate -f $directiveNumber,$directiveType,$directiveStatus,$directiveUserInputTrimmed
    $directiveOutputFolder = Join-Path -Path $diagnosticArchiveTempUnzippedPath -ChildPath $directiveNumber
    $directiveOutputFiles = Get-ChildItem -Path $directiveOutputFolder -File
    foreach( $file in $directiveOutputFiles)
    {
        $leafSummaryString = $directiveSummaryString,$file.Name -join ' '
        Copy-Item $file.FullName -Destination (Join-Path -Path $reformattedArchivePath -ChildPath $leafSummaryString)
    }
}
#endregion
Remove-Item -Path $diagnosticArchiveTempUnzippedPath -Force -Recurse

此示例脚本生成一组类似于以下文件集的文件,对于管理员来说,它可以是一个有用的视图,可以交互浏览结果,而无需导航任何子文件夹或反复引用 results.xml

PS C:\> dir C:\DiagArchiveExamples\DiagLogs-MYDEVICE-20201202T182748Z.zip_formatted | format-table Length,Name

  Length Name
  ------ ----
   46640 (01) (HKLM_Software_Policies) (0x00000000) export.reg
  203792 (02) (HKLM_Software_Microsoft_Windows_CurrentVersion_Uninstall) (0x00000000) export.reg
  214902 (03) (HKLM_Software_Microsoft_IntuneManagementExtension) (0x00000000) export.reg
  212278 (04) (HKLM_SOFTWARE_WOW6432Node_Microsoft_Windows_CurrentVersion_Uninstall) (0x00000000) export.reg
    2400 (05) (_windir__system32_ipconfig_exe__all) (0x00000000) output.log
    2147 (06) (_windir__system32_netsh_exe_advfirewall_show_allprofiles) (0x00000000) output.log
    1043 (07) (_windir__system32_netsh_exe_advfirewall_show_global) (0x00000000) output.log
      59 (08) (_windir__system32_netsh_exe_wlan_show_profiles) (0x80070001) output.log
    1591 (09) (_windir__system32_ping_exe_-n_50_localhost) (0x00000000) output.log
    5192 (10) (_windir__system32_Dsregcmd_exe__status) (0x00000000) output.log

配置服务提供程序参考