Private/Get-MachineObject.ps1

function Get-MachineObject
{
    param
    (
        $MachineList
    )

    $machinesarray = New-Object System.Collections.ArrayList # ArrayList is faster
    #Refactored for speed (using collection initializer and removing variables, thanks to Steve Renard)
    $MachineList | Sort-Object -Unique | ForEach-Object -Process `
    {
        $machineobj = [PSCustomObject]@{
            shortname  = ($_ -split "\.", 2)[0]
            Domain =  ($_ -split "\.", 2)[1]
            hostname    = $_
        }
        [void] ($machinesArray.Add($machineobj))
    }
    return $machinesarray 
}