$paths = [String[]] @($env:path -split ";") 
$paths = $paths[0..($paths.Length-2)]
$paths = $paths.ForEach({"$_\*"})
Get-ChildItem -Path $paths -Include *.exe, *.msc `
    | Select -Property `
    @{Label="Type"; Expression={($_.Extension.toUpper() -replace "\`.","")}}, `
    @{Label="Command"; Expression={($_.Name -replace ".exe", "")}}, `
    @{Label="Description"; Expression={[System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileDescription}}, `
    @{Label="Version"; Expression={[System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion}}, `
    @{Label="Size|KB"; Expression={[math]::Round($_.Length / 1KB)}}, `
    @{Label="Location"; Expression={$_.Directory}} `
    | Sort-Object -Property `
    @{Expression="Location"; Descending=$False}, `
    @{Expression="Extension"; Descending=$True}, `
    @{Expression="Description"; Descending=$False} `
    | Export-Csv -Path "$env:temp\path-apps.csv" -NoType -Delimiter ";"
start "$env:temp\path-apps.csv"

Sources:

Related:

Tags:
Programm PowerShell - Learn PowerShell’s programming paradigms