对 CMPivot 的更改

适用于: Configuration Manager(current branch)

使用以下信息了解在Configuration Manager版本之间对 CMPivot 所做的更改:

版本 2107 的 CMPivot 更改

简化的 CMPivot 权限要求

我们简化了 CMPivot 权限要求。 新权限适用于 CMPivot 独立版和本地控制台中的 CMPivot。 已进行以下更改:

  • CMPivot 不再需要 SMS 脚本 读取权限

    • 如果管理服务由于 503 (服务不可用) 错误而回退,SMS 提供程序仍需要此权限,如 CMPivot.log 中所示。
  • 不需要 默认范围 权限。

CMPivot 的常规改进

我们对 CMPivot 进行了以下改进:

  • 添加了可与 summarize 运算符一起使用的 maxifminif 聚合器
  • 对查询编辑器中的查询自动完成建议的改进
  • 注册表实体添加了 Key 值
  • 添加了一个新的 RegistryKey 实体,该实体返回与给定表达式匹配的所有注册表项

若要查看 Registry 和 RegistryKey 实体之间的差异,可以使用以下示例:

// Change the path to match your desired registry hive query

Registry('hklm:\SOFTWARE\Microsoft\EnterpriseCertificates\Root\Certificates\*')
RegistryKey('hklm:\SOFTWARE\Microsoft\EnterpriseCertificates\Root\Certificates\*')

RegistryKey('hklm:\SOFTWARE\Microsoft\SMS\*')
Registry('hklm:\SOFTWARE\Microsoft\SMS\*')

版本 2103 的 CMPivot 更改

从版本 2103 开始,CMPivot 进行了以下改进:

当结果太大时,警告消息和导出 CMPivot 数据选项

当结果太大时,将显示以下警告消息:

查询返回了大量结果。 通过修改查询缩小结果范围,或选择此横幅以导出结果。

此消息在以下情况下发生:

  • 当结果大于 100,000 个单元格时。

    • 例如,对于包含 10 列实体数据的 10,000 个设备, (行) 达到警告阈值。
    • 在这种情况下,你将获得将结果导出到 .csv 文件的选项
  • 请求从给定设备返回的数据超过 128 KB 时。

    • 例如, CcmLog('ciagent', 120d) 查询会记录结果,并且可能超过 128 KB 的限制。
    • 当结果超过 128 KB 时,你将收到警告,但无法导出它们,因为它们不会从客户端返回到服务器。

从 CMPivot 访问社区中心共享的顶级查询

从版本 2103 开始,可以从本地 CMPivot 访问社区中心共享的顶级 CMPivot 查询。 通过使用由更广泛的社区共享的预创建的 CMPivot 查询,CMPivot 用户可以访问更广泛的查询。 本地 CMPivot 访问社区中心,并返回下载量最大的 CMPivot 查询的列表。 用户可以查看排名靠前的查询,对其进行自定义,然后按需运行。 此改进提供了更广泛的查询选择以供即时使用,而无需构造它们,还允许共享有关如何生成查询以供将来参考的信息。

注意

从 Configuration Manager 控制台运行 CMPivot 时,可以使用这些查询。 它们尚未从 独立 CMPivot 获取。

先决条件:

使用 CMPivot 访问顶级社区中心查询

  1. 转到 “资产和符合性 ”工作区,然后选择“ 设备集合” 节点。

  2. 选择目标集合、目标设备或设备组,然后在功能区中选择“ 启动 CMPivot ”以启动该工具。

  3. 使用菜单上的社区中心图标。

    社区中心图标

  4. 查看顶级共享 CMPivot 查询的列表。

    来自社区中心的热门 CMPivot 查询

  5. 选择其中一个排名靠前的查询,将其加载到查询窗格中。

  6. 根据需要编辑 查询 ,然后选择“ 运行查询”。

  7. (可选)选择文件夹图标以访问收藏夹列表。 将原始查询或编辑的版本添加到收藏夹列表,以便稍后运行。 选择社区中心图标以搜索其他查询。

  8. 使 CMPivot 窗口保持打开状态,以查看来自客户端的结果。 关闭 CMPivot 窗口时,会话已完成。 如果查询已发送,则客户端仍会向服务器发送状态消息响应。

版本 2006 的 CMPivot 更改

从版本 2006 开始,CMPivot 进行了以下改进:

  • CMPivot 独立 和从管理控制台启动的 CMPivot 已聚合。 从管理控制台启动 CMPivot 时,它将使用与 CMPivot 独立相同的基础技术来提供方案奇偶校验。

  • CMPivot 中键盘导航的改进。

  • 可以从单个设备运行 CMPivot,也可以从设备节点运行多个设备,而无需选择设备集合。 这种改进使用户(例如充当支持人员角色的人员)能够更轻松地为预创建集合之外的特定设备创建 CMPivot 查询。

    • 选择设备集合中的单个设备或多选设备,然后选择 “启动 CMPivot”。
  • 在查询列表视图中返回设备后,可以在一个或多个设备上选择“ 设备透视” ,然后仅对这些设备进行透视和查询以进一步钻取。 通过此更改,无需从原始集合中查询更大的设备集即可钻取。 设备透视 已将 透视表替换为 。

    • 在现有 CMPivot 操作中,从输出中选择单个设备或多选设备。 使用 “设备 透视”选项右键单击并透视。 此操作将启动一个单独的 CMPivot 实例,该实例的范围仅限于所选设备。 这样可以更轻松地在所需设备上进行透视和查询,而无需为其创建集合。
  • 为单个设备运行 CMPivot 时,设备名称将列在窗口顶部。 对于多个设备,所选设备数列在窗口顶部。

  • 已删除“查询摘要”选项卡中的“ 创建集合 ”选项,因为 CMPivot 不再需要针对集合进行查询。 执行 Device Pivot 以打开 CMPivot 的新实例,该实例的范围仅限于要查询的设备。 “创建集合”在“main”菜单上仍可用。

使用 CMPivot 的多个设备的设备透视

版本 2002 的 CMPivot 更改

我们简化了 CMPivot 实体的导航。 从 Configuration Manager 版本 2002 开始,可以搜索 CMPivot 实体。 还添加了新图标,以便轻松区分实体和实体对象类型。

搜索 CMPivot 实体

版本 1910 的 CMPivot 更改

从版本 1910 开始,CMPivot 进行了显著优化,以减少服务器上的网络流量和负载。 此外,还添加了许多实体和实体增强功能,以帮助进行故障排除和搜寻。 版本 1910 中为 CMPivot 引入了以下更改:

CMPivot 引擎优化

为了减少服务器上的网络流量和负载,CMPivot 在 1910 年进行了优化。 许多查询操作现在直接在客户端而不是服务器上执行。 此更改还意味着某些 CMPivot 操作从第一个查询返回最少的数据。 如果决定深入了解数据,可能会运行新查询以从客户端提取其他数据。 例如,以前运行“汇总计数”查询时,会将大型数据集返回到服务器。 虽然返回大型数据集可提供即时向下钻取,但很多时候只需要汇总的计数。 在 1910 年,当你选择钻取到特定客户端时,会发生另一个数据集合以返回你请求的其他数据。 此更改为针对大量客户端的查询带来了更好的性能和可伸缩性。

示例

CMPivot 优化大大减少了运行 CMPivot 查询所需的网络和服务器 CPU 负载。 通过这些优化,现在可以实时筛选千兆字节的客户端数据。 以下查询演示了这些优化:

  • 搜索企业中所有客户端上的所有事件日志,以查找身份验证失败。

    EventLog('Security')
    | where  EventID == 4673
    | summarize count() by Device
    | order by count_ desc
    
  • 按哈希搜索文件。

    Device
    | join kind=leftouter ( File('%windir%\\system32\\*.exe')
    | where SHA256Hash == 'A92056D772260B39A876D01552496B2F8B4610A0B1E084952FE1176784E2CE77')
    | project Device, MalwareFound = iif( isnull(FileName), 'No', 'Yes')
    

WinEvent (<logname>,[<timespan>])

此实体用于从事件日志和事件跟踪日志文件获取事件。 实体从 Windows 事件日志技术生成的事件日志中获取数据。 实体还会获取由 Windows (ETW) 事件跟踪生成的日志文件中的事件。 WinEvent 默认查看过去 24 小时内发生的事件。 但是,可以通过包括时间跨度来替代 24 小时默认值。

WinEvent('Microsoft-Windows-HelloForBusiness/Operational', 1d)
| where LevelDisplayName =='Error'
| summarize count() by Device

FileContent (<文件名>)

FileContent 用于获取文本文件的内容。

FileContent('c:\\windows\\SMSCFG.ini')
| where Content startswith  'SMS Unique Identifier='
| project Device, SMSId= substring(Content,22)

ProcessModule (<processname>)

此实体用于枚举给定进程) 加载的模块 (dll。 在搜寻隐藏在合法进程中的恶意软件时,ProcessModule 非常有用。

ProcessModule('powershell')
| summarize count() by ModuleName
| order by count_ desc

AadStatus

此实体可用于从设备获取当前Microsoft Entra标识信息。

AadStatus
| project Device, IsAADJoined=iif( isnull(DeviceId),'No','Yes')
| summarize DeviceCount=count() by IsAADJoined
| render piechart

EPStatus

EPStatus 用于获取计算机上安装的反恶意软件的状态。

EPStatus
| project Device, QuickScanAge=datetime_diff('day',now(),QuickScanEndTime)
| summarize DeviceCount=count() by QuickScanAge
| order by QuickScanAge
| render barchart

使用 CMPivot 独立版进行本地设备查询评估

在 Configuration Manager 控制台外部使用 CMPivot 时,只需查询本地设备,而无需Configuration Manager基础结构。 现在可以利用 CMPivot Azure Log Analytics 查询在本地设备上快速查看 WMI 信息。 这还允许验证和优化 CMPivot 查询,然后再在更大的环境中运行它们。 CMPivot 独立版仅以英语提供。 有关 CMPivot 独立的详细信息,请参阅 CMPivot 独立

本地设备查询评估的已知问题

  • 如果你 在此电脑上 查询你无权访问的 WMI 实体(例如已锁定的 WMI 类),你可能会在 CMPivot 中看到崩溃。 使用具有提升权限的帐户运行 CMPivot 来查询这些实体。
  • 如果在 此电脑上查询非 WMI 实体,你将看到 命名空间无效 或不明确异常。
  • 从“开始”菜单快捷方式(而不是直接从可执行文件的路径)运行 CMPivot 独立运行。

其他增强功能

  • 可以使用 new like 运算符执行正则表达式类型查询。 例如:

    //Find BIOS manufacture that contains any word like Micro, such as Microsoft
    Bios
    | where Manufacturer like '%Micro%'
    
  • 我们已更新 CcmLog () EventLog () 实体,默认情况下仅查看过去 24 小时内的消息。 可以通过传入可选的时间跨度来重写此行为。 例如,以下查询将查看过去 1 小时内的事件:

    CcmLog('Scripts',1h)
    
  • File () 实体已更新,以收集有关隐藏文件和系统文件的信息,并包含 MD5 哈希。 虽然 MD5 哈希不如 SHA256 哈希准确,但它往往是大多数恶意软件公告中经常报告的哈希。

  • 可以在查询中添加注释。 共享查询时,此行为很有用。 例如:

    //Get the top ten devices sorted by user
    Device
    | top 10 by UserName
    
  • CMPivot 会自动连接到最后一个站点。 启动 CMPivot 后,可以在必要时连接到新站点。

  • 从“ 导出 ”菜单中,选择“ 查询”链接至剪贴板的新选项。 此操作会将链接复制到可与他人共享的剪贴板。 例如:

    cmpivot:Ly8gU2FtcGxlIHF1ZXJ5DQpPcGVyYXRpbmdTeXN0ZW0NCnwgc3VtbWFyaXplIGNvdW50KCkgYnkgQ2FwdGlvbg0KfCBvcmRlciBieSBjb3VudF8gYXNjDQp8IHJlbmRlciBiYXJjaGFydA==

    此链接使用以下查询打开 CMPivot 独立:

    // Sample query
    OperatingSystem
    | summarize count() by Caption
    | order by count_ asc
    | render barchart
    

    提示

    若要使此链接正常工作, 请安装 CMPivot 独立版。

  • 在查询结果中,如果设备已注册Microsoft Defender for Endpoint,请右键单击该设备以启动Microsoft Defender 安全中心联机门户。

版本 1910 中 CMPivot 的已知问题

  • 达到限制时,可能不会显示最大结果横幅。
    • 每个客户端每个查询的数据限制为 128 KB。
    • 如果查询结果超过 128 KB,则结果可能会被截断。

版本 1906 的 CMPivot 更改

从版本 1906 开始,以下项已添加到 CMPivot:

在 CMPivot 中添加联接、其他运算符和聚合器

现在,你已拥有其他算术运算符、聚合器,并能够添加查询联接,例如同时使用注册表和文件。 已添加以下项:

表运算符

表运算符 说明
加入 合并两个表的行,通过匹配同一设备的行来形成新表
呈现 将结果呈现为图形输出

CMPivot 中已存在呈现运算符。 添加了对多个序列和 with 语句的支持。 有关详细信息,请参阅 示例 部分和 Kusto 的 联接运算符 一文。

联接的限制

  1. 联接列始终在 “设备” 字段中隐式完成。
  2. 每个查询最多可以使用 5 个联接。
  3. 最多可以使用 64 个组合列。

标量运算符

运算符 说明 示例
+ 添加 2 + 1, now() + 1d
- 减法 2 - 1, now() - 1d
* 乘法 2 * 2
/ 除法 2 / 1
% 2 % 1

聚合函数

功能 说明
percentile () 返回 Expr 所定义总体的指定最接近排名百分位数的估计值
sumif () 返回 Predicate 计算结果为 true 的 Expr 之和

标量函数

功能 说明
case () 计算谓词列表,并返回满足谓词的第一个结果表达式
iff () 计算第一个参数并返回第二个或第三个参数的值,具体取决于谓词的计算结果为 true (第二个) 还是 false (第三个)
indexof () 函数报告输入字符串中指定字符串的第一个匹配项的从零开始的索引
strcat () 连接 1 到 64 个参数
strlen () 返回输入字符串的长度(以字符为单位)
substring () 从源字符串中提取从某个索引开始到字符串末尾的子字符串
tostring () 将输入转换为字符串操作

示例

  • 显示设备、制造商、型号和 OSVersion:

    ComputerSystem
    | project Device, Manufacturer, Model
    | join (OperatingSystem | project Device, OSVersion=Caption)
    
  • 显示设备的启动时间图:

    SystemBootData
    | where Device == 'MyDevice'
    | project SystemStartTime, BootDuration, OSStart=EventLogStart, GPDuration, UpdateDuration
    | order by SystemStartTime desc
    | render barchart with (kind=stacked, title='Boot times for MyDevice', ytitle='Time (ms)')
    

    显示设备的启动时间(以毫秒为单位)的堆积条形图

向安全管理员角色添加了 CMPivot 权限

从版本 1906 开始,以下权限已添加到Configuration Manager的内置安全管理员角色:

  • 阅读 短信脚本
  • 在集合上运行 CMPivot
  • 阅读 清单报告

注意

运行脚本运行 CMPivot 权限的超级集。

CMPivot 独立

可以将 CMPivot 用作独立应用。 CMPivot 独立版仅以英语提供。 在 Configuration Manager 控制台外部运行 CMPivot,以查看环境中设备的实时状态。 此更改使你能够在设备上使用 CMPivot,而无需先安装控制台。

可以与其他角色(例如支持人员或安全管理员)共享 CMPivot 的强大功能,这些角色的计算机上未安装控制台。 这些其他角色可以使用 CMPivot 查询Configuration Manager以及他们传统上使用的其他工具。 通过共享这些丰富的管理数据,可以协同工作,主动解决跨角色的业务问题。

独立安装 CMPivot

  1. 设置运行 CMPivot 所需的权限。 有关详细信息,请参阅 先决条件。 如果权限适用于用户,还可以使用 安全管理员角色

  2. 在以下路径中找到 CMPivot 应用安装程序: <site install path>\tools\CMPivot\CMPivot.msi。 可以从该路径运行它,也可以将其复制到其他位置。

  3. 运行 CMPivot 独立应用时,系统会要求你连接到站点。 指定管理中心或主站点服务器的完全限定域名或计算机名称。

    • 每次打开独立 CMPivot 时,系统都会提示你连接到站点服务器。
  4. 浏览到要运行 CMPivot 的集合,然后运行查询。

    浏览到要对其运行查询的集合

注意

  • 右键单击操作(如 运行脚本资源资源管理器和 Web 搜索)在 CMPivot 独立版中不可用。 CMPivot 独立版的主要用途是独立于Configuration Manager基础结构进行查询。 为了帮助安全管理员,CMPivot 独立版包含连接到Microsoft Defender 安全中心的功能。
  • 可以使用 CMPivot 独立版执行本地设备查询评估

版本 1902 的 CMPivot 更改

从 Configuration Manager 版本 1902 开始,可以从管理中心站点运行 CMPivot, (层次结构中的 CAS) 。 主站点仍处理与客户端的通信。 从管理中心站点运行 CMPivot 时,它会通过高速消息订阅通道与主站点通信。 此通信不依赖于站点之间的标准SQL Server复制。

如果SQL Server或 SMS 提供程序不在同一台计算机上,或者在SQL Server Always On可用性组配置的情况下,在 CAS 上运行 CMPivot 将需要其他权限。 借助这些远程配置,CMPivot 具有“双跃点方案”。

若要使 CMPivot 在此类“双跃点方案”中处理 CAS,可以定义约束委派。 若要了解此配置的安全影响,请阅读 Kerberos 约束委派 一文。 Kerberos 需要处理计算机之间的所有跃点。 如果有多个远程配置,例如SQL Server或 SMS 提供程序是否与 CAS 并置,或者多个受信任的林,可能需要组合权限设置。 下面是可能需要执行的步骤:

CAS 具有远程SQL Server

  1. 转到每个主站点的SQL Server。

    1. 将 CAS 远程SQL Server和 CAS 站点服务器添加到Configmgr_DviewAccess组。 主站点SQL Server上的Configmgr_DviewAccess组
  2. 转到Active Directory 用户和计算机。

    1. 对于每个主站点服务器,右键单击并选择“ 属性”。
      1. 在“委派”选项卡中,选择第三个选项“ 仅信任此计算机以委派指定服务”。
      2. 选择“ 仅使用 Kerberos”。
      3. 使用端口和实例添加 CAS 的SQL Server服务。
      4. 确保这些更改符合公司安全策略!
    2. 对于 CAS 站点,右键单击并选择“ 属性”。
      1. 在“委派”选项卡中,选择第三个选项“ 仅信任此计算机以委派指定服务”。
      2. 选择“ 仅使用 Kerberos”。
      3. 使用端口和实例添加每个主站点的SQL Server服务。
      4. 确保这些更改符合公司安全策略!

    双跃点的 CMPivot AD 委派示例

CAS 具有远程提供程序

  1. 转到每个主站点的SQL Server。
    1. 将 CAS 提供程序计算机帐户和 CAS 站点服务器添加到 Configmgr_DviewAccess 组。
  2. 转到Active Directory 用户和计算机。
    1. 选择 CAS 提供程序计算机,右键单击并选择 “属性”。
      1. 在“委派”选项卡中,选择第三个选项“ 仅信任此计算机以委派指定服务”。
      2. 选择“ 仅使用 Kerberos”。
      3. 使用端口和实例添加每个主站点的SQL Server服务。
      4. 确保这些更改符合公司安全策略!
    2. 选择 CAS 站点服务器,右键单击并选择 “属性”。
      1. 在“委派”选项卡中,选择第三个选项“ 仅信任此计算机以委派指定服务”。
      2. 选择“ 仅使用 Kerberos”。
      3. 使用端口和实例添加每个主站点的SQL Server服务。
      4. 确保这些更改符合公司安全策略!
  3. 重启 CAS 远程提供程序计算机。

SQL Server Always On可用性组

  1. 转到每个主站点的SQL Server。
    1. 将 CAS 站点服务器添加到 Configmgr_DviewAccess 组。
  2. 转到Active Directory 用户和计算机。
    1. 对于每个主站点服务器,右键单击并选择“ 属性”。
      1. 在“委派”选项卡中,选择第三个选项“ 仅信任此计算机以委派指定服务”。
      2. 选择“ 仅使用 Kerberos”。
      3. 为具有端口和实例的 SQL Server 节点添加 CAS 的SQL Server服务帐户。
      4. 确保这些更改符合公司安全策略!
    2. 选择 CAS 站点服务器,右键单击并选择 “属性”。
      1. 在“委派”选项卡中,选择第三个选项“ 仅信任此计算机以委派指定服务”。
      2. 选择“ 仅使用 Kerberos”。
      3. 使用端口和实例添加每个主站点的SQL Server服务。
      4. 确保这些更改符合公司安全策略!
  3. 确保为 CAS 侦听器名称和每个主侦听器名称 发布了 SPN
  4. 重启主SQL Server节点。
  5. 重启 CAS 站点服务器和 CAS SQL Server节点。

版本 1810 的 CMPivot 更改

从 Configuration Manager 版本 1810 开始,CMPivot 包括以下改进:

CMPivot 实用工具和性能

  • CMPivot 将返回最多 100,000 个单元格,而不是 20,000 行。

    • 如果实体具有 5 个属性,即 5 列,则最多会显示 20,000 行。
    • 对于具有 10 个属性的实体,最多会显示 10,000 行。
    • 显示的总数据将小于或等于 100,000 个单元格。
  • 在“查询摘要”选项卡上,选择“失败”或“脱机设备”计数,然后选择“ 创建集合”选项。 使用此选项可以轻松地通过修正部署来定位这些设备。

    • 由于 CMPivot 不再需要针对集合进行查询,因此在版本 2006 中删除了此选项。
  • 单击文件夹图标保存 收藏夹 查询。 在 CMPivot 中保存收藏查询的示例

  • 更新到 1810 版本的客户端通过快速通信通道向站点返回小于 80 KB 的输出。

    • 此更改提高了查看脚本或查询输出的性能。
    • 如果脚本或查询输出大于 80 KB,则客户端通过状态消息发送数据。
    • 如果客户端未更新到 1810 客户端版本,它将继续使用状态消息。
  • 启动 CMPivot 时,可能会看到以下错误: 由于脚本版本不兼容,现在无法使用 CMPivot。此问题可能是因为层次结构正在升级站点。请等待升级完成,然后重试。

    • 如果看到此消息,则可能意味着:
      • 未正确设置安全范围。
      • 升级过程中存在问题。
      • 基础 CMPivot 脚本不兼容。

标量函数

CMPivot 支持以下标量函数:

  • ago () :从当前 UTC 时钟时间减去给定的时间跨度
  • datetime_diff () :计算两个日期/时间值之间的日历差异
  • now () :返回当前 UTC 时钟时间
  • bin () :将值向下舍入为给定箱大小的整数倍数

注意

datetime 数据类型表示时间中的即时,通常表示为一天的日期和时间。 时间值以 1 秒为单位进行度量。 datetime 值始终位于 UTC 时区中。 始终以 ISO 8601 格式表示日期时间文本,例如, yyyy-mm-dd HH:MM:ss

示例

  • datetime(2015-12-31 23:59:59.9):特定日期时间文本
  • now():当前时间
  • ago(1d):当前时间减去一天

呈现可视化效果

CMPivot 现在包括对 KQL 呈现运算符的基本支持。 此支持包括以下类型:

  • 条形图:第一列是 x 轴,可以是文本、日期时间或数字。 第二列必须是数值,并且显示为水平带。
  • columnchart:与条形图类似,使用垂直条带而不是水平条带。
  • 饼图:第一列是颜色轴,第二列是数值。
  • 时间图:折线图。 第一列是 x 轴,应为日期/时间。 第二列为 y 轴。

示例:条形图

以下查询将最近使用的应用程序呈现为条形图:

CCMRecentlyUsedApplications
| summarize dcount( Device ) by ProductName
| top 10 by dcount_
| render barchart

CMPivot 条形图可视化效果示例

示例:时间图

若要呈现时间表,请使用 new bin () 运算符对事件进行时间分组。 以下查询显示设备在过去七天内何时启动:

OperatingSystem
| where LastBootUpTime <= ago(7d)
| summarize count() by bin(LastBootUpTime,1d)
| render timechart

CMPivot 时间图可视化效果示例

示例:饼图

以下查询在饼图中显示所有 OS 版本:

OperatingSystem
| summarize count() by Caption
| render piechart

CMPivot 饼图可视化效果示例

硬件清单

使用 CMPivot 查询任何硬件清单类。 这些类包括对硬件清单所做的任何自定义扩展。 CMPivot 立即从站点数据库中存储的最后一次硬件清单扫描中返回缓存的结果。 同时,如有必要,它会使用来自任何联机客户端的实时数据更新结果。

结果表或图表中数据的颜色饱和度指示数据是实时的还是缓存的。 例如,深蓝色是来自联机客户端的实时数据。 浅蓝色是缓存数据。

示例

LogicalDisk
| summarize sum( FreeSpace ) by Device
| order by sum_ desc
| render columnchart

具有柱形图可视化效果的 CMPivot 清单查询示例

限制

  • 不支持以下硬件清单实体:
    • 数组属性,例如 IP 地址
    • Real32/Real64
    • 嵌入的对象属性
  • 清单实体名称必须以字符开头
  • 无法通过创建同名清单实体来覆盖内置实体

标量运算符

CMPivot 包括以下标量运算符:

注意

  • LHS:运算符左侧的字符串
  • RHS:运算符右侧的字符串
运算符 说明 示例 (生成 true)
== 等于 "aBc" == "aBc"
!= 不等于 "abc" != "ABC"
喜欢 LHS 包含 RHS 的匹配项 "FabriKam" like "%Brik%"
!喜欢 LHS 不包含 RHS 的匹配项 "Fabrikam" !like "%xyz%"
contains RHS 作为 LHS 的子序列出现 "FabriKam" contains "BRik"
!包含 LHS 中不会出现 RHS "Fabrikam" !contains "xyz"
startswith RHS 是 LHS 的初始子序列 "Fabrikam" startswith "fab"
!startswith RHS 不是 LHS 的初始子序列 "Fabrikam" !startswith "kam"
endswith RHS 是 LHS 的结束子序列 "Fabrikam" endswith "Kam"
!endswith RHS 不是 LHS 的结束子序列 "Fabrikam" !endswith "brik"

查询摘要

选择 CMPivot 窗口底部的“ 查询摘要 ”选项卡。 此状态有助于识别脱机的客户端,或排查可能发生的错误。 在“计数”列中选择一个值,打开具有该状态的特定设备的列表。

例如,选择状态为“失败”的设备计数。 请参阅特定的错误消息,并导出这些设备的列表。 如果错误是无法识别特定的 cmdlet,请从导出的设备列表创建一个集合来部署Windows PowerShell更新。

CMPivot 审核状态消息

从版本 1810 开始,运行 CMPivot 时,会使用 MessageID 40805 创建审核状态消息。 可以通过转到“监视>系统状态消息查询>来查看状态消息。 可以 运行特定用户的所有审核状态消息特定站点的所有审核状态消息,或创建自己的状态消息查询。

以下格式用于消息:

MessageId 40805:User UserName> 在集合<集合集合 ID> 上使用哈希 <Script-Hash> 运行<脚本 Script-Guid>。<

  • 7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14 是 CMPivot Script-Guid。
  • 可以在客户端的 scripts.log 文件中查看 Script-Hash。
  • 还可以查看存储在客户端脚本存储中的哈希。 客户端上的文件名为 <Script-Guid>_<Script-Hash>。
    • 示例文件名:C:\Windows\CCM\ScriptStore\7DC6B6F1-E7F6-43C1-96E0-E1D16BC25C14_abc1d23e45678901fabc123d456ce789fa1b2cd3e456789123fab4c56789d0123.ps

CMPivot 审核状态消息示例

后续步骤

CMPivot 疑难解答