public/Get-BrowserProfiles.ps1

function Get-BrowserProfile {
    <#
    .SYNOPSIS
        Query Browser Profiles
    .DESCRIPTION
        Query Browser profiles, returning ID, Name and UserName. For current user or all users
    .PARAMETER Browser
        Optional. Browser app to target for query (if installed)
        * Default = Get default browser from registry query
        * Chrome
        * Edge
        * Brave
        * Firefox
    .PARAMETER AllUsers
        Query all users on the computer
    .EXAMPLE
        Get-BrowserProfile
    .EXAMPLE
        Get-BrowserProfile -Browser Edge
    .EXAMPLE
        Get-BrowserProfile -Browser Chrome -AllUsers
    .LINK
        https://github.com/Skatterbrainz/helium/blob/master/docs/Get-BrowserProfile.md
    #>

    [CmdletBinding()]
    param (
        [parameter(Mandatory=$False)][string][ValidateSet('Chrome','Edge','Brave','Firefox','Default')]$Browser = 'Default',
        [parameter(Mandatory=$False)][switch]$AllUsers
    )
    if (!$AllUsers) {
        if ($Browser -eq 'Default') {
            $app = Get-DefaultBrowser
        } else {
            $app = $Browser
        }
        switch ($app) {
            'Chrome' {
                $profilePath = "$env:LOCALAPPDATA\Google\Chrome\User Data"
                [array]$profileFolders = Get-ChildItem -Path $profilePath -Directory -Filter "Profile*" | select-object Name,FullName
            }
            'Brave' {
                $profilePath = "$env:LOCALAPPDATA\BraveSoftware\Brave-Browser\User Data"
                [array]$profileFolders = Get-ChildItem -Path $profilePath -Directory -Filter "Profile*" | select-object Name,FullName
            }
            'Edge' {
                $profilePath = "$env:LOCALAPPDATA\Microsoft\Edge\User Data"
                [array]$profileFolders = Get-ChildItem -Path $profilePath -Directory -Filter "Profile*" | select-object Name,FullName
            }
            'Firefox' {
                $profilePath = "$env:APPDATA\Mozilla\Firefox\Profiles"
                [array]$profileFolders = Get-ChildItem -Path $profilePath -Directory | select-object Name,FullName
            }
        }
        if ($app -ne 'Firefox') {
            foreach ($folder in $profileFolders) {
                [string]$pref = Join-Path $folder.FullName "Preferences"
                if (Test-Path $pref) {
                    $prefdata = Get-Content $pref -Raw | ConvertFrom-Json
                    $name = $prefdata.profile.name
                    [pscustomobject]@{
                        UserName    = $env:USERNAME
                        ProfileID   = $folder.Name
                        ProfileName = $name
                        Browser     = $app
                    }
                }
            }
        } else {
            foreach ($folder in $profileFolders) {
                $prefdata = $folder.Name.Split('.')
                $name = $prefdata[1]
                [pscustomobject]@{
                    UserName    = $env:USERNAME
                    ProfileID   = $folder.Name
                    ProfileName = $name
                    Browser     = $app
                }
            }
        }
    } else {
        $exclude = @('AppData','Public')
        if ($Browser -eq 'Default') {
            $app = Get-DefaultBrowser
        } else {
            $app = $Browser
        }
        switch ($app) {
            'Chrome' {
                $profileSub = "AppData\Google\Chrome\User Data"
            }
            'Brave' {
                $profileSub = "AppData\Local\BraveSoftware\Brave-Browser\User Data"
            }
            'Edge' {
                $profileSub = "AppData\Local\Microsoft\Edge\User Data"
            }
            'Firefox' {
                $profileSub = 'AppData\Local\Mozilla\Firefox\Profiles'
            }
        }
        [array]$userprofiles = Get-ChildItem -Path "c:\users" -Directory | Where-Object {$_.name -notin $exclude} | Select-Object Name,FullName
        Write-Verbose "$($userprofiles.Count) user profiles found"
        foreach ($userpath in $userprofiles) {
            $profilePath = Join-Path $($userpath.FullName) $profileSub
            Write-Verbose "reading: $profilePath"
            if ($app -ne 'Firefox') {
                [array]$profileFolders = Get-ChildItem -Path $profilePath -Directory -Filter "Profile*" | select-object Name,FullName
                foreach ($folder in $profileFolders) {
                    [string]$pref = Join-Path $folder.FullName "Preferences"
                    if (Test-Path $pref) {
                        $prefdata = Get-Content $pref -Raw | ConvertFrom-Json
                        $name = $prefdata.profile.name
                        [pscustomobject]@{
                            UserName    = $userpath.Name
                            ProfileID   = $folder.Name
                            ProfileName = $name
                            Browser     = $app
                        }
                    }
                }
            } else {
                [array]$profileFolders = Get-ChildItem -Path $profilePath -Directory | select-object Name,FullName
                foreach ($folder in $profileFolders) {
                    $prefdata = $folder.Name.Split('.')
                    $name = $prefdata[1]
                    [pscustomobject]@{
                        UserName    = $env:USERNAME
                        ProfileID   = $folder.Name
                        ProfileName = $name
                        Browser     = $app
                    }
                }
            }
        }
    }
}