Quickstart: Query examples for getting started with OSConfig and Azure IoT
The following are examples of Azure IoT Hub Queries to get useful information from OSConfig-enabled devices. These examples are reporting-only in nature, and can be used independently of whether you use OSConfig to set any configuration on the devices.
The examples invoke the Azure IoT Hub Queries feature via Azure CLI, and use Azure CLI's --output options to format the information as a table rather than raw JSON. You can adapt these examples to work with different tool chains and different device properties. For links to the full list of available properties, see: What can I provision and manage?.
Prerequisites
An Azure account with an active subscription. If your don't have an account already, you can create a trial account for free
An IoT Hub with OSConfig-enabled devices (or VMs as stand-ins for devices) connected. If you don't already have these, use these steps to create them: Create an OSConfig (with Azure IoT) lab environment in 5 minutes.
Open Azure Cloud Shell in a new tab: Azure Cloud Shell
- If you prefer to use your own bash environment rather than Cloud Shell, you will need to install Azure CLI and sign in to you Azure account
Ensure your Cloud Shell session is in bash mode (not PowerShell mode) for exact compatibility with the examples in this article
- If you prefer PowerShell, you can adapt the examples in this article by adjusting line breaks, character escaping, etc.
Run the following command to install the IoT extension for Azure CLI
az extension add --name azure-iot
Query examples
Example A. List the OSConfig enabled devices connected to your hub
Remember to replace <YOUR_HUB_NAME> with your IoT Hub's name.
az iot hub query -q \
"SELECT deviceId AS _deviceId_,connectionState FROM devices.modules where moduleId='osconfig'" \
--output table --hub-name <YOUR_HUB_NAME>
Example B. Report on the OS level host name and OS version details
Remember to replace <YOUR_HUB_NAME> with your IoT Hub's name.
For more information on available properties related to host name and OS information, see: Report and inventory hardware and OS information with Azure IoT and OSConfig, Working with host names using Azure IoT and OSConfig, and Manage host firewall with Azure IoT and OSConfig.
az iot hub query -q \
"SELECT deviceId AS _deviceId_,properties.reported.HostName.name AS hostName,properties.reported.DeviceInfo.osName,properties.reported.DeviceInfo.osVersion,properties.reported.DeviceInfo.kernelName,properties.reported.DeviceInfo.kernelRelease FROM devices.modules where moduleId='osconfig'" \
--output table --hub-name <YOUR_HUB_NAME>
Example C. Report on hardware properties like CPU type, RAM, Tpm presence
Remember to replace <YOUR_HUB_NAME> with your IoT Hub's name.
For more information on available properties related to device hardware, see: Report and inventory hardware and OS information with Azure IoT and OSConfig.
az iot hub query -q \
"SELECT deviceId AS _deviceId_,properties.reported.DeviceInfo.cpuType,properties.reported.DeviceInfo.cpuModel,properties.reported.DeviceInfo.totalMemory,properties.reported.Tpm.tpmStatus FROM devices.modules where moduleId='osconfig'" \
--output table --hub-name <YOUR_HUB_NAME>
Example D. Report on network properties like IP addresses, firewall status, and more
Remember to replace <YOUR_HUB_NAME> with your IoT Hub's name.
For more information on available properties, see Working with host names using Azure IoT and OSConfig, and Manage host firewall with Azure IoT and OSConfig, and Working with network adapter status, IP addresses, etc., using OSConfig and Azure IoT.
az iot hub query -q \
"SELECT deviceId AS _deviceId_,properties.reported.Networking.networkConfiguration.ipAddresses,properties.reported.Networking.networkConfiguration.dnsServers,properties.reported.Networking.networkConfiguration.connected,properties.reported.Firewall.firewallState FROM devices.modules where moduleId='osconfig'" \
--output table --hub-name <YOUR_HUB_NAME>
Next steps
For an overview of OSConfig scenarios and capabilities, see:
For specific practical examples, see: