I've attacked the problem in a slightly different manner than you have, but if I understood your problem, this should work:
$dir = Get-ChildItem | ? { $_.PSIsContainer -eq $true }
$result = @()
$dir | % {
$size = "{0:0.00}" -f ($_ | Get-ChildItem -Recurse | Measure-Object -Property length -Sum).sum
$newobj = New-Object System.Object
$newobj | Add-Member -MemberType NoteProperty -Name Name -Value $_.name
$newobj | Add-Member -MemberType NoteProperty -Name Path -Value $_.fullname
$newobj | Add-Member -MemberType NoteProperty -Name Size -Value $size
$result += $newobj
}
$result
You could also use $size = "{0:0.00}" -f (($_ | Get-ChildItem -Recurse | Measure-Object -Property length -Sum).sum / 1MB) or similar if you would rather have the size in MB (could also be GB or KB).