First, the object has to be created and output inside the ForEach loop. Otherwise you'll only get the most recent network adapter.
*Anything* you want on the object is going to have to be added inside the ForEach loop, before the object is output.
And that's one script (or function). You'd then run that script (or function), and pipe its output to ConvertTo-HTML. Piping $obj to ConvertTo-HTML is only giving you the last object created, regardless of what you output to the pipeline.