Discover what software is installed on your Azure and non-Azure machines

In this tutorial, you learn how to discover what software is installed in your environment. You can collect and view inventory for software, files, Linux daemons, Windows Services, and Windows Registry keys on your computers. Tracking the configurations of your machines can help you pinpoint operational issues across your environment and better understand the state of your machines.

In this tutorial you learn how to:

  • Onboard a VM for Change tracking and Inventory
  • View installed software
  • Search inventory logs for installed software


To complete this tutorial, you need:

Log in to Azure

Log in to the Azure portal at

Enable Change tracking and Inventory

First you need to enable Change tracking and Inventory for your VM for this tutorial. If you've previously enabled the Change Tracking solution for your VM, this step is not necessary.

  1. On the left menu, select Virtual machines and select a VM from the list
  2. On the left menu, under the Operations section, click Inventory. The Enable Change tracking and Inventory page opens.

Inventory onboard configuration banner

To enable the solution, configure the location, Log analytics workspace, and Automation account to use and click Enable. If the fields are grayed out, that means another automation solution is enabled for the VM and the same workspace and Automation account must be used.

A Log Analytics workspace is used to collect data that is generated by features and services such as Inventory. The workspace provides a single location to review and analyze data from multiple sources.

Enabling the solution can take up to 15 minutes. During this time, you shouldn't close the browser window. After the solution is enabled, information about installed software and changes on the VM flows to Log Analytics. It can take between 30 minutes and 6 hours for the data to be available for analysis.

View installed software

Once the Change tracking and Inventory solution is enabled, you can view the results on the Inventory page.

From within your VM, select Inventory under OPERATIONS.

On the Inventory page, click on the Software tab.

On the Software tab, there is a table list the software that had been found. The software is grouped by software name and version.

The high-level details for each software record are viewable in the table. These details include the software name, version, publisher, last refreshed time (the most recent refresh time reported by a machine in the group), and machines (the count of machines with that software).

Software inventory

Click on a row to view the properties of the software record and the names of the machines with that software.

To look for a specific software or group of software, you can search in the text box directly above the software list. The filter allows you to search based off the software name, version, or publisher.

For instance, searching for "Contoso" returns all software with a name, publisher, or version containing "Contoso".

Search inventory logs for installed software

Inventory generates log data that is sent to Log Analytics. To search the logs by running queries, select Log Analytics at the top of the Inventory window.

Inventory data is stored under the type ConfigurationData. The following sample Log Analytics query returns the Publishers that contain "Microsoft" and the number of Software records (grouped by SoftwareName and Computer) for each Publisher.

| summarize arg_max(TimeGenerated, *) by SoftwareName, Computer
| where ConfigDataType == "Software"
| search Publisher:"Microsoft"
| summarize count() by Publisher

To learn more about running and searching log files in Log Analytics, see Azure Log Analytics.

Single machine inventory

To see the software inventory for a single machine, you can access Inventory from the Azure VM resource page or use Log Analytics to filter down to the corresponding machine. The following example Log Analytics query returns the list of software for a machine named ContosoVM.

| where ConfigDataType == "Software" 
| summarize arg_max(TimeGenerated, *) by SoftwareName, CurrentVersion
| where Computer =="ContosoVM"
| render table

Next steps

In this tutorial you learned how view software inventory such as how to:

  • Onboard a VM for Change tracking and Inventory
  • View installed software
  • Search inventory logs for installed software

Continue to the overview for the Change tracking and Inventory solution to learn more about it.