Public/get-AllegisUsername.ps1

function get-AllegisUsername {
    [cmdletbinding()]
    param(       
        [Parameter(Mandatory)] 
        [ValidateSet('firstInitial','fullName')]
        [string]
        $scheme='firstInitial',
        $firstname,
        $lastname,
        $maxlength=14, 
        $iteration)
        $firstname=$firstname -replace '[\W]', ''
        $lastname=$lastname -replace '[\W]', ''
        if ($scheme -eq 'firstInitial')
        {
            $firstlength=$iteration+1
            $overflow=$firstlength-$firstname.length
            if ($overflow -ge 1)
            {
                $username=$firstname.Substring(0,1) + $lastname
                $over=($username.Length + $overflow.ToString().length)-$maxlength
                if ($over -ge 1){
                    $username=$username.Substring(0,$maxlength-$overflow.ToString().length)
                }
                $username=$username+$overflow
            }else{
                $username=$firstname.Substring(0,$iteration+1) + $lastname
                $over=($username.Length)-$maxlength
                if ($over -ge 1){
                    $username=$username.Substring(0,$maxlength-$overflow.ToString().length)
                }
            }
        }elseif($scheme -eq 'fullName')
        {
            if ($iteration -eq 0){
                $username=$firstname +'.' + $lastname
                if ($username.Length -gt $maxlength){
                    $username=$username.Substring(0,$maxlength)
                }
            }else{
                $username=$firstname +'.' + $lastname
                if ($username.Length + $iteration.ToString().length -gt $maxlength){
                    $username=$username.Substring(0,$maxlength-$iteration.ToString().length)
                }
                $username=$username+$iteration.ToString()
            }
        }
        return $username
}