多个设备的设备查询

通过针对多个设备的设备查询,可以使用 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 返回一个表,其中包含包含记录数的单个记录。
不同 使用输入表提供的列的不同组合生成表。
加入 合并两个表的行,通过匹配同一设备的行来形成新表。 仅支持 、、LeftouterFullouterRightoutre和 inner 的innerunique联接类型。 如果键入的联接类型不是受支持的联接类型,则会忽略这些联接类型。 如果联接为 DeviceDevice.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 成功。