M365_Add_License.ps1

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

    try {
        Connect-ExchangeOnline

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

        if ($user.Licenses -ne $null) {
            $existingLicense = $user.Licenses | Where-Object { $_.AccountSkuId -eq $LicenseSkuId }
            if ($existingLicense) {
                Write-Host "User '$UserPrincipalName' already has the license '$LicenseSkuId'."
                return
            }
        }

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

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