Skip to content

Set-UserLicense

Azure AD: Assigns licenses to a user

#Requires -Version 5.1
#Requires -Modules AzureAD

[CmdletBinding(DefaultParameterSetName = "ByNames")]
Param(
    [Parameter(Mandatory = $true, ParameterSetName = 'ByIds')]
    [Parameter(Mandatory = $true, ParameterSetName = 'ByNames')]
    [string]$UserObjectId,

    [Parameter(Mandatory = $true, ParameterSetName = 'ByIds')]
    [string]$LicenseSkuIds,

    [Parameter(Mandatory = $true, ParameterSetName = 'ByNames')]
    [string]$LicenseSkuNames
)

Process {
    try {
        $assignedLicenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
        $assignedLicenses.AddLicenses = New-Object 'System.Collections.Generic.List[Microsoft.Open.AzureAD.Model.AssignedLicense]'

        if ($PSCmdlet.ParameterSetName -eq 'ByNames') {
            foreach ($name in $LicenseSkuNames.Split(',')) {
                $license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
                $license.SkuId = (Get-AzureADSubscribedSku -ErrorAction Stop | Where-Object -Property SkuPartNumber -Value $name -EQ).SkuID
                $assignedLicenses.AddLicenses.Add($license)
            }
        }
        else {
            foreach ($id in $LicenseSkuIds.Split(',')) {
                $license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
                $license.SkuId = $id
                $assignedLicenses.AddLicenses.Add($license)
            }
        }

        $null = Set-AzureADUserLicense -ObjectId $UserObjectId -AssignedLicenses $assignedLicenses -ErrorAction Stop

        $result = Get-AzureADUserLicenseDetail -ObjectId $UserObjectId -ErrorAction Stop | Select-Object SkuId, SkuPartNumber
        if ($null -ne $result) {
            foreach ($item in $result) {
                $item | Add-Member -NotePropertyName Timestamp -NotePropertyValue (Get-Date -Format "yyyy-MM-dd HH:mm:ss") -PassThru -Force
            }
        }
    }
    catch { throw }
}

UPN or ObjectId of the user

Comma-separated list of license SKU GUIDs to assign

Comma-separated list of license SKU part numbers to assign

An interactive directory of PowerShell scripts.