How to: List Installed Extensions on Azure DevOps

Vinicius Moura
2 min readAug 19, 2021

This script and report list all Installed Extensions on the Azure DevOps organization

An original script is available on my GitHub repository. See below this script:

Let’s go understand each command used.

  1. PowerShell script will receive the following parameters:
  • $PAT = Personal Access token to connect on Azure DevOps;
  • $Organization = Organization URL to list all installed extensions on the Azure DevOps organization;
  • $Connstr = connection string to Azure SQL Database that stores the report information. To create this report, it’s necessary to create previously a Azure SQL Server and Database and run a script below:

2. Installed Extensions List = uses this REST API to list all installed extensions on the Azure DevOps organization.

$UriInstalledExtensions = "https://extmgmt.dev.azure.com/$($Organization)/_apis/extensionmanagement/installedextensions?api-version=6.0-preview.1"$InstalledExtensionsResult = Invoke-RestMethod -Uri $UriInstalledExtensions -Method get -Headers $AzureDevOpsAuthenicationHeader Foreach ($extension in $InstalledExtensionsResult.value)
{
Write-Host $extension.extensionName
}

3. After extract all Installed Extensions, this information is stored in a table in Azure SQL.

4. After insert information into a table, I connected this database on Power BI:

  • Publisher Name (1) = Filter report using Publisher Name field;
  • Installed Extensions Informations (2) = List all information about Installed Extensions (Extension Name, Publisher Name, and Version).

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Vinicius Moura
Vinicius Moura

Written by Vinicius Moura

Tech Solution Architect Manager na Accenture

Responses (1)

Write a response

There seem to be missing some steps; the object with the invoke, gives the complete page result. Instead you seem to have used the value, but missed the Content and the convertFrom-Json to be able to step through the array per value. Also, the…

--