Fleet logo
Menu An icon indicating that interacting with this button will open the navigation menu.
Fleet logo An 'X' icon indicating that this can be interacted with to close the navigation menu.
Multi platform
Device management   (+ MDM) Orchestration   (+ monitoring) Software management   (+ CVEs) Integrations

Docs
Stories
News Ask around Share your story COMPANY
The handbook What people are saying

Pricing Schedule a demo
Multi platform
Device management + MDM Orchestration + monitoring Software management + CVEs, usage, app library Integrations
Docs
Stories
News Ask around Schedule a demo Share your story COMPANY The handbook What people are saying
Pricing Try it yourself
Queries/
Get installed Chrome Extensions

Get installed Chrome Extensions

Contributor's GitHub profile picture

Zach Wasserman

List installed Chrome Extensions for all users.

To learn more about queries, check this guide.

Query PowerShellNEW BashNEW
SELECT * FROM users CROSS JOIN chrome_extensions USING (uid);
$users = Get-CimInstance -ClassName Win32_UserAccount -Filter "LocalAccount=True"
$profileList = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | ForEach-Object {
    $sid = $_.PSChildName
    try {
        $profilePath = (Get-ItemProperty $_.PSPath).ProfileImagePath
    }
    catch {
        $profilePath = $null
    }
    [PSCustomObject]@{
        SID = $sid
        ProfilePath = $profilePath
    }
}

$results = @()

foreach ($user in $users) {
    # Match user with profile path using SID as uid
    $profile = $profileList | Where-Object { $_.SID -eq $user.SID }
    if (-not $profile -or -not $profile.ProfilePath) {
        continue
    }

    # Construct the expected Chrome extensions directory path
    $chromeExtensionsDir = Join-Path $profile.ProfilePath "AppData\Local\Google\Chrome\User Data\Default\Extensions"
    if (-not (Test-Path $chromeExtensionsDir)) {
        continue
    }

    # Get each extension folder (each folder name is the extension id)
    Get-ChildItem -Path $chromeExtensionsDir -Directory | ForEach-Object {
        $extensionID = $_.Name
        # Each extension folder may contain one or more version folders
        Get-ChildItem -Path $_.FullName -Directory -ErrorAction SilentlyContinue | ForEach-Object {
            $versionFolder = $_
            $manifestPath = Join-Path $versionFolder.FullName "manifest.json"
            if (Test-Path $manifestPath) {
                try {
                    $raw = Get-Content -Path $manifestPath -Raw
                    $manifest = $raw | ConvertFrom-Json
                }
                catch {
                    $manifest = $null
                }
            }
            else {
                $manifest = $null
            }
            $extensionName = $null
            $extensionVersion = $null
            if ($manifest) {
                $extensionName = $manifest.name
                $extensionVersion = $manifest.version
            }
            else {
                $extensionVersion = $versionFolder.Name
            }
            $results += [PSCustomObject]@{
                uid               = $user.SID
                username          = $user.Name
                extension_id      = $extensionID
                extension_name    = $extensionName
                extension_version = $extensionVersion
                extension_path    = $versionFolder.FullName
            }
        }
    }
}

$results | Format-Table -AutoSize
Write-Output $results
printf 'uid,username,extension_id,version\n'; for d in /Users/*; do [ -d "$d" ] && user=$(basename "$d") && uid=$(id -u "$user" 2>/dev/null) && ext_path="$d/Library/Application Support/Google/Chrome/Default/Extensions" && [ -d "$ext_path" ] && for ext in "$ext_path"/*; do ext_id=$(basename "$ext"); for ver in "$ext"/*; do version=$(basename "$ver"); printf "%s,%s,%s,%s\n" "$uid" "$user" "$ext_id" "$version"; done; done; done
An icon indicating that this section has important information

PowerShell commands are currently work in progress, contributions welcome.

An icon indicating that this section has important information

Bash commands for macOS are currently work in progress, contributions welcome.

Platform

macOSApple

WindowsWindows

LinuxLinux

ChromeOSChromeOS

Suggest an editEdit Talk to an engineerTalk to us
Fleet logo
Multi platform Device management Orchestration Software management Integrations Pricing
Documentation Support Docs API Release notes Get your license
Company About News Jobs Logos/artwork Why open source?
ISO 27001 coming soon a small checkmarkSOC2 Type 2 Creative Commons Licence CC BY-SA 4.0
© 2025 Fleet Inc. Privacy
Slack logo GitHub logo LinkedIn logo X (Twitter) logo Youtube logo Mastadon logo
Tried Fleet yet?

Get started with Fleet

Start
continue
×