PowerShell cmdlets are capable of allowing administrators to work with most tasks. However, there are some situations where the returned objects don't satisfy the administrative needs of a certain script. In such situations, we may need to create our own custom objects based on the available .NET classes, or at least, add a custom property to the object.
While a string is an object of the System.String type, the Get-Process cmdlet returns an object of type System.Diagnostics.Process, Get-ChildItem returns an object with the type System.IO.FileInfo, and a custom-created object has the object type PSCustomObject.