Script Repository


Update report drop-down parameter with Microsoft 365 licenses

May 20, 2021
248

The script updates the specified drop-down list parameter with display names and SKU Part Numbers of Microsoft 365 licenses in all the registered tenants. To execute the script, create a scheduled task configured for the Domain-DNS object type with a managed domain in the Activity Scope.

Parameters:

  • $reportDN - Specifies the distinguished name (DN) of the report whose parameter will be updated. For information on how to get an object DN, see Get the DN of a directory object.
  • $parameterName - Specifies the name of the report parameter to update.
Edit Remove
PowerShell
$reportDN = "CN=My Report,CN=Reports,CN=Reports Root,CN=Configuration Objects,CN=Adaxes Configuration,CN=Adaxes" # TODO: modfy me
$parameterName = "License" # TODO: modfy me

# Find all Microsoft 365 Tenants
$configurationContainerPath = $Context.GetWellKnownContainerPath("CloudServicesO365")
$tenantSearcher = $Context.BindToObject($configurationContainerPath)
$tenantSearcher.SearchFilter = "(objectClass=adm-O365Tenant)"
$tenantSearcher.SearchScope = "ADS_SCOPE_SUBTREE"

try
{
    $tenantSearchResultIterator = $tenantSearcher.ExecuteSearch()
    $tenants = $tenantSearchResultIterator.FetchAll()
    
    $licenseNameToSkuPartNumber = @{}
    foreach ($tenantID in $tenants)
    {
        # Bind to the Tenant
        $tenant = $Context.BindToObject($tenantID.AdsPath)
        
        foreach ($sku in $tenant.Skus)
        {
            if (!$sku.Enabled)
            {
                continue
            }
            
            # Get license plan display name
            if (-not([System.String]::IsNullOrEmpty($sku.CustomDisplayName)))
            {
                $skuDisplayName = $sku.CustomDisplayName
            }
            else
            {
                $skuDisplayName = $sku.DefaultDisplayName
            }
            
            if ($licenseNameToSkuPartNumber.Contains($skuDisplayName))
            {
                continue
            }
            
            $licenseNameToSkuPartNumber.Add($skuDisplayName, $sku.SkuPartNumber)
        }
    }
}
finally
{
    if ($tenantSearchResultIterator){ $tenantSearchResultIterator.Dispose() }
}

# Get report parameters
$report = $Context.BindToObjectByDN($reportDN)
$configuration = $report.GetConfiguration()
$parameters = $configuration.Parameters

# Update the parameter values
foreach ($parameter in $parameters)
{
    if ($parameter.DisplayName -ne $parameterName)
    {
        continue
    }
    
    $parameterValues = @()
    foreach ($lcienseName in $licenseNameToSkuPartNumber.Keys)
    {        
        $parameterValue = $parameter.CreateValue()
        $parameterValue.DisplayName = $lcienseName
        $parameterValue.Value = $licenseNameToSkuPartNumber[$lcienseName]
        $parameterValues += $parameterValue
    }
    $parameter.Values = $parameterValues
}

# Save changes
$configuration.Parameters = $parameters
$report.SetConfiguration($configuration)

Comments ( 0 )
No results found.
Leave a comment

Related Scripts