여러 장치에 대한 장치 쿼리

Microsoft Intune의 여러 장치에 대해 장치 쿼리를 사용하여 장치 인벤토리 데이터에서 KQL(Kusto 쿼리 언어) 쿼리를 실행하고 관리되는 플릿 전반에서 추세를 식별합니다. 이 문서에서는 필수 구성 요소, 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. 결과 탭에서 결과를 봅니다.
    • 여러 쿼리가 있는 경우 쿼리의 일부 또는 단일 쿼리를 실행하려면 실행할 쿼리를 강조 표시하고 실행을 선택합니다. 강조 표시된 쿼리만 실행됩니다.

왼쪽의 보기를 확장하여 쿼리할 수 있는 사용 가능한 모든 속성을 볼 수 있습니다. 속성을 선택하여 쿼리에 삽입합니다. 왼쪽 창과 쿼리 창의 크기를 조정하여 레이아웃을 조정할 수도 있습니다.

KQL(Kusto 쿼리 언어)에 대한 자세한 내용은 Kusto 쿼리 언어에 대한 자세한 정보를 참조하세요.

Intune의 Copilot을 사용하여 자연어 요청을 사용하여 디바이스 쿼리에 대한 KQL 쿼리를 생성합니다. 자세한 내용은 디바이스 쿼리에서 Copilot을 사용하여 쿼리를 참조하세요.

쿼리 결과 및 작업

쿼리를 실행하면 결과 탭에 결과가 표시됩니다. 다음과 같은 여러 가지 방법으로 결과와 상호 작용할 수 있습니다.

  • 쿼리가 반환하는 항목이 50개 이하인 경우 결과의 모든 행을 검색하고 열 머리글을 사용하여 필터를 적용할 수 있습니다.
  • 그룹에 모든 항목을 추가를 선택하여 쿼리 결과에서 직접 Microsoft Entra 보안 그룹을 만듭니다. 이 작업을 수행하면 Microsoft Entra 조건부 액세스 정책 또는 Microsoft Intune 정책을 사용하여 특정 디바이스를 대상으로 지정할 수 있습니다.
  • 내보내기를 선택하여 결과를 .csv 파일에 저장합니다. 모든 열 또는 선택한 열만 내보낼 수 있습니다. 최대 50,000 개의 결과를 파일로 내보낼 수 있습니다.

샘플 쿼리

시작하는 데 도움이 되도록 이 섹션에서는 몇 가지 샘플 쿼리를 제공합니다. 샘플 쿼리에 액세스하려면 시작 페이지 아래의 예제 쿼리 섹션을 확장하고 쿼리 창에 추가할 쿼리를 선택합니다. 다음 섹션에서는 샘플 쿼리 목록을 보여 줍니다.

코어 수별 상위 프로세서

이 쿼리는 코어 수별로 상위 5개 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

지원되는 연산자

디바이스 쿼리는 KQL(Kusto 쿼리 언어)에서 지원되는 연산자의 하위 집합만 지원합니다. 현재 지원되는 연산자는 다음과 같습니다.

테이블 연산자

테이블 연산자는 데이터 스트림을 필터링, 요약 및 변환하는 데 사용할 수 있습니다. 다음 연산자가 지원됩니다.

테이블 연산자 설명
count 레코드 수를 포함하는 단일 레코드가 있는 테이블을 반환합니다.
distinct 입력 테이블에서 제공된 열의 고유한 조합으로 테이블을 생성합니다.
join 두 테이블의 행을 병합하여 지정된 열에서 일치하는 값을 기반으로 새 테이블을 만듭니다. 다음과 같은 조인 유형이 지원됩니다.
- innerunique (기본값)
- inner
- leftouter
- rightouter
- fullouter
- leftsemi
- rightsemi
- leftanti
- rightanti

조인 문은 선택적 on 절을 지원합니다. 장치 쿼리 시나리오에서는 일반적으로 엔터티를 포함하는 Device 테이블을 조인할 때 사용합니다on Device. is의 일반적인 구문 join : LeftTable | join [hints] (RightTable) on Conditions.

중요: 사용하는 on Device.DeviceID 조인은 더 이상 지원되지 않습니다. 현재 지정 on Device.DeviceId 하는 쿼리는 엔터티에서 Device 조인할 때 , 사용on Device으로 전환하거나 절을 on 생략해야 합니다.

자세한 내용은 조인 연산자를 참조하세요.
order by 하나 이상의 열을 기준으로 입력 테이블의 행을 정렬합니다.
project 포함, 이름 바꾸기 또는 삭제할 열을 선택하고 새 계산 열을 삽입합니다.
take 지정된 행 수까지 반환합니다.
top 지정된 열을 기준으로 정렬된 처음 N개의 레코드를 반환합니다.
where 조건자를 만족하는 행의 하위 집합으로 테이블을 필터링합니다.
summarize 입력 테이블의 내용을 집계하는 테이블을 생성합니다.

참고

Device 는 엔터티 형식이며 스칼라 값(예: distinct, summarize, 및 order by)이 필요한 연산자에서 직접 사용할 수 없습니다. 이러한 연산자의 경우 장치의 특정 스칼라 속성(예: Device.SerialNumber 또는 Device.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 RHS는 LHS에서 발생하지 않습니다. '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() 조건자가 true로 평가되는 행 수를 반환합니다.
dcount() 그룹에 있는 고유 값의 개수를 반환합니다.
max() 그룹 전체의 최대값을 반환합니다.
maxif() 조건자가 true로 평가되는 그룹에서 최대값을 반환합니다.
min() 그룹 전체의 최소값을 반환합니다.
minif() 조건자가 true로 평가되는 그룹에서 최소값을 반환합니다.
percentile() Expr로 정의하는 모집단의 지정된 가장 가까운 순위 백분위수에 대한 추정치를 반환합니다.
sum() 그룹 전체의 값 합계를 반환합니다.
sumif() 조건자가 true로 평가되는 Expr의 합계를 반환합니다.

스칼라 함수

스칼라 함수를 사용하여 개별 값에 대한 연산을 수행할 수 있습니다. 지원되는 함수는 다음과 같습니다.

함수 설명
ago() 현재 UTC 시계 시간에서 지정된 시간 범위를 뺍니다.
bin() 지정된 bin 크기의 날짜/시간 배수로 값을 내림합니다.
case() 조건자 목록을 계산하고 조건자가 충족되는 첫 번째 결과 식을 반환합니다.
datetime_add() 지정된 날짜 부분에 지정된 양을 곱한 후 지정된 날짜/시간에 더한 새 날짜/시간을 계산합니다. amount 매개 변수에 대한 음수 값은 지원되지 않습니다.
datetime_diff() 두 날짜/시간 값의 차이를 계산합니다.
iif() 첫 번째 인수를 계산하고 조건자가 true(두 번째) 또는 false(세 번째)인지 여부에 따라 두 번째 또는 세 번째 인수의 값을 반환합니다.
indexof() 입력 문자열 내에서 지정된 문자열의 첫 번째 발생에 대한 0부터 시작하는 인덱스를 보고합니다.
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
  • Local AI Agent
  • Logical Drive
  • Memory Info
  • Network Adapter
  • Os Version
  • Shared iPad
  • Sim Info
  • System Enclosure
  • SystemInfo
  • Time
  • Tpm
  • Video Controller
  • Windows Qfe

장치 엔터티

여러 디바이스에 대한 디바이스 쿼리가 연결된 엔터티를 지원합니다. 장치 엔터티는 지원되는 다른 모든 엔터티와 함께 사용할 수 있습니다. 장치 엔터티는 다음 속성을 지원합니다.

속성 유형 설명
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 날짜/시간 Intune에서 디바이스를 등록한 날짜 및 시간입니다.
CertExpirationDateTime 날짜/시간 장치 관리 인증서 만료 날짜를 보고합니다.
EnrolledByUserId String 장치를 등록한 사용자의 고유 식별자
PrimaryUserId String 장치와 연결된 사용자의 고유 식별자입니다.
LastLoggedOnUserId String 장치에 마지막으로 로그온한 사용자의 고유 식별자입니다.
InCompliancePeriodUntilDateTime 날짜/시간 장치 규정 준수 유예 기간이 만료되는 날짜/시간
DeviceCategoryId String 장치 범주 표시 이름입니다. 기본값은 빈 문자열입니다.
LastSeenDateTime String Intune에 디바이스를 마지막으로 연결한 날짜 및 시간입니다.
Ownership String 장치의 소유권입니다.

엔터티를 Device 사용하면 장치 테이블에 명시적으로 조인할 필요 없이 각 결과 행과 연결된 장치 정보를 참조할 수 있습니다.

기본적으로 쿼리 결과에는 각 행에 대한 장치 컨텍스트를 제공하는 엔터티 열이 포함됩니다 Device . , , summarize등의 distinct 연산project자는 어떤 열이 반환되는지 변경할 수 있습니다.

Device 결과 행과 연결된 장치를 나타내며 엔터티 형식 열로 직접 참조할 수 있습니다. 쿼리 결과 Device 에 표시될 때 엔터티는 장치를 더 쉽게 식별할 수 있도록 장치 이름과 같은 친숙한 식별자를 사용하여 표시됩니다.

다음을 사용하여 Device.[Property]쿼리에서 엔터티의 Device 속성을 참조할 수 있습니다.

다음 쿼리는 특정 일련 번호가 있는 장치에 대한 모든 DiskDrive 정보를 반환합니다.

DiskDrive
| where Device.SerialNumber == "123"

다음 쿼리는 엔터티 ManufacturerDevice 엔터티의 속성을 투영합니다.DiskDrive


DiskDrive
| project Device, Manufacturer

기본적으로 쿼리 결과에는 각 행과 연결된 장치를 나타내는 엔터티가 포함됩니다 Device . Device 엔터티는 엔터티 형식 열이며 특정 스칼라 속성으로 암시적으로 resolve 되지 않습니다. 결과를 정렬하거나 필터링할 때 사용하려는 장치 속성을 명시적으로 참조합니다. 예를 들어 이 쿼리는 장치 이름별로 결과를 정렬합니다.


MemoryInfo
| order by Device.DeviceName

마찬가지로 장치 이름으로 필터링하려면 속성을 직접 참조 DeviceName 합니다.


Cpu
| where Device.DeviceName == "Desktop123"

알려진 제한

  • 집계 함수와 같은 Device 엔터티 형식 열을 사용하면 집계 함수에 스칼라 값이 필요하기 때문에 편집기에 빨간색 밑줄이 표시될 수 있습니다. 이를 방지하려면 엔터티의 특정 스칼라 속성을 참조합니다. 예시:

    Cpu
    | summarize max(CpuUsage) by Device.Manufacturer
    
  • and $right 매개 변수가 join 있는 $left 연산자를 사용하는 쿼리는 편집기에 빨간색 밑줄이 표시될 수 있습니다. 그러나 쿼리는 여전히 예상대로 실행되고 결과를 반환할 수 있습니다.

  • 단일 쿼리에 최대 3 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 가 성공합니다.
    • "로컬 AI 에이전트" 엔터티에 대한 NL2KQL 지원은 현재 지원되지 않습니다.