44 lines
1.6 KiB
PowerShell
44 lines
1.6 KiB
PowerShell
function Get-ApplicationInventory {
|
|
<#
|
|
.SYNOPSIS
|
|
Returns an OrderedDictionary that Represents the Application Inventory.
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
Param()
|
|
|
|
$logLead = (Get-LogLeadName);
|
|
$providerStopWatch = [System.Diagnostics.StopWatch]::StartNew()
|
|
|
|
$applicationDictionary = New-Object System.Collections.Specialized.OrderedDictionary
|
|
$applicationDetails = New-Object System.Collections.Specialized.OrderedDictionary
|
|
|
|
try {
|
|
|
|
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Reading App Uninstall Details"
|
|
$uninstallDetails = Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
|
|
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : App Uninstall Details Retrieved"
|
|
|
|
foreach ($app in $uninstallDetails) {
|
|
|
|
$appName = $app | Select-Object -ExpandProperty PSChildName
|
|
$applicationDetails[$appName] = New-Object System.Collections.Specialized.OrderedDictionary
|
|
$applicationDetails[$appName]["Name"] = $app.DisplayName
|
|
$applicationDetails[$appName]["Version"] = $app.DisplayVersion
|
|
$applicationDetails[$appName]["Publisher"] = $app.Publisher
|
|
$applicationDetails[$appName]["InstallDate"] = $app.InstallDate
|
|
$applicationDetails[$appName]["UninstallString"] = $app.UninstallString
|
|
}
|
|
}
|
|
catch {
|
|
|
|
$applicationDetails["Error"] = $_.Exception.ToString()
|
|
}
|
|
|
|
$applicationDictionary.Add("Software", $applicationDetails)
|
|
|
|
Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Provider Complete"
|
|
$providerStopWatch.Stop()
|
|
|
|
return $applicationDictionary
|
|
} |