ContainerHandling/Get-LatestAlLanguageExtensionUrl.ps1

<#
 .Synopsis
  Get the URL of the latest AL Language Extension from VS Code Marketplace
 .Description
  Get the URL of the latest AL Language Extension from VS Code Marketplace
 .Parameter containerOrImageName
  Name of the container or container image for which you want to get the legal link
 .Example
  New-NavContainer ... -vsixFile (Get-LatestAlLanguageExtensionUrl) ...
 .Example
  Download-File -SourceUrl (Get-LatestAlLanguageExtensionUrl) -DestinationFile "c:\temp\al.vsix"
#>

function Get-LatestAlLanguageExtensionUrl {
    $listing = Invoke-WebRequest -Method POST -UseBasicParsing `
                      -Uri https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery?api-version=3.0-preview.1 `
                      -Body '{"filters":[{"criteria":[{"filterType":8,"value":"Microsoft.VisualStudio.Code"},{"filterType":12,"value":"4096"},{"filterType":7,"value":"ms-dynamics-smb.al"}],"pageNumber":1,"pageSize":50,"sortBy":0,"sortOrder":0}],"assetTypes":[],"flags":914}' `
                      -ContentType application/json | ConvertFrom-Json 
     
    $vsixUrl = $listing.results | Select-Object -First 1 -ExpandProperty extensions `
                         | Select-Object -First 1 -ExpandProperty versions `
                         | Select-Object -First 1 -ExpandProperty files `
                         | Where-Object { $_.assetType -eq "Microsoft.VisualStudio.Services.VSIXPackage"} `
                         | Select-Object -ExpandProperty source
     
    if ($vsixUrl) {
        $vsixUrl
    }
    else {
        throw "Unable to locate latest AL Language Extension from the VS Code Marketplace"
    }
}
Export-ModuleMember -Function Get-LatestAlLanguageExtensionUrl