ExportedFunctions/Get-AnsibleUser.ps1

function Get-AnsibleUser
{
    [CmdletBinding()]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidGlobalVars", "Global:DefaultAnsibleTower")]
    Param (
        [Parameter(ValueFromPipelineByPropertyName=$true)]
        [int]$id,

        $AnsibleTower = $Global:DefaultAnsibleTower
    )
    process {
        if ($id) {
            $Return = Invoke-GetAnsibleInternalJsonResult -ItemType "users" -Id $id -AnsibleTower $AnsibleTower
        }
        Else {
            $Return = Invoke-GetAnsibleInternalJsonResult -ItemType "users" -AnsibleTower $AnsibleTower
        }


        if (!($Return))
        {
            #Nothing returned from the call
            Return
        }
        foreach ($ResultObject in $return)
        {
            # Shift back to json and let newtonsoft parse it to a strongly named object instead
            $JsonString = $ResultObject | ConvertTo-Json
            $AnsibleObject = $JsonParsers.ParseToUser($JsonString)
            $AnsibleObject.AnsibleTower = $AnsibleTower
            Write-Output $AnsibleObject
            $AnsibleObject = $null
        }
    }
}