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
|
||
|
}
|