Resources/FirefoxPreferences.ps1
function doFirefox { param ( [Parameter(Mandatory = $true)] [string]$path ) $currentFirefoxRegKey = Get-ChildItem -Path $path | Select-Object -Last 1 $installDirRegKey = $currentFirefoxRegKey | Get-ChildItem | Where-Object PSChildName -EQ 'Main' $InstallationPath = $installDirRegKey | Get-ItemProperty | Select-Object -ExpandProperty 'Install Directory' # Calculate Firefox local-settings path $LocalSettingsPath = "$InstallationPath\defaults\pref\local-settings.js" # Calculate Firefox config path $preferenceConfigFilename = 'mozilla.cfg' if (Test-Path $LocalSettingsPath) { foreach ($line in (Get-Content $LocalSettingsPath)) { if ($_ -match "^pref\(`"general\.config\.filename`",\s?`"([\w\-. ]+\.cfg)`"\);") { $preferenceConfigFilename = $Matches[1] } } } $PreferenceConfigPath = "$InstallationPath\$preferenceConfigFilename" # Gather lines into lockPref list # if (-not (Test-Path $LocalSettingsPath) -or # -not (Test-Path $PreferenceConfigPath)) { # return $null # } $boolRegex = '(?<bool>true|false)' $numberRegex = '(?<number>\d+)' $stringRegex = '"(?<string>(\\.|[^`"\\])*)"' $lineRegex = "^lockPref\s*\(\s*`"([\w.-]+)`"\s*,\s*({0}|{1}|{2})\s*\);" -f $boolRegex, $numberRegex, $stringRegex $LockedPreferences = @() if (Test-Path $PreferenceConfigPath) { foreach ($line in (Get-Content $PreferenceConfigPath)) { if ($line -match $lineRegex) { $value = $null if ($Matches.Keys -contains "bool") { $value = [bool]::Parse($Matches["bool"]) } elseif ($Matches.Keys -contains "number") { $value = [int]::Parse($Matches["number"]) } elseif ($Matches.Keys -contains "string") { $value = $Matches["string"] } $LockedPreferences += @{ Name = $Matches[1]; Value = $value } } } } return [PSCustomObject] @{ InstallationPath = $InstallationPath LocalSettingsPath = $LocalSettingsPath PreferenceConfigPath = $PreferenceConfigPath LockedPreferences = $LockedPreferences } $currentFirefoxRegKey = Get-ChildItem -Path $path | Select-Object -Last 1 $installDirRegKey = $currentFirefoxRegKey | Get-ChildItem | Where-Object PSChildName -EQ 'Main' $InstallationPath = $installDirRegKey | Get-ItemProperty | Select-Object -ExpandProperty 'Install Directory' # Calculate Firefox local-settings path $LocalSettingsPath = "$InstallationPath\defaults\pref\local-settings.js" # Calculate Firefox config path $preferenceConfigFilename = 'mozilla.cfg' if (Test-Path $LocalSettingsPath) { foreach ($line in (Get-Content $LocalSettingsPath)) { if ($_ -match "^pref\(`"general\.config\.filename`",\s?`"([\w\-. ]+\.cfg)`"\);") { $preferenceConfigFilename = $Matches[1] } } } $PreferenceConfigPath = "$InstallationPath\$preferenceConfigFilename" # Gather lines into lockPref list # if (-not (Test-Path $LocalSettingsPath) -or # -not (Test-Path $PreferenceConfigPath)) { # return $null # } $boolRegex = '(?<bool>true|false)' $numberRegex = '(?<number>\d+)' $stringRegex = '"(?<string>(\\.|[^`"\\])*)"' $lineRegex = "^lockPref\s*\(\s*`"([\w.-]+)`"\s*,\s*({0}|{1}|{2})\s*\);" -f $boolRegex, $numberRegex, $stringRegex $LockedPreferences = @() if (Test-Path $PreferenceConfigPath) { foreach ($line in (Get-Content $PreferenceConfigPath)) { if ($line -match $lineRegex) { $value = $null if ($Matches.Keys -contains "bool") { $value = [bool]::Parse($Matches["bool"]) } elseif ($Matches.Keys -contains "number") { $value = [int]::Parse($Matches["number"]) } elseif ($Matches.Keys -contains "string") { $value = $Matches["string"] } $LockedPreferences += @{ Name = $Matches[1]; Value = $value } } } } return [PSCustomObject] @{ InstallationPath = $InstallationPath LocalSettingsPath = $LocalSettingsPath PreferenceConfigPath = $PreferenceConfigPath LockedPreferences = $LockedPreferences } } # Calculate Firefox installation path if (Test-Path 'HKLM:\SOFTWARE\WOW6432Node\Mozilla\Mozilla Firefox\') { $firefoxRegKeyPath = 'HKLM:\SOFTWARE\WOW6432Node\Mozilla\Mozilla Firefox\' doFirefox -path $firefoxRegKeyPath }if (Test-Path 'HKLM:\SOFTWARE\Mozilla\Mozilla Firefox\') { $firefoxRegKeyPath = 'HKLM:\SOFTWARE\Mozilla\Mozilla Firefox\' doFirefox -path $firefoxRegKeyPath }else { return [PSCustomObject] @{ InstallationPath = "Seems like Firefox is not installed on this system." LocalSettingsPath = "Seems like Firefox is not installed on this system." PreferenceConfigPath = "Seems like Firefox is not installed on this system." LockedPreferences = "Seems like Firefox is not installed on this system." } } |