Private/Get-MachineObject.ps1

function Get-MachineObject
{
    param
    (
        $MachineList
    )

    $machinesarray = New-Object System.Collections.ArrayList # ArrayList is faster
    $MachineList | Sort-Object -Unique | ForEach-Object -Process `
    {
        $shortname = ($_ -split "\.", 2)[0]
        $DomainName = ($_ -split "\.", 2)[1]
        $machine = $_
    
        $machineobj = New-Object psobject
        $machineobj | Add-Member -MemberType NoteProperty -Name shortname  -Value $shortname  -Force
        $machineobj | Add-Member -MemberType NoteProperty -Name Domain  -Value $DomainName -Force 
        $machineobj | Add-Member -MemberType NoteProperty -Name hostname  -Value $machine -Force
        [void] ($machinesArray.Add($machineobj))
    }

    return $machinesarray 
}