注意
此功能作为Intune加载项提供。 有关详细信息,请参阅使用 Intune 套件加载项功能。
通过针对多个设备的设备查询,可以使用 Kusto 查询语言 (KQL) 来查询收集的设备的清单数据,从而获得有关整个设备群的全面见解。
开始之前
- 确认环境满足所有 先决条件。
针对多个设备进行设备查询的其他先决条件:
设备平台要求
多个设备的设备查询支持:
- Windows
- Android
- Android Enterprise 公司拥有的专用设备 (COSU)
- Android Enterprise 公司拥有的完全托管 (COBO)
- Android Enterprise 公司拥有的工作配置文件 (COPE)
- Apple
- iOS/iPadOS
- macOS
设备配置要求
针对多个设备的设备查询支持以下设备:
- 由Intune管理,并标记为公司拥有
- Windows 设备必须部署 属性目录策略 才能收集清单数据。
对于 iOS/iPadOS、Android 和 macOS,将自动收集数据,无需部署单独的属性目录策略。
角色要求
对多个设备使用设备查询
- 在Microsoft Intune管理中心,选择“设备>设备查询”。
- 使用支持的属性和支持的运算符在查询框中输入查询。
- 选择“运行”以运行查询。
- 结果显示在“ 结果 ”选项卡区域中。
- 如果只想运行部分查询,或者查询窗口中有多个查询,并且只想运行一个查询,可以突出显示要运行的查询并选择“ 运行”。 仅运行该查询。
可以展开左侧的视图,以查看可查询的所有属性。 选择要填充到查询中的任何一个。 可以选择并拖动左侧和查询窗口的边缘进行任何调整。
运行查询后,选择“ 导出 ”,将结果保存到 .CSV 文件。 可以选择导出查询结果中的所有列,或者仅导出所选列。 最多可将 50,000 个结果导出到文件。
有关Kusto 查询语言的详细信息,请参阅了解有关Kusto 查询语言的详细信息。
提示
在 Intune 中使用 Copilot 为使用自然语言请求的设备查询生成 KQL 查询。 若要了解详细信息,请参阅 在设备查询中使用 Copilot 进行查询。
示例查询
为了帮助你入门,本部分提供了一些示例查询。 若要访问示例查询,请展开“入门”页下的 “示例查询 ”部分,然后选择要添加到查询窗口的查询。 以下部分显示了示例查询的列表。
按核心计数排名靠前的处理器
此查询列出按核心计数排序的前五个 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 Auto Setup Admin AccountsApple Device StatesApple Update SettingsBatteryBios InfoBluetoothCellularCPUDevice StorageDisk DriveEncryptable VolumeLogical DriveMemory InfoNetwork AdapterOs VersionShared iPadSim InfoSystem EnclosureSystemInfoTimeTpmVideo ControllerWindows 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 | 设备的所有权。 |
设备实体允许引用与生成的行关联的设备,而无需编写单独的查询来将它们联接在一起。 实质上,它充当自动联接,在查询结果中包含设备信息。
为了便于使用,设备实体会自动加入到其他每个实体。 设备实体是查询结果中的第一列,除非查询通过使用 、 或 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 成功。