I need to list the binaries installed to a folder and below for the software I’m testing.  I can do that with Get-Command on each one, but this allows me to do it recursively and automagically. 

function Get-LocalBinaries { 

param(
[string[]]
$hostname = @(),
[string]
$logPath = $null,
[
switch]$help
);




if ($help) {
@
"
Get-LocalBinaries [-hostname <string[,string...]>] [-help]

Gets all file paths and version numbers for all .exes and .dlls under the specified 
path for the specified host(s), saves as file <hostname>.csv in folder '$env:userprofile'
(%userprofile% in cmd.exe).
-hostname <string[,string...]>] 
List of hostname(s) to scan.
-path <string> 
Folder to scan (recursively).
-help 
Show this text and return nothing.
"
@ | more;
return;
}
 if (!$path) { 
Write-Warning "-path not specified, required. Returning.";
return;
}
$path = $path -replace ':', '$'; 
foreach ($myHostname in $hostname) {
if (!$myHostname) { continue; }
Write-Progress 'Scanning' $myHostname;
$logPath = "$home\$myHostname.csv";
$myPath = \\$myHostname\$path;
if (!(Test-Path $myPath)) {
Write-Warning "Unable to access $myPath. Skipping.";
continue;
}
dir -path $myPath -Recurse -Include *.exe, *.dll | select-object -property @{ 
name
= 'hostname'; expression = { $myHostname }
}, @{
name
= 'path'; expression = { $_.fullname -replace "\\\\$myHostname\\d\$", "d:" }
}, @{
name
= 'version'; expression = { (get-command $_).fileversioninfo.productversion }
}
| export-csv -NoTypeInfo $logPath;
Write-Verbose -Verbose "$logPath created";
}
}
 
Pardon the spacing - trying to figure out a way to nicely post text in this blog is challenging.