Requête d’appareil pour plusieurs appareils

Utilisez l’interrogation d’appareils pour plusieurs appareils dans Microsoft Intune pour exécuter des requêtes en langage de requête Kusto (KQL) dans les données d’inventaire des appareils et identifier les tendances dans votre flotte gérée. Cet article explique les conditions préalables, comment créer et exécuter des requêtes dans le Centre d’administration Intune, comment utiliser les résultats et quels opérateurs, fonctions et propriétés sont pris en charge.

Avant de commencer

Conditions préalables supplémentaires pour la requête d’appareil pour plusieurs appareils :

Configuration requise pour la plateforme d’appareil

L’interrogation d’appareil pour plusieurs appareils prend en charge :

  • Windows
  • Android
    • Appareils Android Entreprise dédiés appartenant à l’entreprise (COSU)
    • Appareils Android Entreprise complètement gérés appartenant à l’entreprise (COBO)
    • Profil professionnel Android Enterprise appartenant à l’entreprise (COPE)
  • Apple
    • iOS/iPadOS
    • macOS

Configuration requise pour les appareils

La requête d’appareil pour plusieurs appareils prend en charge les appareils qui sont :

  • Géré par Intune et marqué comme appartenant à l’entreprise.
  • Les appareils Windows doivent disposer d’une stratégie de catalogue de propriétés déployée pour collecter les données d’inventaire.
    Pour iOS/iPadOS, Android et macOS, les données sont collectées automatiquement et une stratégie de catalogue de propriétés distincte n’a pas besoin d’être déployée.

Exigences des rôles

Pour utiliser la requête d’appareil pour plusieurs appareils, utilisez un compte avec au moins un des rôles suivants :

  • Opérateur du support technique
  • Rôle personnalisé qui inclut :
    • L’autorisation Appareils gérés/Requête
    • Autorisations qui fournissent une visibilité et un accès aux appareils gérés dans Intune (par exemple, organisation/lecture, appareils gérés/lecture)

Utiliser l’interrogation d’appareil pour plusieurs appareils

  1. Dans le Centre d’administration Microsoft Intune, sélectionnezRequête sur l’appareildes appareils>.
  2. Entrez une requête dans la zone de requête à l’aide des propriétés et opérateurs pris en charge.
  3. Sélectionnez Exécuter pour exécuter la requête.
  4. Afficher les résultats dans l’onglet Résultats .
    • Pour exécuter une partie d’une requête ou une seule requête lorsque plusieurs requêtes sont présentes, mettez en surbrillance la requête que vous souhaitez exécuter et sélectionnez Exécuter. Seule la requête mise en surbrillance s’exécute.

Vous pouvez développer l’affichage sur le côté gauche pour afficher toutes les propriétés disponibles que vous pouvez interroger. Sélectionnez une propriété pour l’insérer dans votre requête. Vous pouvez également redimensionner le volet gauche et la fenêtre de requête pour ajuster la disposition.

Pour plus d’informations sur le langage de requête Kusto (KQL), consultez En savoir plus sur le langage de requête Kusto.

Conseil

Utilisez Copilot dans Intune pour générer des requêtes KQL pour la requête d’appareil à l’aide de requêtes en langage naturel. Pour en savoir plus, consultez Requête avec Copilot dans la requête d’appareil.

Résultats et actions de la requête

Après l’exécution d’une requête, les résultats apparaissent dans l’onglet Résultats . Vous pouvez interagir avec les résultats de plusieurs façons :

  • Lorsqu’une requête renvoie 50 éléments ou moins, vous pouvez effectuer une recherche dans toutes les lignes des résultats et appliquer des filtres à l’aide des en-têtes de colonne.
  • Créez des groupes de sécurité Microsoft Entra directement à partir des résultats d’une requête en sélectionnant Ajouter tous les éléments à un groupe. Cette action vous permet de cibler des appareils spécifiques avec des stratégies d’accès conditionnel Microsoft Entra ou des stratégies Microsoft Intune.
  • Sélectionnez Exporter pour enregistrer les résultats dans un fichier .csv. Vous pouvez exporter toutes les colonnes ou seulement des colonnes sélectionnées. Vous pouvez exporter jusqu’à 50 000 résultats dans un fichier.

Exemples de requêtes

Pour vous aider à démarrer, cette section fournit quelques exemples de requêtes. Pour accéder aux exemples de requêtes, développez la section d’exemples de requêtes sous la page Prise en main , puis sélectionnez la requête à ajouter à la fenêtre de requête. La section suivante présente la liste des exemples de requêtes.

Principaux processeurs par nombre de cœurs

Cette requête affiche les cinq principaux processeurs par nombre de cœurs.

Cpu
| project Device, ProcessorId, Model, Architecture, CpuStatus, ProcessorType, CoreCount, LogicalProcessorCount, Manufacturer, AddressWidth
| order by CoreCount asc
| take 5

Appareils avec disques non protégés

Cette requête répertorie les appareils avec des disques non chiffrés.

EncryptableVolume
| where ProtectionStatus != "PROTECTED"
| join LogicalDrive on Device

Périphériques ARM64

Cette requête répertorie tous les appareils avec un processeur ARM64.

Cpu
| where Architecture == "ARM64"

Nombre d’appareils par architecture de processeur

Cette requête fournit un résumé des appareils par architecture de processeur.

Cpu
| summarize DeviceCount = count() by Architecture

Meilleurs appareils par capacité de batterie

Cette requête répertorie les 10 principaux appareils par capacité de batterie complètement chargée.

Battery
| project Device, InstanceName, Manufacturer, Model, SerialNumber, CycleCount,
          DesignedCapacity,
          FullChargedCapacity,
          FullChargedCapacityPercent = (FullChargedCapacity * 100) / DesignedCapacity
| top 10 by FullChargedCapacityPercent asc

Informations de mémoire des appareils

Cette requête répertorie les appareils avec mémoire physique et virtuelle en Go.

MemoryInfo
| project Device,
          PhysicalMemoryGB = PhysicalMemoryTotalBytes/(1000*1000*1000),
          VirtualMemoryGB = VirtualMemoryTotalBytes/(1000*1000*1000)
| order by PhysicalMemoryGB asc

Nombre d’appareils par version du système d’exploitation

Cette requête fournit un résumé des appareils par version du système d’exploitation.

OsVersion| summarize DevicesCount = count() by OsVersion

Informations sur le BIOS de l’appareil

Cette requête répertorie les périphériques en fonction du fabricant du BIOS.

BiosInfo| where Manufacturer contains "Microsoft"

Appareils désactivés du TPM

Cette requête répertorie les appareils pour lesquels le module TPM est désactivé.

Tpm | where Enabled != true

Opérateurs pris en charge

La requête d’appareil prend en charge uniquement un sous-ensemble des opérateurs pris en charge dans le langage de requête Kusto (KQL). Les opérateurs suivants sont actuellement pris en charge :

Opérateurs de table

Les opérateurs de table peuvent être utilisés pour filtrer, résumer et transformer des flux de données. Les opérateurs suivants sont pris en charge :

Opérateur de table Description
count Renvoie une table avec un seul enregistrement contenant le nombre d’enregistrements.
distinct Génère une table avec des combinaisons distinctes des colonnes fournies à partir de la table d’entrée.
join Fusionne les lignes de deux tables pour former une nouvelle table basée sur les valeurs correspondantes dans les colonnes spécifiées. Les types de jointures suivants sont pris en charge :
- innerunique (par défaut)
- inner
- leftouter
- rightouter
- fullouter
- leftsemi
- rightsemi
- leftanti
- rightanti

Les instructions Join prennent en charge une clause facultative on . Dans les scénarios de requête d’appareil, vous utilisez on Device généralement pour joindre des tables contenant une Device entité. La syntaxe courante pour join est : LeftTable | join [hints] (RightTable) on Conditions.

Important : Les jointures qui utilisent on Device.DeviceID ne sont plus prises en charge. Les requêtes qui spécifient on Device.DeviceId actuellement doivent passer à l’utilisation on Devicede , ou omettre la clause lors de on la jonction sur l’entité Device .

Pour plus d’informations, voir Opérateur de jointure.
order by Trie les lignes de la table d’entrée sur une ou plusieurs colonnes.
project Sélectionne les colonnes à inclure, renommer ou supprimer, et insère de nouvelles colonnes calculées.
take Retourne jusqu’au nombre de lignes spécifié.
top Renvoie les N premiers enregistrements triés selon les colonnes spécifiées.
where Filtre une table sur le sous-ensemble de lignes qui répondent à un prédicat.
summarize Génère une table qui agrège le contenu de la table d’entrée.

Remarque

Device est un type d’entité qui ne peut pas être utilisé directement dans les opérateurs qui nécessitent des valeurs scalaires (telles distinctque , summarizeet order by). Pour ces opérateurs, utilisez une propriété scalaire spécifique du périphérique (par exemple, Device.SerialNumber ou Device.OSVersion).

Opérateurs scalaires

Les opérateurs scalaires peuvent être utilisés pour effectuer des opérations sur des valeurs individuelles. Les opérateurs suivants sont pris en charge :

Opérateurs Description Exemple
== Equal 1 == 1, 'aBc' == 'AbC'
!= Différent de 1 != 2, 'abc' != 'abcd'
< Moins 1 < 2, 'abc' < 'DEF'
> Plus grand 2 > 1, 'xyz' > 'XYZ'
<= Inférieur ou égal 1 <= 2, 'abc' <= 'abc'
>= Supérieur ou égal 2 >= 1, 'abc' >= 'ABC'
+ Additionner 2 + 1, now() + 1d
- Soustraire 2 - 1, now() - 1h
* Multiplier 2 * 2
/ Diviser 2 / 1
% Modulo 2 % 1
like LHS contient une correspondance pour RHS 'abc' like '%B%'
contains RHS se présente comme une sous-séquence de LHS 'abc' contains 'b'
!contains RHS ne se produit pas dans LHS 'team' !contains 'i'
startswith RHS est une sous-séquence initiale de LHS 'team' startswith 'tea'
!startswith RHS n’est pas une sous-séquence initiale de LHS 'abc' !startswith 'bc'
endswith RHS est une sous-séquence fermante de LHS 'abc' endswith 'bc'
!endswith RHS n’est pas une sous-séquence de fermeture de LHS 'abc' !endswith 'a'
and True si et seulement si RHS et LHS sont vrais (1 == 1) and (2 == 2)
or True si et seulement si RHS ou LHS a la valeur true (1 == 1) or (1 == 2)

Fonctions d’agrégation

Les fonctions d’agrégation peuvent être utilisées pour synthétiser des données. Les fonctions suivantes sont prises en charge :

Fonction Description
avg() renvoie la moyenne des valeurs sur un groupe.
count() Renvoie le nombre d’enregistrements par groupe de totalisation.
countif() Renvoie un nombre de lignes pour lesquelles Predicate est évalué comme vrai.
dcount() renvoie le nombre de valeurs distinctes dans le groupe.
max() Renvoie la valeur maximale dans le groupe
maxif() Renvoie la valeur maximale dans le groupe pour lequel prédicat est évalué comme vrai.
min() renvoie la valeur minimale dans le groupe.
minif() Renvoie la valeur minimale dans le groupe pour lequel prédicat est évalué comme vrai.
percentile() Renvoie une estimation pour le centile de rang le plus proche spécifié de la population définie par Expr.
sum() renvoie la somme des valeurs du groupe dans un groupe.
sumif() Renvoie une somme d’Expr pour laquelle prédicat est évalué comme vrai.

Fonctions scalaires

Les fonctions scalaires peuvent être utilisées pour effectuer des opérations sur des valeurs individuelles. Les fonctions suivantes sont prises en charge :

Fonction Description
ago() Soustrait l’intervalle de temps donné de l’heure UTC actuelle.
bin() Arrondit les valeurs au multiple de date/heure inférieur d’une taille de compartiment donnée.
case() Évalue une liste de prédicats et renvoie la première expression de résultat dont le prédicat est satisfait.
datetime_add() Calcule une nouvelle date/heure à partir d’une partie de date spécifiée multipliée par un montant spécifié, ajouté à une date/heure spécifiée. Les valeurs négatives pour le paramètre amount ne sont pas prises en charge.
datetime_diff() Calcule la différence entre deux valeurs de date/heure.
iif() Évalue le premier argument et renvoie la valeur du deuxième ou du troisième argument selon que le prédicat est évalué à vrai (deuxième) ou faux (troisième).
indexof() Signale l’index en base zéro de la première occurrence d’une chaîne spécifiée dans la chaîne d’entrée.
isnotnull() Évalue son seul argument et renvoie une valeur booléenne indiquant si l’argument est évalué à une valeur non nulle.
isnull() Évalue son seul argument et renvoie une valeur booléenne indiquant si l’argument est évalué à une valeur nulle.
now() Renvoie l’heure UTC actuelle.
strcat() Concatène entre 1 et 64 arguments.
strlen() Renvoie la longueur, en caractères, de la chaîne d’entrée.
substring() Extrait une sous-chaîne d’une chaîne source à partir d’un index jusqu’à la fin de la chaîne.
tostring() Convertit l’entrée en une représentation sous forme de chaîne.

Propriétés prises en charge

La requête d’appareil prend en charge les entités suivantes. Pour en savoir plus sur les propriétés prises en charge pour chaque entité, consultez Schéma de plateforme de données Intune.

  • Apple Auto Setup Admin Accounts
  • Apple Device States
  • Apple Update Settings
  • Battery
  • Bios Info
  • Bluetooth
  • Cellular
  • CPU
  • Device Storage
  • Disk Drive
  • Encryptable Volume
  • Local AI Agent
  • Logical Drive
  • Memory Info
  • Network Adapter
  • Os Version
  • Shared iPad
  • Sim Info
  • System Enclosure
  • SystemInfo
  • Time
  • Tpm
  • Video Controller
  • Windows Qfe

Entité d’appareil

La requête d’appareil pour plusieurs appareils prend en charge une entité liée. L’entité Appareil peut être utilisée avec toutes les autres entités prises en charge. L’entité d’appareil prend en charge les propriétés suivantes :

Propriété Type Description
DeviceId String ID unique généré par Intune dans le cadre de l’inscription des appareils.
EntraDeviceId String ID unique généré par Microsoft Entra dans le cadre de l’inscription ou de l’adhésion à Microsoft Entra.
ManagementName String Nom d’appareil facilement reconnaissable utilisé uniquement dans le centre d’administration Intune. La modification de ce nom ne modifie pas le nom de l’appareil ou le nom dans le Portail d’entreprise.
DeviceName String Nom de l’appareil
SerialNumber String Numéro de série de l’appareil
Manufacturer String Fabricant de l’appareil
Model String Modèle d’appareil.
OSDescription String Description complète de l’édition du système d’exploitation
OSVersion String Version du système d’exploitation sur l’appareil
EnrollmentProfileName String Nom du profil d’inscription affecté à l’appareil. La valeur par défaut est une chaîne vide indiquant qu’aucun profil d’inscription n’a été affecté à l’appareil.
EnrolledDateTime DateHeure Date et heure de l’inscription de l’appareil dans Intune.
CertExpirationDateTime DateHeure Signale la date d’expiration du certificat de gestion des appareils.
EnrolledByUserId String Identificateur unique pour l’utilisateur qui a inscrit l’appareil
PrimaryUserId String Identifiant unique de l’utilisateur associé à l’appareil.
LastLoggedOnUserId String Identificateur unique de l’utilisateur qui s’est connecté à l’appareil en dernier.
InCompliancePeriodUntilDateTime DateHeure Date et heure d’expiration de la période de grâce de conformité de l’appareil
DeviceCategoryId String Nom d’affichage de la catégorie d’appareil. Il s'agit par défaut d'une chaîne vide.
LastSeenDateTime String Date et heure de dernière connexion de l’appareil à Intune.
Ownership String Propriété de l’appareil.

L’entité Device vous permet de référencer les informations d’appareil associées à chaque ligne résultante sans avoir besoin de joindre explicitement une table d’appareils.

Par défaut, les résultats de la requête incluent une colonne d’entité qui fournit le Device contexte de l’appareil pour chaque ligne. Les opérateurs tels que project, summarizeou distinct peuvent modifier les colonnes renvoyées.

Device Représente l’appareil associé à la ligne résultante et peut être référencé directement en tant que colonne de type d’entité. Lorsqu’elle est affichée dans les résultats de la requête, l’entité Device est affichée à l’aide d’un identificateur convivial, tel que le nom de l’appareil, pour faciliter l’identification des appareils.

Vous pouvez référencer les propriétés de l’entité Device dans les requêtes à l’aide Device.[Property]de .

La requête suivante renvoie toutes les informations pour les DiskDrive appareils avec un numéro de série spécifique :

DiskDrive
| where Device.SerialNumber == "123"

La requête suivante projette l’entité Device et la Manufacturer propriété à partir de l’entité DiskDrive :


DiskDrive
| project Device, Manufacturer

Par défaut, les résultats de la requête incluent une Device entité qui représente l’appareil associé à chaque ligne. L’entité Device est une colonne de type entité et ne se résout pas implicitement en une propriété scalaire spécifique. Lorsque vous triez ou filtrez les résultats, faites explicitement référence à la propriété de l’appareil que vous souhaitez utiliser. Par exemple, cette requête classe les résultats par nom d’appareil :


MemoryInfo
| order by Device.DeviceName

De même, pour filtrer par nom d’appareil, référencez directement la DeviceName propriété :


Cpu
| where Device.DeviceName == "Desktop123"

Limitations connues

  • L’utilisation de colonnes de type entité telles que dans Device les fonctions d’agrégation peut afficher un soulignement rouge dans l’éditeur, car les fonctions d’agrégation nécessitent des valeurs scalaires. Pour éviter cela, référencez une propriété scalaire spécifique de l’entité. Par exemple :

    Cpu
    | summarize max(CpuUsage) by Device.Manufacturer
    
  • Les requêtes qui utilisent l’opérateur join avec $left les paramètres et $right peuvent afficher un soulignement rouge dans l’éditeur. Toutefois, la requête peut toujours s’exécuter et renvoyer les résultats attendus.

  • Une même requête peut contenir au maximum trois join opérateurs. Les requêtes avec plus de jointures échouent.

  • Un maximum de ~50 000 enregistrements sont renvoyés pour une requête.

  • Un maximum de 10 requêtes peut être soumis par minute. Les requêtes supplémentaires dans la même minute échouent.

  • Vous pouvez soumettre plus de 1 000 requêtes par mois.

  • Les valeurs négatives pour le amount paramètre de la datetime_add() fonction ne sont pas prises en charge.

  • Le référencement d’une variable générée par une fonction d’agrégation sans la nommer explicitement peut entraîner l’échec d’une requête. Le fait de nommer explicitement la variable permet à la requête de réussir. Par exemple :

    • La requête Device | summarize dcount(DeviceId) | order by dcount_DeviceId échoue.
    • La requête Device | summarize DCountDeviceIdRename = dcount(DeviceId) | order by DCountDeviceIdRename réussit.
    • L’assistance NL2KQL pour l’entité « Agent IA local » n’est actuellement pas prise en charge.