注意
此功能作为 Intune 加载项提供。 有关详细信息,请参阅 使用 Intune Suite 加载项功能。
Microsoft Intune 高级分析提供组织中最终用户体验的全面可见性,并使用数据驱动的见解对其进行优化。 借助 Intune 高级分析,组织可以主动检测和解决终结点问题,简化故障排除过程,并改善用户的技术体验。 有关详细信息,请参阅高级分析概述。 若要开始使用高级分析功能,请确保满足先决条件。
通过针对多个设备的设备查询,可以使用 Kusto 查询语言 (KQL) 来查询收集的设备的清单数据,从而获得有关整个设备群的全面见解。 针对多个设备的设备查询支持 Intune 数据平台架构中指定的所有设备,其中包括已部署 属性目录策略 的企业 Android Enterprise、Apple iOS/iPadOS、macOS 和 Windows 设备。
先决条件
注意
无需为 Android 和 Apple 设备创建属性目录策略。 将自动收集设备属性。
若要在租户中使用设备查询,必须具有包含Microsoft Intune 高级分析的许可证。 高级分析功能可用于:
- Intune 高级分析加载项
- Microsoft Intune Suite
对于使用设备查询的用户,必须向其分配“托管设备 > 查询”和“组织 > 读取”权限。
设备必须是 Intune 托管的且公司拥有的设备。
针对多个设备的设备查询仅适用于已从分配 的属性目录 配置文件收集设备清单数据的设备。
支持的平台
运行:
- Windows 10 及更高版本
- Android
- Android Enterprise 公司拥有的专用设备 (COSU)
- Android Enterprise 公司拥有的完全托管 (COBO)
- Android Enterprise 公司拥有的工作配置文件 (COPE)
- Apple
- iOS/iPadOS
- macOS
如何将设备查询用于多个设备
若要对多个设备使用设备查询,请转到“ 设备 ”窗格,然后选择“ 设备查询”。 然后使用支持的属性和支持的运算符在查询框中输入查询,然后选择“ 运行 ”以执行查询。 结果显示在“ 结果 ”选项卡区域中。 如果只想运行部分查询,或者查询窗口中有多个查询,并且只想运行一个查询,可以突出显示要运行的查询并选择“ 运行”。 仅运行该查询。
可以展开左侧的视图,以查看可查询的所有属性。 选择要填充到查询中的任何一个。 可以选择并拖动左侧和查询窗口的边缘进行任何调整。
运行查询后,选择“ 导出 ”,将结果保存到 .CSV 文件。 可以选择导出查询结果中的所有列,或者仅导出所选列。 最多可将 50,000 个结果导出到文件。
提示
可以在 Intune 中使用 Copilot 为使用自然语言请求的设备查询生成 KQL 查询。 若要了解详细信息,请转到 设备查询中使用 Copilot 进行查询。
有关Kusto 查询语言的详细信息,请参阅了解有关Kusto 查询语言的详细信息。
示例查询
为了帮助你入门,本部分提供了一些示例查询。 若要访问示例查询,请展开“入门”页下的 “示例查询 ”部分,然后选择要添加到查询窗口的查询。 以下部分显示了示例查询的列表。
按核心计数排名靠前的处理器
此查询列出按核心计数排序的前五个 CPU。
Cpu| project Device, ProcessorId, Model, Architecture, CpuStatus, ProcessorType, CoreCount, LogicalProcessorCount, Manufacturer, AddressWidth| order by CoreCount asc| take 5
具有未受保护的磁盘的设备
此查询列出具有未加密磁盘的设备。
EncryptableVolume| where ProtectionStatus != "PROTECTED"| join LogicalDrive
Arm64 设备
此查询列出具有 ARM64 处理器的所有设备。
Cpu | where Architecture == "ARM64"
按处理器体系结构排序的设备计数
此查询按 CPU 体系结构提供设备的摘要。
Cpu| summarize DeviceCount=count() by Architecture
按电池容量排名靠前的设备
此查询按充满电的电池容量列出排名前 10 的设备。
Battery| project Device, InstanceName, Manufacturer, Model, SerialNumber, CycleCount, DesignedCapacity, FullChargedCapacity, FullChargedCapacityPercent = (FullChargedCapacity*100)/DesignedCapacity| top 10 by FullChargedCapacityPercent asc
设备内存信息
此查询列出物理和虚拟内存(以 GB 为单位)的设备。
MemoryInfo| project Device, PhysicalMemoryGB = PhysicalMemoryTotalBytes/(1000*1000*1000), VirtualMemoryGB = VirtualMemoryTotalBytes/(1000*1000*1000) | order by PhysicalMemoryGB asc
设备计数(按 OS 版本)
此查询按 OS 版本提供设备的摘要。
OsVersion| summarize DevicesCount = count() by OsVersion
设备 Bios 信息
此查询列出基于 BIOS 制造商的设备。
BiosInfo| where Manufacturer contains "Microsoft"
已禁用 TPM 的设备
此查询列出了禁用 TPM 的设备。
Tpm | where Enabled != true
支持的运算符
设备查询仅支持Kusto 查询语言 (KQL) 中支持的一部分运算符。 当前支持以下运算符:
表运算符
表运算符可用于筛选、汇总和转换数据流。 支持以下运算符:
| 表运算符 | 说明 |
|---|---|
count |
返回一个表,其中包含包含记录数的单个记录。 |
distinct |
使用输入表提供的列的不同组合生成表。 |
join |
合并两个表的行,通过匹配同一设备的行来形成新表。 仅支持 、、LeftouterFullouter、 Rightouter和 inner 的innerunique联接类型。 如果键入的联接类型不是受支持的联接类型,则会忽略这些联接类型。 如果联接为 Device 或 Device.Deviceid,则 Join 语句支持on语法。 联接的常见语法是 LeftEntity |join [提示] (条件上的 RightEntity) 。 有关详细信息,请参阅 联接 文档。 |
order by |
按一个或多个列对输入表的行进行排序。 |
project |
选择要包含、重命名或删除的列,然后插入新的计算列。 |
take |
最多返回指定的行数。 |
top |
返回按指定列排序的前 N 条记录。 |
where |
从表中筛选出满足谓词的行的子集。 |
summarize |
生成一个聚合输入表内容的表。 |
标量运算符
标量运算符可用于对单个值执行作。 支持以下运算符:
| 运算符 | 说明 | 示例 |
|---|---|---|
== |
等于 |
1 == 1, 'aBc' == 'AbC' |
!= |
不等于 |
1 != 2, 'abc' != 'abcd' |
< |
少 |
1 < 2, 'abc' < 'DEF' |
> |
大 |
2 > 1, 'xyz' > 'XYZ' |
<= |
小于或等于 |
1 <= 2, 'abc' <= 'abc' |
>= |
大于或等于 |
2 >= 1, 'abc' >= 'ABC' |
+ |
添加 |
2 + 1, now() + 1d |
- |
减法 |
2 - 1, now() - 1h |
* |
乘法 | 2 * 2 |
/ |
除法 | 2 / 1 |
% |
模 | 2 % 1 |
like |
LHS 包含 RHS 的匹配项 | 'abc' like '%B%' |
contains |
RHS 作为 LHS 的子序列出现 | 'abc' contains 'b' |
!contains |
LHS 中不会出现 RHS | 'team' !contains 'i' |
startswith |
RHS 是 LHS 的初始子序列 | 'team' startswith 'tea' |
!startswith |
RHS 不是 LHS 的初始子序列 | 'abc' !startswith 'bc' |
endswith |
RHS 是 LHS 的结束子序列 | 'abc' endswith 'bc' |
!endswith |
RHS 不是 LHS 的结束子序列 | 'abc' !endswith 'a' |
and |
仅当 RHS 和 LHS 为 true 时,才为 True | (1 == 1) and (2 == 2) |
or |
如果且仅当 RHS 或 LHS 为 true 时,才为 True | (1 == 1) or (1 == 2) |
聚合函数
聚合函数可用于汇总数据。 支持以下函数:
| 功能 | 说明 |
|---|---|
avg() |
返回组中值的平均值 |
count() |
返回每个汇总组的记录计数 |
countif() |
返回 Predicate 计算结果为 true 的行计数 |
dcount() |
返回组中非重复值的数目 |
max() |
返回组中的最大值 |
maxif() |
返回 Predicate 计算结果为 true 的组中的最大值 |
min() |
返回组中的最小值 |
minif() |
返回 Predicate 计算结果为 true 的组中的最小值 |
percentile() |
返回 Expr 所定义总体的指定最接近排名百分位数的估计值 |
sum() |
返回组中值的总和 |
sumif() |
返回 Predicate 计算结果为 true 的 Expr 之和 |
标量函数
标量函数可用于对单个值执行作。 支持以下函数:
| 功能 | 说明 |
|---|---|
ago() |
从当前 UTC 时钟时间中减去给定的时间跨度。 |
bin() |
将值向下舍入为给定箱大小的日期/时间倍数。 |
case() |
计算谓词列表,并返回满足谓词的第一个结果表达式。 |
datetime_add() |
从指定的日期部分乘以指定的金额计算新的日期时间,并添加到指定的日期时间。 不支持 amount 参数的负值。 |
datetime_diff() |
计算两个日期/时间值之间的差值。 |
iif() |
计算第一个参数,并返回第二个或第三个参数的值,具体取决于第二个) (谓词的计算结果为 true,还是第三个) (false。 |
indexof() |
报告输入字符串中指定字符串的第一个匹配项的从零开始的索引。 |
isnotnull() |
计算其唯一参数并返回一个布尔值,该值指示参数的计算结果是否为非 null 值。 |
isnull() |
计算其唯一参数并返回一个布尔值,该值指示参数的计算结果是否为 null 值。 |
now() |
返回当前 UTC 时钟时间。 |
strcat() |
连接 1 到 64 个参数。 |
strlen() |
返回输入字符串的长度(以字符为单位)。 |
substring() |
从源字符串中提取从某个索引开始到字符串末尾的子字符串。 |
tostring() |
将输入转换为字符串表示形式。 |
支持的属性
设备查询支持以下实体。 若要详细了解每个实体支持的属性,请参阅 Intune 数据平台架构。
- Apple 自动设置管理员帐户
- Apple 设备状态
- Apple 更新设置
- 电池
- Bios 信息
- 蓝牙
- 细胞的
- CPU
- 设备存储
- 磁盘驱动器
- 加密卷
- 逻辑驱动器
- 内存信息
- 网络适配器
- 作系统版本
- 共享 iPad
- Sim 信息
- 系统机箱
- 时间
- Tpm
- 视频控制器
- Windows Qfe
设备实体
多个设备的设备查询支持链接实体。 Device 实体可与所有其他受支持的实体一起使用。 设备实体支持以下属性:
| 属性 | 类型 | 说明 |
|---|---|---|
| DeviceId | String | Intune 在设备注册过程中生成的唯一 ID。 |
| EntraDeviceId | String | 作为注册或加入Microsoft Entra一部分的Microsoft Entra生成的唯一 ID。 |
| ManagementName | String | 仅在 Intune 管理中心中使用的易于识别的设备名称。 更改此名称不会更改设备名称或公司门户中的名称。 |
| DeviceName | String | 设备的名称 |
| 序列号 | String | 设备的序列号 |
| 制造商 | String | 设备的制造商 |
| 模型 | String | 设备的型号 |
| OSDescription | String | 作系统版本的完整说明 |
| OSVersion | String | 设备上的操作系统版本 |
| EnrollmentProfileName | String | 分配给设备的注册配置文件的名称。 默认值是一个空字符串,指示未向设备分配注册配置文件。 |
| EnrolledDateTime | Datetime | 设备在 Intune 中注册的日期和时间。 |
| CertExpirationDateTime | Datetime | 报告设备管理证书到期日期。 |
| EnrolledByUserId | String | 注册设备的用户的唯一标识符 |
| PrimaryUserId | String | 与设备关联的用户的唯一标识符。 |
| LastLoggedOnUserId | String | 上次登录到设备的用户的唯一标识符。 |
| InCompliancePeriodUntilDateTime | Datetime | 设备符合性宽限期的到期日期/时间 |
| DeviceCategoryId | String | 设备类别显示名称。 默认值为空字符串。 |
| LastSeenDateTime | String | 设备上次连接到 Intune 的日期和时间。 |
| Ownership | String | 设备的所有权。 |
设备实体允许引用与生成的行关联的设备,而无需编写单独的查询来将它们联接在一起。 实质上,它充当自动联接,在查询结果中包含设备信息。
为了便于使用,设备实体会自动加入到其他每个实体。 设备实体是查询结果中的第一列,除非查询通过使用 、 或 distinct等projectsummarize运算符更新返回类型。
在查询中单独使用 Device 会分析为 Device.DeviceId。 在默认情况下返回的“设备”列中,DeviceId 将转换为 DeviceName,以便更轻松地识别设备。
还可以通过引用 Device 在查询中引用设备实体及其属性。[Insert 属性]。
以下查询返回序列号为 123 的所有设备的 DiskDrive 信息:
DiskDrive
where Device.SerialNumber = 123
以下查询将投影实体 DiskDrive 的设备 ID 和制造商属性:
DiskDrive | project Device.DeviceId, Manufacturer
尽管默认情况下显示为第一列的 Device 实体在查询中单独使用 Device 显示为设备名称,但分析结果为 Device.DeviceId。 此查询返回按 DeviceID 排序的结果,而不是按 DeviceName 排序:
MemoryInfo | order by Device
同样,除非设备 ID 为 Desktop123,否则此查询不会返回任何结果。 它不会查询设备名称:
Cpu | where Device == "Desktop123"
使用以下示例查询设备名称:
Cpu | where Device.DeviceName == 'Desktop123"
已知限制
在聚合函数中使用 Device 实体会显示红色下划线。 但是,查询仍然可以运行,并且可以按预期返回结果。 例如,以下查询在 “设备” 下显示红色下划线,但仍运行:
Cpu | summarize max(Device) by Manufacturer.使用联接运算符、$left和$right参数的查询在$left和$right下显示红色下划线。 但是,查询仍可运行并按预期返回结果。
单个查询最多可以包含三个联接运算符。 具有更多联接的查询失败。
查询最多返回约 50,000 条记录。
每分钟最多可以提交 10 个查询。 同一分钟内的任何其他查询都失败。
每月最多可以提交 1,000 个查询。
不支持 datetime_add () 函数的 amounts 参数的负值。
引用聚合函数已汇总的变量会引发错误。 显式命名变量允许查询再次成功。 例如,查询设备 |summarize dcount (DeviceId) |按dcount_DeviceId排序将失败。 设备 |summarize DCountDeviceIdRename=dcount (DeviceId) |order by DCountDeviceIdRename 成功。