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.

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:

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

}

That seems straightforward enough. However, when I go run the command, this is what I get:

PS > Check-Paths

Name                           Value
----                           -----
DirName                        DirA
NumItems                       0
DirName                        DirB
NumItems                       0

What I want is this:

DirName                       NumItems
-------                       --------
DirA                          0
DirB                          0

I could just hack my function to use a write 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?

Edit
Report