internal/functions/Add-XdrCloudAppsTypeName.ps1

function Add-XdrCloudAppsTypeName {
    <#
    .SYNOPSIS
        Adds a Cloud Apps PSTypeName to objects.

    .DESCRIPTION
        Adds a PSTypeName to one or more Cloud Apps response objects so default formatting can apply.

    .PARAMETER InputObject
        Object to tag with the provided type name.

    .PARAMETER TypeName
        PSTypeName to insert at the front of the object's type name list.

    .EXAMPLE
        $items | Add-XdrCloudAppsTypeName -TypeName XdrCloudAppsActivity

        Tags activity objects for formatting.
    #>

    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline)]
        [AllowNull()]
        [object]$InputObject,

        [Parameter(Mandatory)]
        [string]$TypeName
    )

    process {
        if ($null -eq $InputObject) {
            return
        }

        if ($InputObject -is [System.Array]) {
            foreach ($item in $InputObject) {
                if ($null -ne $item -and $item.PSObject.TypeNames[0] -ne $TypeName) {
                    $item.PSObject.TypeNames.Insert(0, $TypeName)
                }
                $item
            }
            return
        }

        if ($InputObject.PSObject.TypeNames[0] -ne $TypeName) {
            $InputObject.PSObject.TypeNames.Insert(0, $TypeName)
        }
        $InputObject
    }
}