Private/PowerTreeRegistry/Filtering/Get-ProcessedRegistryValues.ps1
function Get-ProcessedRegistryValues { param ( [Microsoft.Win32.RegistryKey]$RegKey, [hashtable]$RegistryTypeMap, [bool]$UseRegistryDataTypes, [string[]]$Include, [string[]]$Exclude, [bool]$HasValueFilters ) $valueItems = @() foreach ($valueName in $RegKey.GetValueNames()) { $valueType = $RegKey.GetValueKind($valueName) $displayName = if ($valueName -eq "") { "(Default)" } else { $valueName } $value = $RegKey.GetValue($valueName) # Apply include/exclude filters only if needed if ($HasValueFilters) { $shouldInclude = ($Include.Count -eq 0) -or (Test-FilterMatch -ItemName $displayName -Patterns $Include) $shouldExclude = Test-FilterMatch -ItemName $displayName -Patterns $Exclude if (-not $shouldInclude -or $shouldExclude) { continue } } # Choose between PowerShell type or Registry type $displayType = if ($UseRegistryDataTypes) { $RegistryTypeMap[$valueType.ToString()] } else { $valueType.ToString() } $valueItems += [PSCustomObject]@{ TypeName = $displayType Name = $displayName Value = $value IsLast = $false } } return $valueItems } |