function New-MyPSADUser
{
    param (
        [parameter(
            Mandatory = $true
        )]
        [String]$Name,

        [parameter(
            Mandatory = $true
        )]
        [securestring]$AccountPassword,

        [parameter(
            Mandatory = $false
        )]
        [Switch]$IsAdministrativeAccount
    )

    DynamicParam
    {
        $attributeCollection = New-Object ` System.Collections.ObjectModel.Collection[System.Attribute]
        
        $parameterAttribut = New-Object `  System.Management.Automation.ParameterAttribute
        $parameterAttribut.Mandatory = $true
        $parameterAttribut.ParameterSetName = '__AllParameterSets'

        $attributeCollection.Add($parameterAttribut)

        $tierParam = New-Object ` System.Management.Automation.RuntimeDefinedParameter('Tier', [String], $attributeCollection)

        $paramDictionary = New-Object ` System.Management.Automation.RuntimeDefinedParameterDictionary
        $paramDictionary.Add('Tier', $tierParam)

        return $paramDictionary
    }

    # Instruction de création d'utilisateurs
}

function New-MyPSADUser {
    param (
        [parameter(
            Mandatory = $true
        )]
        [String]$Name,

        [parameter(
            Mandatory = $true
        )]
        [securestring]$AccountPassword,

        [parameter(
            Mandatory = $false
        )]
        [Switch]$IsAdministrativeAccount
    )

    DynamicParam {
        if ($IsAdministrativeAccount) 
        {
            # Création de la collection d'attributs
            $attributeCollection = New-Object `
                System.Collections.ObjectModel.Collection[System.Attribute]

            # Création de l'attribut [Parameter()]
            $parameterAttribut = New-Object `
                System.Management.Automation.ParameterAttribute
            $parameterAttribut.Mandatory = $true

            # Ajout de l'attribut [Parameter()] à la collection
            $attributeCollection.Add($parameterAttribut)

            # Création de l'attribut [ValidateSet()]
            $validateSateAttribut = New-Object System.Management.Automation.ValidateSetAttribute('T0','T1','T2','T3')

            # Ajout de l'attribut à la collection
            $attributeCollection.Add($validateSateAttribut)

            # Création du paramètre Tier
            $tierParam = New-Object `
                System.Management.Automation.RuntimeDefinedParameter('Tier', [String], $attributeCollection)

            # Création du dictionnaire de paramètre
            $paramDictionary = New-Object `
                System.Management.Automation.RuntimeDefinedParameterDictionary
            
                # Ajout du paramètre Tier au dictionnaire
            $paramDictionary.Add('Tier', $tierParam)

            return $paramDictionary
        }
    }

    # Instruction de création d'utilisateur
}
