通过


针对多个设备的设备查询

注意

此功能作为Intune加载项提供。 有关详细信息,请参阅使用 Intune 套件加载项功能

对Microsoft Intune中的多台设备使用设备查询,可以跨设备清单数据运行Kusto 查询语言 (KQL) 查询,并确定托管队列的趋势。 本文介绍先决条件、如何在Intune管理中心中创建和运行查询、如何使用结果,以及支持哪些运算符、函数和属性。

开始之前

针对多个设备进行设备查询的其他先决条件:

设备平台要求

多个设备的设备查询支持:

  • Windows
  • Android
    • Android Enterprise 公司拥有的专用设备 (COSU)
    • Android Enterprise 公司拥有的完全托管 (COBO)
    • Android Enterprise 公司拥有的工作配置文件 (COPE)
  • Apple
    • iOS/iPadOS
    • macOS

设备配置要求

针对多个设备的设备查询支持以下设备:

  • 由 Intune 管理,并标记为公司拥有。
  • Windows 设备必须部署 属性目录策略 才能收集清单数据。
    对于 iOS/iPadOS、Android 和 macOS,将自动收集数据,无需部署单独的属性目录策略。

角色要求

若要对多个设备使用设备查询,请使用至少具有以下角色之一的帐户:

  • 技术支持操作员
  • 自定义角色 包括:
    • 权限托管设备/查询
    • 提供对Intune (中托管设备的可见性和访问权限的权限,例如组织/读取、托管设备/读取)

对多个设备使用设备查询

  1. Microsoft Intune管理中心,选择“设备>设备查询”。
  2. 使用支持的属性和运算符在查询框中输入查询。
  3. 选择“运行”以运行查询。
  4. 在“ 结果 ”选项卡中查看结果。
    • 若要在存在多个查询时运行部分查询或单个查询,请突出显示要运行的查询,然后选择“ 运行”。 仅突出显示的查询运行。

可以展开左侧的视图,查看可查询的所有可用属性。 选择一个属性以将其插入查询中。 还可以调整左窗格和查询窗口的大小以调整布局。

有关Kusto 查询语言 (KQL) 的详细信息,请参阅了解有关Kusto 查询语言的详细信息

提示

在 Intune 中使用 Copilot 通过自然语言请求为设备查询生成 KQL 查询。 若要了解详细信息,请参阅 在设备查询中使用 Copilot 进行查询

查询结果和操作

运行查询后,结果将显示在“ 结果 ”选项卡中。可以通过多种方式与结果交互:

  • 当查询返回 50 个或更少的项时,可以搜索结果中的所有行,并使用列标题应用筛选器。
  • 选择“将所有项添加到组”,直接从查询结果创建Microsoft Entra安全组。 此操作可帮助你使用Microsoft Entra条件访问策略或Microsoft Intune策略针对特定设备。
  • 选择“ 导出 ”,将结果保存到 .csv 文件。 可以导出所有列或仅导出所选列。 最多可将 50,000 个结果导出到文件。

示例查询

为了帮助你入门,本部分提供了一些示例查询。 若要访问示例查询,请展开“入门”页下的“示例查询”部分,然后选择要添加到查询窗口的查询。 以下部分显示了示例查询的列表。

按核心计数排名靠前的处理器

此查询按核心计数显示前五个 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 on Device

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 合并两个表中的行,以基于指定列中的匹配值形成新表。 支持以下联接类型:
- innerunique (默认)
- inner
- leftouter
- rightouter
- fullouter
- leftsemi
- rightsemi
- leftanti
- rightanti

Join 语句支持可选 on 子句。 在设备查询方案中,通常在联接包含Device实体的表时使用on Device。 的 join 常见语法为: LeftTable | join [hints] (RightTable) on Conditions

重要: 不再支持使用 on Device.DeviceID 的联接。 当前指定的on Device.DeviceId查询应切换到使用 on Device,或者在联接Device实体时省略 on 子句。

有关详细信息,请参阅 Join 运算符
order by 按一个或多个列对输入表的行进行排序。
project 选择要包含、重命名或删除的列,并插入新的计算列。
take 返回最多指定的行数。
top 返回按指定列排序的前 N 条记录。
where 将表筛选为满足谓词的行子集。
summarize 生成聚合输入表内容的表。

注意

Device 是实体类型,不能直接在需要标量值的运算符中使用, (例如 distinctsummarizeorder by) 。 对于这些运算符,请使用设备的特定标量属性 (例如或 Device.SerialNumberDevice.OSVersion) 。

标量运算符

标量运算符可用于对单个值执行操作。 支持以下运算符:

运算符 说明 示例
== 等于 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 Auto Setup Admin Accounts
  • Apple Device States
  • Apple Update Settings
  • Battery
  • Bios Info
  • Bluetooth
  • Cellular
  • CPU
  • Device Storage
  • Disk Drive
  • Encryptable Volume
  • Logical Drive
  • Memory Info
  • Network Adapter
  • Os Version
  • Shared iPad
  • Sim Info
  • System Enclosure
  • SystemInfo
  • Time
  • Tpm
  • Video Controller
  • Windows Qfe

设备实体

多个设备的设备查询支持链接实体。 Device 实体可与所有其他受支持的实体一起使用。 设备实体支持以下属性:

属性 类型 说明
DeviceId String Intune作为设备注册的一部分生成的唯一 ID。
EntraDeviceId String 作为注册或加入Microsoft Entra一部分的Microsoft Entra生成的唯一 ID。
ManagementName String 仅在Intune管理中心中使用的易于识别的设备名称。 更改此名称不会更改设备名称或公司门户中的名称。
DeviceName String 设备的名称
SerialNumber String 设备的序列号
Manufacturer String 设备的制造商
Model 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 实体列,该列为每一行提供设备上下文。 、 或 distinctprojectsummarize运算符可以更改返回的列。

Device 表示与生成的行关联的设备,可以直接作为实体类型列引用。 在查询结果中显示时, Device 将使用友好标识符(例如设备名称)显示实体,以便更轻松地识别设备。

可以使用 在查询Device.[Property]中引用实体的属性Device

以下查询返回具有特定序列号的设备的所有信息 DiskDrive

DiskDrive
| where Device.SerialNumber == "123"

以下查询从DiskDrive实体投影 Device 实体和 Manufacturer 属性:


DiskDrive
| project Device, Manufacturer

默认情况下,查询结果包含一个 Device 实体,该实体表示与每一行关联的设备。 实体 Device 是实体类型列,不会隐式解析为特定的标量属性。 对结果进行排序或筛选时,请显式引用要使用的设备属性。 例如,此查询按设备名称对结果进行排序:


MemoryInfo
| order by Device.DeviceName

同样,若要按设备名称进行筛选,请 DeviceName 直接引用 属性:


Cpu
| where Device.DeviceName == "Desktop123"

已知限制

  • 使用实体类型列(例如 Device 在聚合函数中)可以在编辑器中显示红色下划线,因为聚合函数需要标量值。 若要避免这种情况,请引用实体的特定标量属性。 例如:

    Cpu
    | summarize max(CpuUsage) by Device.Manufacturer
    
  • 将 运算符与 和 $right 参数一join起使用$left的查询可能会在编辑器中显示红色下划线。 但是,查询仍可按预期运行并返回结果。

  • 单个查询最多可以包含三 join 个运算符。 具有更多联接的查询失败。

  • 查询最多返回约 50,000 条记录。

  • 每分钟最多可以提交 10 个查询。 同一分钟内的其他查询失败。

  • 每月最多可以提交 1,000 个查询。

  • 不支持函数参数的datetime_add()负值amount

  • 引用聚合函数生成的变量而不显式命名它可能会导致查询失败。 显式命名变量允许查询成功。 例如:

    • 查询 Device | summarize dcount(DeviceId) | order by dcount_DeviceId 失败。
    • 查询 Device | summarize DCountDeviceIdRename = dcount(DeviceId) | order by DCountDeviceIdRename 成功。