How do I list all object property values?

Using the $ERROR object as an example, how would I iterate through each property, expand collections of properties, and get all values? I’d like to have the full output of an error and write it to a log file.
$ERROR|get-member shows 8 properties
$ERROR[0].CategoryInfo |Get-Member shows 5 properties
I’m assuming a recursive loop but have not been able to get it to work.

I don’t like how this is setup. You can’t tab complete to explore it. You can do:

$error | fl -force

$error | select *

This is the only time I’ve ever used fl -force.

Also try Format-Custom and experiment with the depth parameter.

Thanks for the replies. I’m looking to go further, expand properties and get more details.

For exmaple - If I look at the most recent $Error, $Error[0], I see 9 properties.

  PS > $Error[0].psobject.properties|Select-Object name
  Name                                                                                                                                                                                                 
  ----                                                                                                                                                                                                 
  PSMessageDetails                                                                                                                                                                                     
  Exception                                                                                                                                                                                            
  TargetObject                                                                                                                                                                                         
  CategoryInfo                                                                                                                                                                                         
  FullyQualifiedErrorId                                                                                                                                                                                
  ErrorDetails                                                                                                                                                                                         
  InvocationInfo                                                                                                                                                                                       
  ScriptStackTrace                                                                                                                                                                                     
  PipelineIterationInfo 

One of the properties listed is “Exception”.
If I look at properties of “Exception” I see 10 more properties.

  PS > $Error[0].Exception.psobject.properties|Select-Object name
  Name                                                                                                                                                                                                 
  ----  
  ErrorRecord
  StackTrace 
  WasThrownFromThrowStatement
  Message
  Data
  InnerException
  TargetSite
  HelpLink
  Source
  HResult

I am looking to loop through each property, and expand properties where there are more properties. Like “select-object -expand” but in a recursive loop so I can explore all properties of an object.

Thanks for the replies. I’m looking to go further, expand properties and get more details.

For example - If I look at the most recent $Error, $Error[0], I see 9 properties.

  PS >; $Error[0].psobject.properties|Select-Object name
  Name                                                                                                                                                                                                 
  ----                                                                                                                                                                                                 
  PSMessageDetails                                                                                                                                                                                     
  Exception                                                                                                                                                                                            
  TargetObject                                                                                                                                                                                         
  CategoryInfo                                                                                                                                                                                         
  FullyQualifiedErrorId                                                                                                                                                                                
  ErrorDetails                                                                                                                                                                                         
  InvocationInfo                                                                                                                                                                                       
  ScriptStackTrace                                                                                                                                                                                     
  PipelineIterationInfo 

One of the properties listed is “Exception”.
If I look at properties of “Exception” I see 10 more properties.

  PS > $Error[0].Exception.psobject.properties|Select-Object name
  Name                                                                                                                                                                                                 
  ----  
  ErrorRecord
  StackTrace 
  WasThrownFromThrowStatement
  Message
  Data
  InnerException
  TargetSite
  HelpLink
  Source
  HResult

I am looking to loop through each property, and expand properties where there are more properties. Like “select-object -expand” but in a recursive loop so I can explore all properties of an object.

Hmm, weird things happen with get-content. Bruce Payette mentioned in the 2 hr ps arch video that get-content returned more than just text:

get-content wmi.txt | fl * -force


PSPath       : C:\Users\admin\wmi.txt
PSParentPath : C:\Users\admin
PSChildName  : wmi.txt
PSDrive      : C
PSProvider   : Microsoft.PowerShell.Core\FileSystem
ReadCount    : 1
Length       : 0