通过针对多个设备的设备查询,可以使用 Kusto 查询语言 (KQL) 来查询收集的设备的清单数据,从而获得有关整个设备群的全面见解。
先决条件
若要在租户中使用设备查询,必须具有包含Microsoft Intune 高级分析的许可证。 高级分析功能可用于:
- Intune 高级分析加载项
- Microsoft Intune Suite
对于使用设备查询的用户,必须向其分配“托管设备 > 查询”和“组织 > 读取”权限。
设备必须Intune管理和公司拥有。
针对多个设备的设备查询仅适用于已从分配 的属性目录 配置文件收集设备清单数据的设备。
支持的平台
目前仅在运行 Windows 10 及更高版本的设备上支持对多个设备进行设备查询。
如何将设备查询用于多个设备
若要对多个设备使用设备查询,请导航到“ 设备 ”窗格,然后选择“ 设备查询”。 然后,使用支持的属性和支持的运算符在查询框中输入查询,然后选择“ 运行 ”以执行查询。 结果显示在“ 结果 ”选项卡区域中。 如果只想运行部分查询,或者查询窗口中有多个查询,并且只想运行一个查询,可以突出显示要运行的查询并选择“ 运行”。 仅运行该查询。
可以展开左侧的视图,以查看可查询的所有属性。 选择要填充到查询中的任何一个。 可以选择并拖动左侧和查询窗口的边缘进行任何调整。
提示
现在可以在公共预览版) 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), VirtuaMemoryGB = 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 | 返回一个表,其中包含包含记录数的单个记录。 |
不同 | 使用输入表提供的列的不同组合生成表。 |
加入 | 合并两个表的行,通过匹配同一设备的行来形成新表。 仅支持 、、Leftouter Fullouter 、 Rightoutre 和 inner 的innerunique 联接类型。 如果键入的联接类型不是受支持的联接类型,则会忽略这些联接类型。 如果联接为 Device 或 Device.Deviceid ,则 Join 语句支持on 语法。 联接的常见语法是 LeftEntity |join [提示] (条件上的 RightEntity) 。 有关详细信息,请参阅 联接 文档。 |
order by | 按一个或多个列对输入表的行进行排序。 |
项目 | 选择要包含、重命名或删除的列,然后插入新的计算列。 |
拿 | 最多返回指定的行数。 |
top | 返回按指定列排序的前 N 条记录。 |
哪里 | 从表中筛选出满足谓词的行的子集。 |
汇总 | 生成一个聚合输入表内容的表。 |
标量运算符
标量运算符可用于对单个值执行作。 支持以下运算符:
运算符 | 说明 | 示例 |
---|---|---|
== | 等于 | 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,现在 () + 1d |
- | 减法 | 2 - 1,现在 () - 1 小时 |
* | 乘法 | 2 * 2 |
/ | 除法 | 2 / 1 |
% | 模 | 2 % 1 |
喜欢 | LHS 包含 RHS 的匹配项 | “%B%”等“abc” |
contains | RHS 作为 LHS 的子序列出现 | “abc”包含“b” |
!包含 | LHS 中不会出现 RHS | “team”!contains 'i' |
startswith | RHS 是 LHS 的初始子序列 | “团队”以“茶”开头 |
!startswith | RHS 不是 LHS 的初始子序列 | “abc”!startswith 'bc' |
endswith | RHS 是 LHS 的结束子序列 | “abc”结尾为“bc” |
!endswith | RHS 不是 LHS 的结束子序列 | “abc”!endswith“a” |
和 | 仅当 RHS 和 LHS 为 true 时,才为 True | (1 == 1) , (2 == 2) |
或 | 如果且仅当 RHS 或 LHS 为 true 时,才为 True | (1 == 1) 或 (1 == 2) |
聚合函数
聚合函数可用于汇总数据。 支持以下函数:
函数 | 说明 |
---|---|
avg () | 返回组中值的平均值 |
count () | 返回每个汇总组的记录计数 |
countif () | 返回 Predicate 计算结果为 true 的行计数 |
dcount () | 返回组中非重复值的数目 |
max () | 返回组中的最大值 |
maxif () | 返回 Predicate 计算结果为 true 的组中的最大值 |
min () | 返回组中的最小值 |
minif () | 返回 Predicate 计算结果为 true 的组中的最小值 |
百分位 () | 返回 Expr 所定义总体的指定最接近排名百分位数的估计值 |
sum () | 返回组中值的总和 |
sumif () | 返回 Predicate 计算结果为 true 的 Expr 之和 |
标量函数
标量函数可用于对单个值执行作。 支持以下函数:
函数 | 说明 |
---|---|
以前 () | 从当前 UTC 时钟时间中减去给定的时间跨度。 |
bin () | 将值向下舍入为给定箱大小的日期/时间倍数。 |
case () | 计算谓词列表,并返回满足谓词的第一个结果表达式。 |
datetime_add () | 从指定的日期部分乘以指定的金额计算新的日期时间,并添加到指定的日期时间。 不支持 amount 参数的负值。 |
datetime_diff () | 计算两个日期/时间值之间的差值。 |
iif () | 计算第一个参数,并返回第二个或第三个参数的值,具体取决于第二个) (谓词的计算结果为 true,还是第三个) (false。 |
indexof () | 报告输入字符串中指定字符串的第一个匹配项的从零开始的索引。 |
isnotnull () | 计算其唯一参数并返回一个布尔值,该值指示参数的计算结果是否为非 null 值。 |
isnull () | 计算其唯一参数并返回一个布尔值,该值指示参数的计算结果是否为 null 值。 |
现在 () | 返回当前 UTC 时钟时间。 |
strcat () | 连接 1 到 64 个参数。 |
strlen () | 返回输入字符串的长度(以字符为单位)。 |
substring () | 从源字符串中提取从某个索引开始到字符串末尾的子字符串。 |
tostring () | 将输入转换为字符串表示形式。 |
支持的属性
设备查询支持以下实体。 若要详细了解每个实体支持哪些属性,请参阅Intune数据平台架构。
- 电池
- Bios 信息
- 中央处理器
- 磁盘驱动器
- 加密卷
- 逻辑驱动器
- 内存信息
- 网络适配器
- 作系统版本
- Sim 信息
- 系统机箱
- 时间
- Tpm
- 视频控制器
- Windows Qfe
设备实体
针对多个设备的设备查询支持链接实体,该实体可与所有其他受支持的实体一起使用。 设备实体支持以下属性:
属性 | 类型 | 说明 |
---|---|---|
DeviceId | String | 作为 MDM 注册的一部分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 | 设备的所有权。 |
设备实体允许引用与生成的行关联的设备,而无需编写单独的查询来将它们联接在一起。 实质上,它充当自动联接,在查询结果中包含设备信息。
为了便于使用,设备实体会自动加入到其他每个实体。 默认情况下,设备实体在查询结果中显示为查询结果中的第一列,除非查询通过使用项目、汇总或非重复) 等运算符来更新返回类型 (。 在查询中单独使用 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 成功。