Public/start-AllegisFIMTGSUsersPreAD.ps1

function start-AllegisFIMTGSUsersPreAD{
param(
    [boolean]$corpad=$true,
    [boolean]$asql=$false,
    [boolean]$snow=$false,
    [string]$snowOrg,
    [pscredential]$snowCred,
    [string]$sqlserver,
    [string]$sqltable,
    [pscredential]$sqlusername,
    [boolean]$interactive=$false,
    [string]$fimhost,
    [string]$fimpowershellmodule,
    [PSCredential]$fimcred,
    [PSCredential]$adcred,
    [string]$adforest
)
    $users=get-AllegisFIMfilter -filter "/Person[(PSTimeAndExpense = True) and (TGS_ExtUser = True) and (not(Domain = 'CORPORATE'))]" -fimservice $fimhost -fimcred $fimcred
    "found $($users.count) TGS users in FIM"
    import-module $fimpowershellmodule
    $psusers=$users | Convert-FimExportToPSObject
    foreach ($person in $psusers){
        if (!!$person.FirstName -and !!$person.LastName -and !$person.accountname -and !!$person.initialPassword)
        {
            $i=0
            do{
            $username=get-AllegisUsername -scheme firstInitial -firstname $person.FirstName -lastname $person.LastName -maxlength 14 -iteration $i
            "checking $username availability for $($person.firstname) $($person.lastname)"
            $i++
            }until(!(get-AllegisInUseUsername -username $username -corpAD $corpad -ASQL $asql -sqlserver $sqlserver -sqlusername $sqlusername.username -sqltable $sqltable -snow $snow -snowEnv $snowOrg -snowcred $snowCred -fim $true -fimservice $fimhost -fimcred $fimcred -azureAD $false -adforest $adforest -adcred $adcred))
            if ($interactive){$answer=Read-Host "set $username to $($person.firstname) $($person.LastName)?"}else{$answer='y'}
            if ($answer='y'){
                "setting $username to $($person.firstname) $($person.LastName)"
                set-AllegisFIMTGSUser -objectid $person.ObjectID.Replace('urn:uuid:','') -accountname $username -fimcred $fimcred -fimservice $fimhost
            }
        }
    }
}