title: How do I return a custom object in Powershell that's formatted as a table?
body: <p>I'm pretty new to powershell, so I won't be surprised at all if I'm going about this all wrong. I'm trying to create a function that, when executed, prints results formatted as a table. Maybe it would even be possible to pipe those results to another function for further analysis.</p>
  
  <p>Here's what I have so far. This is a simple function that iterates through a list of paths and collects the name of the directory and the number of items in that directory, putting the data in a hashtable, and returning an array of hashtables:</p>
  
  <pre><code>function Check-Paths(){
    $paths = 
      "C:\code\DirA",
      "C:\code\DirB"
    $dirs = @()
    foreach ($path in $paths){
        if (Test-Path $path){
          $len = (ls -path $path).length
        }
        else{
          $len = 0
        }
        $dirName = ($path -split "\\")[-1]
        $dirInfo = @{DirName = $dirName; NumItems = $len}
        $dirs += $dirInfo
    }
    return $dirs
  
  }
  </code></pre>
  
  <p>That seems straightforward enough. However, when I go run the command, this is what I get:</p>
  
  <pre><code>PS &gt; Check-Paths
  
  Name                           Value
  ----                           -----
  DirName                        DirA
  NumItems                       0
  DirName                        DirB
  NumItems                       0
  </code></pre>
  
  <p>What I <em>want</em> is this:</p>
  
  <pre><code>DirName                       NumItems
  -------                       --------
  DirA                          0
  DirB                          0
  </code></pre>
  
  <p>I could just hack my function to use a <code>write</code> statement, but I think there must be a much better way to do this. Is there a way to get the data formatted as a table, even better if that can be such that it can be piped to another method?</p>