Get-ChildItem with Recurse

Need to gather stats from a file path and dump to a CSV:
Path, LastWriteTime, Count, GBSize, Folder Depth

using Params like this:
$params = @{
‘Path’=$SourcePath
‘Force’=$true
‘Recurse’=$true
‘Directory’=$true
‘ErrorAction’=‘SilentlyContinue’
‘Exclude’=‘dfsrprivate’
} #params

followed by this:
$currentFolder = @(Get-childItem @params)
$currentFolder.ForEach({ …

I can gather this on a first iteration with just the folders:
FullName LastWriteTime


Is there a way to pipeline each folder to get its childitems for the file count and byte sum?
So far, I have only been successful with two different scans of the folder tree which seems inefficient. One scan (i.e., ForEach) gets the folder path and the LastWriteTime, the other scan gets the file count and sum for each folder (another Get-ChildItem call with -File instead of -Directory in the params)

Collecting the results in an array then converting to CSV also seems inefficient:
#save results to array
$Results += [pscustomobject]@{
Path = $currentFolder.FullName
Count = $ItemCount
GBSize = $GBSize
FolderDepth = $FoldersDeep
LastWriteTime = $currentFolder.LastWriteTime
}

Would love to write to the CSV directly with Add-Content but the data is gathered at different times so it would not be in a single row.

Is there a better way?

full script