farag
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору iNNOKENTIY21 Вот такой получился proof of concept, так сказать. Хотелось настроить панель инструментов в Firefox, не трогая остальные иконки и не заменяя всю строку на заготовленную. Код: # Получаем имя профиля $String = Get-Content -Path "$env:APPDATA\Mozilla\Firefox\installs.ini" | Select-String -Pattern "Default=" $Folder = Split-Path -Path $String -Leaf $prefsjs = "$env:APPDATA\Mozilla\Firefox\Profiles\$Folder\prefs.js" # Находим строку, где хранятся настройки панели управления $String = Get-Content -Path $prefsjs | Select-String -Pattern "browser.uiCustomization.state" -SimpleMatch # Удаляем в строке все "\" $String2 = ($String).Tostring().replace("\", "") # Удаляем в строке первые 44 символа, чтобы отбросить 'user_pref("browser.uiCustomization.state", "' $Substring = $String2.Substring(44) # Удаляем в строке последние 3 символа, чтобы отбросить '");' [Object]$QuickJson = $Substring.Substring(0,$Substring.Length-3) [object]$JSON = ConvertFrom-Json -InputObject $QuickJson # Сохраняем необходимую последовательность кнопок $NavBar = ( # На предыдущую страницу "back-button", # На следующую страницу "forward-button", # Адресная строка "urlbar-container", # Домащняя страница Firefox "home-button", # Обновить текущую страницу "stop-reload-button", # Показать ваши закладки "bookmarks-menu-button", # Аккаунт Firefox "fxa-toolbar-menu-button" ) $JSON.placements.'nav-bar' = $NavBar $ConfiguredJSON = $JSON | ConvertTo-Json -Depth 10 # Заменяем все '"' на '\"', как было $ConfiguredString = $ConfiguredJSON.replace('"', '\"').ToString() # Заменяем всю строку на полученный результат $replace = "user_pref(`"browser.uiCustomization.state`", `"$ConfiguredString`");" (Get-Content -Path $prefsjs).replace($String, $replace) | Set-Content $prefsjs -Force | prefjs по умолчанию, если надо: https://pastebin.com/pFyAZe1R Вопрос: можно как-то элегантнее решить задачу? Мне вот не направится что-то отбрасывание у меня 44 и 3 символов. |