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?