Zapytanie urządzenia dla wielu urządzeń

Użyj zapytania dotyczącego urządzeń dla wielu urządzeń w Microsoft Intune, aby uruchamiać zapytania język zapytań Kusto (KQL) w ramach danych dotyczących spisu urządzeń i identyfikować trendy w zarządzanej flocie. W tym artykule wyjaśniono wymagania wstępne, sposób tworzenia i uruchamiania zapytań w centrum administracyjnym usługi Intune, sposób pracy z wynikami oraz obsługiwane operatory, funkcje i właściwości.

Przed rozpoczęciem

Dodatkowe wymagania wstępne dotyczące zapytania urządzenia dla wielu urządzeń:

Wymagania dotyczące platformy urządzenia

Zapytanie urządzenia dla wielu urządzeń obsługuje:

  • System Windows
  • Android
    • Dedykowane urządzenia firmowe z systemem Android Enterprise (COSU)
    • W pełni zarządzane firmowe urządzenie z systemem Android Enterprise (COBO)
    • Należący do firmy profil służbowy systemu Android Enterprise (COPE)
  • Jabłko
    • iOS/iPadOS
    • macOS

Wymagania dotyczące konfiguracji urządzenia

Zapytanie urządzenia dla wielu urządzeń obsługuje urządzenia, które są:

  • Zarządzane przez usługę Intune i oznaczone jako należące do firmy.
  • Urządzenia z systemem Windows muszą mieć wdrożone zasady wykazu właściwości w celu zbierania danych zapasów.
    W przypadku systemów iOS/iPadOS, Android i macOS dane są zbierane automatycznie i nie trzeba wdrażać oddzielnych zasad wykazu właściwości.

Wymagania dotyczące ról

Aby używać funkcji Device Query dla wielu urządzeń, użyj konta z co najmniej jedną z następujących ról:

  • Operator pomocy technicznej
  • Rola niestandardowa , która obejmuje:
    • Uprawnienie Zarządzane urządzenia/zapytanie
    • Uprawnienia, które zapewniają wgląd i dostęp do zarządzanych urządzeń w usłudze Intune (na przykład organizacja/odczyt, urządzenia zarządzane/odczyt)

Korzystanie z trybu zapytania dla wielu urządzeń

  1. In the Microsoft Intune admin center, select Devices>Device query.
  2. Wprowadź zapytanie w polu zapytania, używając obsługiwanych właściwości i operatorów.
  3. Wybierz pozycję Uruchom, aby wykonać zapytanie.
  4. Wyświetl wyniki na karcie Wyniki .
    • Aby uruchomić część zapytania lub pojedyncze zapytanie, gdy istnieje wiele zapytań, wyróżnij zapytanie, które chcesz uruchomić, i wybierz pozycję Uruchom. Zostanie uruchomione tylko podświetlone zapytanie.

Możesz rozwinąć widok po lewej stronie, aby wyświetlić wszystkie dostępne właściwości, które możesz zakwestionować. Wybierz właściwość, aby wstawić ją do zapytania. Aby dostosować układ, możesz również zmienić rozmiar lewego okienka i okna zapytania.

Aby uzyskać więcej informacji na temat języka zapytań Kusto (KQL), zobacz Dowiedz się więcej o języku zapytań Kusto.

Porada

Używanie usługi Copilot w usłudze Intune do generowania zapytań KQL dla zapytań dotyczących urządzeń przy użyciu żądań w języku naturalnym. Aby dowiedzieć się więcej, zobacz Zapytanie za pomocą funkcji Copilot w artykule Zapytanie dotyczące urządzeń.

Wyniki i akcje kwerendy

Po uruchomieniu zapytania wyniki są wyświetlane na karcie Wyniki . Z wynikami możesz pracować na kilka sposobów:

  • Jeśli kwerenda zwróci nie więcej niż 50 elementów, można przeszukać wszystkie wiersze wyników i zastosować filtry przy użyciu nagłówków kolumn.
  • Grupy zabezpieczeń usługi Microsoft Entra można tworzyć bezpośrednio z wyników zapytania, wybierając pozycję Dodaj wszystkie elementy do grupy. Ta akcja ułatwia kierowanie określonych urządzeń za pomocą zasad dostępu warunkowego usługi Microsoft Entra lub zasad usługi Microsoft Intune.
  • Wybierz pozycję Eksportuj , aby zapisać wyniki w pliku .csv. Można wyeksportować wszystkie kolumny lub tylko wybrane kolumny. Do pliku można wyeksportować maksymalnie 50 000 wyników.

Przykładowe zapytania

Aby ułatwić rozpoczęcie pracy, w tej sekcji przedstawiono kilka przykładowych zapytań. Aby uzyskać dostęp do przykładowych zapytań, rozwiń sekcję przykładowych zapytań na stronie Wprowadzenie i wybierz zapytanie, które chcesz dodać do okna zapytania. W poniższej sekcji przedstawiono listę przykładowych zapytań.

Najlepsze procesory według liczby rdzeni

To zapytanie pokazuje pięć pierwszych procesorów według liczby rdzeni.

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

Urządzenia z niechronionymi dyskami

To zapytanie wyświetla listę urządzeń z niezaszyfrowanymi dyskami.

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

Urządzenia ARM64

To zapytanie wyświetla listę wszystkich urządzeń z procesorem ARM64.

Cpu
| where Architecture == "ARM64"

Liczba urządzeń według architektury procesora

To zapytanie udostępnia podsumowanie urządzeń według architektury procesora.

Cpu
| summarize DeviceCount = count() by Architecture

Najpopularniejsze urządzenia według pojemności baterii

To zapytanie wyświetla listę 10 urządzeń o najwyższej pojemności według pojemności w pełni naładowanej baterii.

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

Informacje o pamięci urządzeń

To zapytanie wyświetla listę urządzeń z pamięcią fizyczną i wirtualną w GB.

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

Liczba urządzeń według wersji systemu operacyjnego

To zapytanie zapewnia podsumowanie urządzeń według wersji systemu operacyjnego.

OsVersion| summarize DevicesCount = count() by OsVersion

Informacje o systemie BIOS urządzenia

To zapytanie wyświetla listę urządzeń na podstawie producenta BIOS-u.

BiosInfo| where Manufacturer contains "Microsoft"

Wyłączony moduł TPM

To zapytanie wyświetla listę urządzeń z wyłączonym modułem TPM.

Tpm | where Enabled != true

Obsługiwane operatory

Zapytanie urządzenia obsługuje tylko podzestaw operatorów obsługiwanych w języku zapytań Kusto (KQL). Obecnie obsługiwane są następujące operatory:

Operatory tabel

Za pomocą operatorów tabel można filtrować, podsumowywać i przekształcać strumienie danych. Obsługiwane są następujące operatory:

Operator tabeli Opis
count Zwraca tabelę z jednym rekordem zawierającym liczbę rekordów.
distinct Tworzy tabelę z różnymi kombinacjami podanych kolumn z tabeli wejściowej.
join Scala wiersze z dwóch tabel w celu utworzenia nowej tabeli opartej na zgodnych wartościach w określonych kolumnach. Obsługiwane są następujące typy sprzężeń:
- innerunique (domyślnie)
- inner
- leftouter
- rightouter
- fullouter
- leftsemi
- rightsemi
- leftanti
- rightanti

Instrukcje join obsługują opcjonalną on klauzulę. W scenariuszach zapytań dotyczących urządzeń zwykle używa on Device się sprzężenia tabel zawierających Device jednostkę. Typowa składnia tego argumentu join to: LeftTable | join [hints] (RightTable) on Conditions.

Ważne: Sprzężenia, które używają on Device.DeviceID , nie są już obsługiwane. Zapytania, które obecnie określają on Device.DeviceId , powinny zostać przełączone na using on Devicelub pominąć klauzulę on podczas sprzężenia Device w jednostce.

Aby uzyskać więcej informacji, zobacz Operator sprzężenia.
order by Sortuje wiersze tabeli wejściowej według jednej lub wielu kolumn.
project Zaznacza kolumny, które mają zostać uwzględnione, usunięte lub mają zostać usunięte lub mają zostać zmienione, a także wstawia nowe kolumny obliczane.
take Zwraca do określonej liczby wierszy.
top Zwraca pierwsze N rekordów posortowanych według określonych kolumn.
where Filtruje tabelę do podzbioru wierszy spełniających orzeczenie.
summarize Tworzy tabelę, która agreguje zawartość tabeli wejściowej.

Uwaga

Device jest typem jednostki i nie może być używany bezpośrednio w operatorach, które wymagają wartości skalarnych (takich jak distinct, summarizei order by). W przypadku tych operatorów użyj określonej właściwości skalarnej urządzenia (na przykład Device.SerialNumber lub Device.OSVersion).

Operatory skalarne

Operatory skalarne mogą służyć do wykonywania operacji na poszczególnych wartościach. Obsługiwane są następujące operatory:

Liczba operatorów Opis Przykład
== Równe 1 == 1, 'aBc' == 'AbC'
!= Różne 1 != 2, 'abc' != 'abcd'
< Mniej 1 < 2, 'abc' < 'DEF'
> Większy 2 > 1, 'xyz' > 'XYZ'
<= Mniejsze lub równe 1 <= 2, 'abc' <= 'abc'
>= Większa lub równa 2 >= 1, 'abc' >= 'ABC'
+ Dodać 2 + 1, now() + 1d
- Odejmowanie 2 - 1, now() - 1h
* Mnożenie 2 * 2
/ Podziel 2 / 1
% Modulo (Modulo) 2 % 1
like LHS zawiera dopasowanie dla RHS 'abc' like '%B%'
contains RHS występuje jako podsekwencja LHS 'abc' contains 'b'
!contains RHS nie występuje w LHS 'team' !contains 'i'
startswith RHS jest początkową podsekwencją LHS 'team' startswith 'tea'
!startswith RHS nie jest początkową podsekwencją LHS 'abc' !startswith 'bc'
endswith RHS jest podszeregiem zamykającym LHS 'abc' endswith 'bc'
!endswith RHS nie jest podsekwencją zamykającą LHS 'abc' !endswith 'a'
and True wtedy i tylko wtedy, gdy RHS i LHS mają wartość true (1 == 1) and (2 == 2)
or Prawda wtedy i tylko wtedy, gdy wartość RHS lub LHS ma wartość (1 == 1) or (1 == 2)

Funkcje agregacji

Do podsumowywania danych można używać funkcji agregacji. Obsługiwane są następujące funkcje:

Funkcja Opis
avg() Zwraca średnią wartości w grupie.
count() Zwraca liczbę rekordów na grupę podsumowania.
countif() Zwraca liczbę wierszy, dla których predykat ma wartość true
dcount() Zwraca liczbę różnych wartości w grupie.
max() Zwraca wartość maksymalną w grupie.
maxif() Zwraca maksymalną wartość w grupie, dla której predykat ma wartość true
min() Zwraca minimalną wartość w całej grupie.
minif() Zwraca minimalną wartość w grupie, dla której predykat ma wartość prawda.
percentile() Zwraca szacowaną wartość percentylu najbliższej rangi populacji zdefiniowanej przez wyr.
sum() Zwraca sumę wartości w grupie.
sumif() Zwraca sumę wyrów, dla której predykat ma wartość true

Funkcje skalarne

Funkcji skalarnych można używać do wykonywania operacji na poszczególnych wartościach. Obsługiwane są następujące funkcje:

Funkcja Opis
ago() Odejmuje podany przedział czasu od bieżącego czasu UTC.
bin() Zaokrągla wartości w dół do wielokrotności daty/godziny danego rozmiaru przedziału.
case() Wyznacza listę predykatów i zwraca pierwsze wyrażenie wyniku, którego orzeczenie jest spełnione.
datetime_add() Oblicza nową wartość daty/godziny na podstawie określonego składnika daty pomnożonego przez określoną wartość dodawaną do określonej daty/godziny. Ujemne wartości parametru kwoty nie są obsługiwane.
datetime_diff() Oblicza różnicę między dwiema wartościami daty/godziny.
iif() Oblicza pierwszy argument i zwraca wartość drugiego lub trzeciego argumentu w zależności od tego, czy orzeczenie ma wartość prawda (drugi), czy fałsz (trzeci).
indexof() Raportuje indeks liczony od zera dla pierwszego wystąpienia określonego ciągu w ciągu wejściowym.
isnotnull() Szacuje swój jedyny argument i zwraca wartość logiczną wskazującą, czy jego wynikiem jest wartość różna od null.
isnull() Szacuje jedyny argument i zwraca wartość logiczną wskazującą, czy argument ma wartość null.
now() Zwraca bieżący czas zegara UTC.
strcat() Łączy liczby od 1 do 64 argumentów.
strlen() Zwraca wyrażoną w znakach długość ciągu wejściowego.
substring() Wyodrębnia podciąg z ciągu źródłowego, zaczynając od pewnego indeksu do końca ciągu.
tostring() Konwertuje dane wejściowe na reprezentację ciągu.

Obsługiwane właściwości

Zapytanie urządzenia obsługuje następujące jednostki. Aby dowiedzieć się więcej o tym, jakie właściwości są obsługiwane dla każdej jednostki, zobacz Schemat platformy danych usługi 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

Jednostka urządzenia

Zapytanie urządzenia dla wielu urządzeń obsługuje połączoną jednostkę. Jednostka urządzenia może być używana ze wszystkimi innymi obsługiwanymi jednostkami. Jednostka urządzenia obsługuje następujące właściwości:

Właściwość Wpisać Opis
DeviceId Ciąg Unikatowy identyfikator wygenerowany przez usługę Intune w ramach rejestracji urządzenia.
EntraDeviceId Ciąg Unikatowy identyfikator wygenerowany przez usługę Microsoft Entra w ramach rejestracji lub dołączenia do usługi Microsoft Entra.
ManagementName Ciąg Łatwo rozpoznawalna nazwa urządzenia używana tylko w centrum administracyjnym usługi Intune. Zmiana tej nazwy nie powoduje zmiany nazwy urządzenia ani nazwy w Portal firmy.
DeviceName Ciąg Nazwa urządzenia
SerialNumber Ciąg Numer seryjny urządzenia
Manufacturer Ciąg Producent urządzenia
Model Ciąg Model urządzenia
OSDescription Ciąg Pełny opis wersji systemu operacyjnego
OSVersion Ciąg Wersja systemu operacyjnego na urządzeniu
EnrollmentProfileName Ciąg Nazwa profilu rejestracji przypisanego do urządzenia. Wartość domyślna jest pustym ciągiem wskazującym, że do urządzenia nie został przypisany żaden profil rejestracji.
EnrolledDateTime Data/godzina Data i godzina zarejestrowania urządzenia w usłudze Intune.
CertExpirationDateTime Data/godzina Zgłasza datę wygaśnięcia certyfikatu zarządzania urządzeniem.
EnrolledByUserId Ciąg Unikatowy identyfikator użytkownika, który zarejestrował urządzenie.
PrimaryUserId Ciąg Unikatowy identyfikator użytkownika skojarzonego z urządzeniem.
LastLoggedOnUserId Ciąg Unikatowy identyfikator użytkownika, który ostatnio zalogował się na urządzeniu.
InCompliancePeriodUntilDateTime Data/godzina Data/godzina wygaśnięcia okresu prolongaty zgodności urządzenia
DeviceCategoryId Ciąg Nazwa wyświetlana kategorii urządzenia. Wartością domyślną jest ciąg pusty.
LastSeenDateTime Ciąg Data i godzina ostatniego połączenia urządzenia z usługą Intune.
Ownership Ciąg Własność urządzenia.

Jednostka Device umożliwia odwoływanie się do informacji o urządzeniu skojarzonych z każdym wynikowym wierszem bez konieczności jawnego dołączania do tabeli urządzeń.

Domyślnie wyniki zapytania zawierają kolumnę Device jednostki, która zapewnia kontekst urządzenia dla każdego wiersza. Operatory, takie jak project, summarize, lub distinct mogą zmieniać, które kolumny są zwracane.

Device Reprezentuje urządzenie skojarzone z wierszem wynikowym i można się do niego odwoływać bezpośrednio jako do kolumny typu jednostki. Po wyświetleniu w wynikach Device zapytania jednostka jest wyświetlana przy użyciu przyjaznego identyfikatora, takiego jak nazwa urządzenia, aby ułatwić identyfikowanie urządzeń.

W zapytaniach można odwoływać się do właściwości Device encji za pomocą Device.[Property].

Poniższe zapytanie zwraca wszystkie DiskDrive informacje dotyczące urządzeń o określonym numerze seryjnym:

DiskDrive
| where Device.SerialNumber == "123"

Poniższe zapytanie projektuje Device jednostkę i Manufacturer właściwość z DiskDrive jednostki:


DiskDrive
| project Device, Manufacturer

Domyślnie wyniki zapytania zawierają jednostkę reprezentującą urządzenie skojarzone z każdym wierszem Device . Jednostka Device jest kolumną typu jednostki i nie jest niejawnie rozpoznawana jako określona właściwość skalarna. Podczas sortowania lub filtrowania wyników jawnie odwołuj się do właściwości urządzenia, której chcesz użyć. Na przykład to zapytanie porządkuje wyniki według nazwy urządzenia:


MemoryInfo
| order by Device.DeviceName

Podobnie, aby filtrować według nazwy urządzenia, odwołaj się bezpośrednio do DeviceName właściwości:


Cpu
| where Device.DeviceName == "Desktop123"

Znane ograniczenia

  • Używanie kolumn typu jednostka, takich jak Device w funkcjach agregujących, może spowodować wyświetlenie czerwonego podkreślenia w edytorze, ponieważ funkcje agregacji wymagają wartości skalarnych. Aby tego uniknąć, odwołaj się do określonej właściwości skalarnej jednostki. Przykład:

    Cpu
    | summarize max(CpuUsage) by Device.Manufacturer
    
  • Zapytania, które używają operatora join z parametrami And $left$right mogą wyświetlać czerwone podkreślenie w edytorze. Jednak zapytanie może nadal działać i zwracać wyniki zgodnie z oczekiwaniami.

  • Jedno zapytanie może zawierać maksymalnie trzy join operatory. Zapytania z większą liczbą sprzężeń kończą się niepowodzeniem.

  • Zapytanie może zawierać maksymalnie ~50 000 rekordów.

  • W ciągu każdej minuty można przesłać maksymalnie 10 zapytań. Dodatkowe zapytania w ciągu tej samej minuty kończą się niepowodzeniem.

  • Miesięcznie można przesłać maksymalnie 1000 zapytań.

  • Ujemne wartości amount parametru datetime_add() funkcji nie są obsługiwane.

  • Odwoływanie się do zmiennej wygenerowanej przez funkcję agregacji bez jawnego nazywania jej może spowodować niepowodzenie zapytania. Jawne nadanie nazwy zmiennej umożliwia pomyślne wykonanie zapytania. Przykład:

    • Zapytanie Device | summarize dcount(DeviceId) | order by dcount_DeviceId kończy się niepowodzeniem.
    • Zapytanie Device | summarize DCountDeviceIdRename = dcount(DeviceId) | order by DCountDeviceIdRename kończy się pomyślnie.
    • Pomoc NL2KQL dla encji "Lokalny agent AI" nie jest obecnie obsługiwana.