CONFIGURATION MANAGER中实时数据的 CMPivot
适用于: Configuration Manager(current branch)
Configuration Manager始终提供设备数据的大型集中存储,客户可使用这些数据进行报告。 站点通常每周收集这些数据。 从版本 1806 开始,CMPivot 是一个新的控制台内实用工具,现在提供对环境中设备的实时状态的访问。 它会立即对目标集合中的所有当前连接的设备运行查询,并返回结果。 然后在工具中筛选和分组此数据。 通过提供来自联机客户端的实时数据,可以更快地回答业务问题、排查问题并响应安全事件。
例如,在 缓解推理执行侧通道漏洞时,其中一项要求是更新系统 BIOS。 可以使用 CMPivot 快速查询系统 BIOS 信息,并查找不符合要求的客户端。
重要
- 某些安全软件可能会阻止从 c:\windows\ccm\scriptstore 运行的脚本。 这可以防止成功执行 CMPivot 查询。 运行 CMPivot PowerShell 时,某些安全软件还可能会生成审核事件或警报。
- 某些反恶意软件可能会无意中触发针对Configuration Manager运行脚本或 CMPivot 功能的事件。 建议排除 %windir%\CCM\ScriptStore,以便反恶意软件允许这些功能在没有干扰的情况下运行。
先决条件
使用 CMPivot 需要以下组件:
将目标设备升级到 Configuration Manager 客户端的最新版本。
目标客户端至少需要 PowerShell 版本 4。
若要收集以下实体的数据,目标客户端需要 PowerShell 版本 5.0:
- 管理员
- Connection
- IPConfig
- SMBConfig
CMPivot 和 Microsoft Edge 安装程序当前使用 Microsoft 代码签名 PCA 2011 证书进行签名。 如果将 PowerShell 执行策略设置为 AllSigned,则需要确保设备信任此签名证书。 可以从安装了 Configuration Manager 控制台的计算机导出证书。 在 上
"C:\Program Files (x86)\Microsoft Endpoint Manager\AdminConsole\bin\CMPivot.exe"
查看证书,然后从证书路径导出代码签名证书。 然后将其导入到托管设备上的计算机的受信任发布者存储。 可以使用以下博客中的过程,但请确保从证书路径导出代码签名证书:使用 Intune 向受信任的发布者添加证书。
权限
CMPivot 需要以下权限:
- 对集合运行 CMPivot 权限
- 对清单报表的读取权限
- SMS 脚本对象的读取权限
-
默认范围。
- 从版本 2107 开始,不需要默认范围
按版本Configuration Manager CMPivot 权限
1902 及更早版本 | 版本 1906 到 2103 | 2107 或更高版本 |
---|---|---|
对集合运行脚本权限 | 对集合运行 CMPivot 权限 | 对集合运行 CMPivot 权限 |
对清单报表的读取权限 | 对清单报表的读取权限 | 对清单报表的读取权限 |
短信脚本的读取权限 | 短信脚本的读取权限 | N/A 如果管理服务由于 503 (服务不可用) 错误而回退,SMS 提供程序仍需要对 SMS 脚本的读取权限,如 CMPivot.log 中所示。 |
默认范围 权限 | 默认范围 权限 | 不适用 |
限制
- CMPivot 仅返回连接到当前站点的客户端的数据,除非它从管理中心站点 (CAS) 运行。
- 如果集合包含来自另一个站点的设备,除非从 CAS 运行 CMPivot,否则 CMPivot 结果仅来自当前站点中的设备。
- 在某些环境中,CMPivot 需要其他权限才能在 CAS 上运行。 有关详细信息,请参阅 版本 1902 的 CMPivot 更改。
- 不能在设备上自定义实体属性、结果列或操作。
- 在运行 Configuration Manager 控制台的计算机上,只能同时运行一个 CMPivot 实例。
- 在 CMPivot 独立版中,无法访问社区中心中存储的 CMPivot 查询。
- 使用多重身份验证的单一登录时,使用 Configuration Manager 2103 及更早版本时,可能无法从 CMPivot 登录到社区中心。
启动 CMPivot
在Configuration Manager控制台中,连接到主站点或 CAS。 转到 “资产和符合性” 工作区,然后选择“ 设备集合” 节点。 选择目标集合,然后在功能区中选择“ 启动 CMPivot ”以启动该工具。 如果未看到此选项,请检查以下配置:
- 请与站点管理员确认你的帐户具有所需的权限。 有关详细信息,请参阅先决条件。
接口提供有关使用 工具的详细信息。
在顶部手动输入查询字符串,或选择内联文档中的链接。
选择其中一个 实体 ,将其添加到查询字符串。
表运算符、聚合函数和标量函数的链接在 Web 浏览器中打开语言参考文档。 CMPivot 使用 Kusto 查询语言 (KQL) 。
使 CMPivot 窗口保持打开状态,以查看来自客户端的结果。 关闭 CMPivot 窗口时,会话已完成。
- 如果查询已发送,则客户端仍会向服务器发送状态消息响应。
如何使用 CMPivot
CMPivot 窗口包含以下元素:
CMPivot 当前面向的集合位于顶部的标题栏中,状态栏位于窗口底部。 例如,上述屏幕截图中的“PM_Team_Machines”。
左侧窗格列出了客户端上可用的 实体 。 某些实体依赖于 WMI,而另一些实体则使用 PowerShell 从客户端获取数据。
右键单击实体执行以下操作:
插入:将实体添加到当前光标位置的查询。 查询不会自动运行。 双击实体时,此操作是默认操作。 生成查询时使用此操作。
查询全部:为此实体运行查询,包括所有属性。 使用此操作可以快速查询单个实体。
按设备查询:为此实体运行查询并分组结果。 例如,
Disk | summarize dcount( Device ) by Name
展开实体以查看每个实体可用的特定属性。 双击某个属性,将其添加到当前游标位置的查询。
“ 开始 ”选项卡显示有关 CMPivot 的一般信息,包括示例查询和支持文档的链接。
“ 查询 ”选项卡显示查询窗格、结果窗格和状态栏。 在上面的屏幕截图示例中选择了“查询”选项卡。
查询窗格用于生成或键入在集合中的客户端上运行的查询。
CMPivot 使用 Kusto 查询语言 (KQL) 子集。
在查询窗格中剪切、复制或粘贴内容。
默认情况下,此窗格使用 IntelliSense。 例如,如果开始键入
D
,IntelliSense 会建议以该字母开头的所有实体。 选择一个选项,然后按 Tab 将其插入。 键入管道字符和空格|
,然后 IntelliSense 建议所有表运算符。 插入summarize
并键入空格,IntelliSense 建议所有聚合函数。 有关这些运算符和函数的详细信息,请选择 CMPivot 中的“ 开始 ”选项卡。查询窗格还提供以下选项:
运行查询。
- 若要在客户端上重新运行当前 CMPivot 查询,请在单击“运行”时按住 Ctrl。
在查询历史记录列表中向后和向前移动。
创建直接成员资格集合。
将查询结果导出到 CSV 或剪贴板。
结果窗格显示活动客户端为查询返回的数据。
可用列因实体和查询而异。
结果表或图表中数据的颜色饱和度指示数据是实时的还是来自站点数据库中存储的最后一次硬件清单扫描。 例如,黑色是来自联机客户端的实时数据,而灰色是缓存数据。
选择列名以按该属性对结果进行排序。
右键单击任何列名,按该列中的相同信息对结果进行分组,或对结果进行排序。
右键单击设备名称,在设备上执行以下附加操作:
透视到:查询此设备上的另一个实体。
- 从版本 2006 开始, 透视已 替换为 Device Pivot。 有关详细信息,请参阅 版本 2006 的 CMPivot 更改。
运行脚本:启动“运行脚本”向导以在此设备上运行现有的 PowerShell 脚本。 有关详细信息,请参阅 运行脚本。
远程控制:在此设备上启动Configuration Manager远程控制会话。 有关详细信息,请参阅 如何远程管理 Windows 客户端计算机。
资源资源管理器:为此设备启动Configuration Manager资源浏览器。 有关详细信息,请参阅 查看硬件清单 或 查看软件清单。
右键单击任何非设备单元可执行以下操作:
复制:将单元格的文本复制到剪贴板。
使用 显示设备:查询具有此属性的此值的设备。 例如,从查询结果中
OS
,在“版本”行的单元格上选择此选项:OS | summarize countif( (Version == '10.0.17134') ) by Device | where (countif_ > 0)
显示不带的设备:查询没有此属性的此值的设备。 例如,从查询结果中
OS
,在“版本”行的单元格上选择此选项:OS | summarize countif( (Version == '10.0.17134') ) by Device | where (countif_ == 0) | project Device
必应:将默认 Web 浏览器启动到 https://www.bing.com ,并将此值作为查询字符串。
选择任何超链接文本以透视视图的特定信息。
结果窗格显示的行数不超过 20,000 行。 调整查询以进一步筛选数据,或在较小的集合上重启 CMPivot。
状态栏显示从左到右) (以下信息:
目标集合的当前查询的状态。 此状态包括:
完成查询的活动客户端数 (3)
客户端总数 (5)
脱机客户端数 (2)
返回失败 (0) 的任何客户端
例如:
Query completed on 3 of 5 clients (2 clients offline and 0 failure)
客户端操作的 ID。 例如:
id(16780221)
当前集合。 例如:
PM_Team_Machines
结果窗格中的行总数。 例如,
1 objects
提示
从版本 2107 开始,使用 “再次查询设备 ”按钮或 Ctrl + F5 强制客户端再次检索查询的数据。 如果自上次查询以来预期数据在设备上发生更改(例如在故障排除期间), 再次使用查询设备 非常有用。 在返回初始结果后再次 选择“运行查询 ”只会分析 CMPivot 已从客户端检索到的数据。
将查询从 CMPivot 发布到社区中心
(适用于版本 2107 或更高版本)
从版本 2107 开始,可以直接从 CMPivot 窗口将 CMPivot 查询发布到社区中心。 通过 CMPivot 直接提交查询可以更轻松地参与社区中心。
对于 CMPivot 和参与社区中心,需要满足以下要求:
- 满足所有 CMPivot 先决条件和权限
- 启用 社区中心。
- 如果需要,请从Configuration Manager控制台通知安装 Microsoft Edge WebView2 扩展。
-
已加入社区中心的 GitHub 帐户
- 必须接受电子邮件中发送的邀请,否则将无法提供内容。
转到 “资产和符合性 ”工作区,然后选择“ 设备集合” 节点。
选择目标集合、目标设备或设备组,然后在功能区中选择“ 启动 CMPivot ”以启动该工具。
在“CMPivot”窗口中,选择菜单上的“社区中心”图标。
选择“ 登录”,然后登录到 GitHub。
创建 CMPivot 查询,然后选择“ 运行查询 ”以验证其按预期运行。
- (可选)选择文件夹图标以访问收藏夹列表,以使用已创建的查询。
准备好提交查询时,选择 CMPivot 社区中心窗口顶部的 “发布 ”链接。
为查询提供 “名称” 和 “说明”,然后选择“ 发布 ”按钮,将查询发送到社区中心。
贡献完成后,可以随时从“ 我 ”选项卡访问查询。
若要查看 GITHub 拉取请求 (PR) ,请转到 https://github.com/Microsoft/configmgr-hub/pulls。 还可以从“社区中心”节点中的“你的中心”页访问 PR 链接。
- 不应将 PR 直接提交到 GitHub 存储库。
注意
- 目前,通过 CMPivot 发布查询时,无法在发布后对其进行编辑或删除。
- 从 Configuration Manager 控制台运行社区中心时,仅在 CMPivot 中可用。 社区中心无法从 独立 CMPivot 获取。
CMPivot 的示例方案
以下部分提供了如何在环境中使用 CMPivot 的示例:
示例 1:停止正在运行的服务
安全管理员要求你尽快在会计部门的所有设备上停止并禁用计算机浏览器服务。 在会计中所有设备的集合上启动 CMPivot,然后在服务实体上选择“全部查询”。
Service
显示结果时,右键单击“ 名称” 列,然后选择“ 分组依据”。
Service | summarize dcount( Device ) by Name
在 “浏览器 ”服务的行中,选择 “dcount_ ”列中的超链接编号。
Service | where (Name == 'Browser') | summarize count() by Device
多选所有设备,右键单击所选内容,然后选择 “运行脚本”。 此操作将启动“运行脚本”向导,从该向导中运行现有脚本,以便停止和禁用服务。 使用 CMPivot 可快速响应所有活动计算机的安全事件,并在“运行脚本”向导中查看结果。 然后,接下来创建配置基线,以便在将来激活时修正集合中的其他计算机。
示例 2:主动解决应用程序故障
若要主动进行操作维护,请每周针对你管理的服务器的集合运行一次 CMPivot,然后在 AppCrash 实体上选择“全部查询”。 右键单击“ 文件名” 列,然后选择“ 升序排序”。 一台设备返回sqlsqm.exe的七个结果,时间戳大约为每天 03:00。 选择其中一行中的文件名,右键单击它,然后选择“ 必应它”。 浏览 Web 浏览器中的搜索结果,可找到Microsoft此问题的支持文章,其中包含详细信息和解决方法。
示例 3:BIOS 版本
为了 缓解推理执行端通道漏洞,其中一项要求是更新系统 BIOS。 从 BIOS 实体的查询开始。 然后 ,按Version 属性分组。 然后右键单击特定值,例如“LENOVO - 1140”,然后选择“显示设备”。
Bios | summarize countif( (Version == 'LENOVO - 1140') ) by Device | where (countif_ > 0)
示例 4:可用磁盘空间
需要暂时将大型文件存储在网络文件服务器上,但不确定哪个文件具有足够的容量。 针对文件服务器的集合启动 CMPivot,并查询 Disk 实体。 修改 CMPivot 查询以快速返回包含实时存储数据的活动服务器列表:
Disk | where (Description == 'Local Fixed Disk') | where isnotnull( FreeSpace ) | order by FreeSpace asc
CMPivot 独立
可以将 CMPivot 用作独立应用。 CMPivot 独立版仅以英语提供。 在 Configuration Manager 控制台外部运行 CMPivot,以查看环境中设备的实时状态。 此更改使你能够在设备上使用 CMPivot,而无需先安装控制台。
可以与其他角色(例如支持人员或安全管理员)共享 CMPivot 的强大功能,这些角色的计算机上未安装控制台。 这些其他角色可以使用 CMPivot 查询Configuration Manager以及他们传统上使用的其他工具。 通过共享这些丰富的管理数据,可以协同工作,主动解决跨角色的业务问题。
独立安装 CMPivot
设置运行 CMPivot 所需的权限。 有关详细信息,请参阅 先决条件。 如果权限适用于用户,还可以使用 安全管理员角色 。
在以下路径中找到 CMPivot 应用安装程序:
<site install path>\tools\CMPivot\CMPivot.msi
。 可以从该路径运行它,也可以将其复制到其他位置。运行 CMPivot 独立应用时,系统会要求你连接到站点。 指定管理中心或主站点服务器的完全限定域名或计算机名称。
- 每次打开独立 CMPivot 时,系统都会提示你连接到站点服务器。
浏览到要运行 CMPivot 的集合,然后运行查询。
注意
- CMPivot 独立版中不提供右键单击操作,例如 运行脚本、 资源资源管理器和 Web 搜索。 CMPivot 独立版的主要用途是独立于Configuration Manager基础结构进行查询。 为了帮助安全管理员,CMPivot 独立版包含连接到Microsoft Defender 安全中心的功能。
- 可以使用 CMPivot 独立执行本地设备查询评估。
CMPivot 内部
CMPivot 使用Configuration Manager“快速通道”将查询发送到客户端。 其他功能(如客户端通知操作、客户端状态和 Endpoint Protection)也使用此从服务器到客户端的通信通道。 客户端通过类似的快速状态消息系统返回结果。 状态消息暂时存储在数据库中。 有关用于客户端通知的端口的详细信息,请参阅 端口 一文。
查询和结果都只是文本。 实体 InstallSoftware 和 Process 返回一些最大的结果集。 在性能测试期间,这些查询的一个客户端的最大状态消息文件大小小于 1 KB。 此一次性查询扩展到具有 50,000 个活动客户端的大型环境,将在整个网络中生成小于 50 MB 的数据。 欢迎页上带有下划线的所有项将返回每个客户端不到 1 KB 的信息。
从 Configuration Manager 1810 开始,CMPivot 可以查询硬件清单数据,包括扩展的硬件清单类。 这些新实体 (在欢迎页上没有下划线的实体) 可能会返回更大的数据集,具体取决于为给定硬件清单属性定义的数据量。 例如,“InstalledExecutable”实体可能会为每个客户端返回多个 MB 的数据,具体取决于查询的特定数据。 使用 CMPivot 从较大的集合中返回较大的硬件清单数据集时,请注意系统上的性能和可伸缩性。
查询在一小时后超时。 例如,一个集合有 500 台设备,450 个客户端当前处于联机状态。 这些活动设备几乎立即接收查询并返回结果。 如果使 CMPivot 窗口保持打开状态,则当其他 50 个客户端联机时,它们也会接收查询并返回结果。
日志文件
CMPivot 交互记录到以下日志文件:
服务器端:
- SmsProv.log
- BgbServer.log
- StateSys.log
客户端:
- CcmNotificationAgent.log
- Scripts.log
- StateMessage.log
有关详细信息,请参阅 日志文件 和 CMPivot 故障排除。