In PowerShell v3 the "Length" property was added to ALL objects. This was wrong. It should have been a new PSCount or PSLength property, because the way it is now it gets in the way of all sorts of scenarios where objects are in heterogeneous collections of objects where some have Length and others don't, and you want to use that property. For instance, when we have folders and files in a single object array or pipeline stream, which happens all the time.
It also causes very weird behavior where the simplified syntax for ForEach-Object, and Where-Object produce different results than the normal syntax.
I understand that the intent was to provide a .Length = 1 that could be tested to see how many items were returned from a command, but the choice of "Length" was wrong, and it really needs to be removed because it causes more harm than good.
"Count" is somewhat more appropriate, but "PSCount" would have been much better.