M365_Remove_license.ps1

function M365-RemoveLicense {
    param(
        [string]$UserPrincipalName,
        [string]$LicenseSkuId
    )

    try {
        Connect-ExchangeOnline

        $user = Get-User -Identity $UserPrincipalName -ErrorAction Stop

        if ($user.Licenses -ne $null) {
            $licenseToRemove = $user.Licenses | Where-Object { $_.AccountSkuId -eq $LicenseSkuId }
            if (!$licenseToRemove) {
                Write-Host "User '$UserPrincipalName' does not have the license '$LicenseSkuId'."
                return
            }
        } else {
            Write-Host "User '$UserPrincipalName' does not have any licenses assigned."
            return
        }

        $licenseOptions = New-MsolLicenseOptions -AccountSkuId $LicenseSkuId
        Set-MsolUserLicense -UserPrincipalName $UserPrincipalName -RemoveLicenses $LicenseSkuId -LicenseOptions $licenseOptions

        Write-Host "License '$LicenseSkuId' has been removed from user '$UserPrincipalName'."
    } catch {
        Write-Host "Error: $_"
    }
}