Скрипт настройки Windows 10. Часть II

    Чуть больше года назад выкладывал свой скрипт по автоматизации настройки Windows 10. Давеча переписал Windows 10 Sophia Script в виде примитивного модуля на 6 000 строк для одноразового использования.

    Основные претензии к предыдущей версии были три:

    1. Никто не хотел лезть в 3 500 строк кода и комментировать тот или иной раздел, чтобы он в дальнейшем не выполнялся;

    2. Если необходимо было откатиться на значение по умолчанию, никто не мог разобраться, что именно надо делать.

    3. Невозможно было перевести команды на другой язык без правки кода. Начиная с версии 5.1, файлы локализации вынесены в отдельные файлы, что облегчит процесс перевода.

    Теперь скрипт состоит из 2 файлов: непосредственно модуль и файл пресета к нему, не считая файлов локализации. Модуль разбит примерно на 270 функций: как для внесения изменений, так и его "отката".

    Теперь можно открыть файл пресета, где будет список из всех имеющихся функций (с подробным описанием каждой), и закомментировать строку с функций с помощью знака #, чтобы эта функция не выполнялась, или, наоборот, убрать знак # перед ней, чтобы функция выполнялась. Повторюсь: практически на каждую функцию есть функция на возврат в состояние по умолчанию, как "из коробки".


    Поддерживаемые версии

    Windows 10 Sophia Script поддерживает только актуальные версии Windows 10: 2004 (20H1) и 2009 (20H2), x64, так как это по сути одна и та же версия. Возможно, чуть позже можно то же самое провернуть и со скриптом, написанным для LTSC (1809), так как эта версия Windows 10 достаточно популярна. Пока что для прочих версий можно использовать предыдущую версию скрипта 4.x.

    Напомню основные функции.

    Основные функции

    • Настройка уровня телеметрии и конфиденциальности;

    • Отключить задачи диагностического отслеживания;

    • Настроить интерфейс;

    • Удалить "правильно" OneDrive;

    • Изменить путь переменной среды для %TEMP% на %SystemDrive%\Temp

    • Изменить программно расположение пользовательских папок;

      • Рабочий стол;

      • Документы;

      • Загрузки;

      • Музыка;

      • Изображения;

      • Видео;

      с помощью интерактивного меню с использованием стрелок вверх/вниз и клавиши Enter для подтверждения выбора;

    • Удалить UWP-приложения (со списком исключений), используя всплывающую форму, написанную на WPF;

    • Удалить компоненты Windows;

    • Установить и настроить WSL;

    • Отключить дополнительные компоненты Windows, используя всплывающую форму, написанную на WPF;

    • Создать задачу в Планировщике задач по очистке неиспользуемых файлов и обновлений Windows;

      • За минуту до выполнения задачи всплывает тостовое уведомление;

    • Создать задачи в Планировщике задач по очистке папок;

      • %SystemRoot%\SoftwareDistribution\Download

      • %TEMP%

    • Открепить все ярлыки от начального экрана;

    • Закрепить ярлыки на начальном экране, используя syspin.exe

    • Включить контролируемый доступ к папкам и добавить защищенные папки, используя диалоговое меню;

    • Добавить папку в список исключений сканирования Microsoft Defender, используя диалоговое меню;

    • Добавить файлы в список исключений сканирования Microsoft Defender, используя диалоговое меню;

    • Обновить иконки рабочего стола, переменные среды, панель задач и симулировать нажатие F5 для обновления рабочего стола;

    • Множество твиков проводника, контекстного и прочего.

    С полным списком функций можно ознакомиться в файле пресета.

    Скриншоты

    Работа скрипта в действии


    Nota bene

    • Перед выполнением стоит еще раз прочитать раздел на Github "Before running".

    Использование

    • Скачайте актуальную версию;

    • Настройте файл пресета под себя, закомментировав или раскомментировав функции;

    • Установите политику выполнения скриптов в PowerShell;

      • Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

    • Запустите скрипт с помощью;

      • .\Sophia.psd1


    Сторонние обзоры скрипта

    Немного устаревшее видео (с привязкой ко времени) от Chris Titus Tech :)

    Скачать с GitHub

    Windows 10 Sophia Script

    P.S. Для тех, кто хочет пойти дальше: мы ищем человека, знающего C#, чтобы помочь дописать графическую оболочку к модулю. Ранний образец, основанный на скетчах.

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 110

      +1
      Можно ли использовать этот скрипт на уже установленной и настроенной системе?
        +1
        Конечно. Разницы никакой нет. Просто внимательно настройте те функции, которые будут выполняться.
        +1
        Сильно ли отличается от этого?
        Win10-Initial-Setup-Script
          +3

          Да. Я намного дальше него продвинулся. Но когда-то ориентировался именно на его наработки; так сказать, курс. Вообще лучше проверить по названиям функций. Всё-таки прочитать файл пресета особо много времени не займет. Не проводить же аудит 6000 строк. :)

            +2
            Пора продвигаться еще дальше
            ansible-role-windows-initial-setup
              0
              Все будет; это очень интересно. Осталось все это выучить ) Но сначала надо доделать локализацию правильную…

          –1
          Есть же популярный github.com/Sycnex/Windows10Debloater
            0

            Популярный, но по сути заброшенный много месяцев назад. Весь в багах, плохо написанный код и интерфейс на Windows Forms. :)

              +1
              интерфейс на Windows Forms
              А вы графическую оболочку планируете не на Windows Forms реализовывать?
                –1
                Нет, конечно. Хотя еще год назад думали, что будет лучше. На WPF все сейчас строится.
            +1
            P.S. Для тех, кто хочет пойти дальше: мы ищем человека, знающего C#, чтобы помочь дописать графическую оболочку к модулю. Ранний образец, основанный на скетчах.
            Не рассматривали вариант веб-приложения, когда пользователь может зайти и выбрать через веб-UI нужные опции (в группах или по-отдельности), или воспользоваться готовыми шаблонами?
            А в результате компилить ps1 скрипт для прогонки на пользовательском компе.
            В этом случае скрипт на базе самой актуальной версии и меньше беспокойств у пользователя с установкой проги.
              0
              Если бы я знал, как делать веб-приложения…
                +1
                Я знаю. Пинганите, если есть заинтересованность.
                  0
                  Я схороню закладку на ваше сообщение. Но пока в приоритете доделать приложуху. Слишком долго все пилится…
                    0

                    По идее веб должен быть проще (если не сильно заморачиваться со стилями). Можно даже подтянуть автогенерацию из самого скрипта.

                      +2
                      Все-таки хочется доделать то, о чем мечтали еще год назад ).
                        +2

                        Понимаю, удачи! :)

                  0
                  От словосочетания «компилить ps1» аж в дрожь бросило. А нельзя как-то по простому, галочки поставил на веб форме, текстовый файлик с командами получил, профит. Это же можно реализовать на JS без шума и пыли с красивой мордой на том же vue.js.
                    0
                    Не пугайтесь слов, разберитесь в их смысле.
                    У слова «compilaiton» именно тот смысл, который вы описали — сборка (из кусочков).
                      0
                      Для кода, наверное, точнее слово «сопоставление» [через сборку из кусочков]. Чтобы потом не путать со скриптами сборки, которые всё-таки не только компилируют.
                        0
                        Так просто «сборка» и есть.
                        –1
                        Всегда думал что компиляция это трансляция исходной программы в низкоуровневый код с дальнейшим получением на выходе бинарника. В принципе бинарник из ps1 тоже можно получить, но это нельзя назвать компиляцией.
                        https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5
                        В данном случае скорее подойдет термин «сборка (build)» из кусков в единое целое. Или компоновка.
                          0
                          Не совсем.

                          dictionary.cambridge.org/us/dictionary/english/compilation
                          — the act of collecting information from a variety of places to arrange it in a book, report, or list: [ U ] The compilation of all his speeches took several months.

                          Oxford English and Spanish Dictionary, Thesaurus, and Spanish to English Translator:
                          www.lexico.com/en/definition/compilation
                          The action or process of producing something, especially a list, book, or report, by assembling information collected from other sources.
                            +1

                            В IT исторически закреплено как раз таки значение получения бинарного артефакта, как правило подлежащего линковке потом (но этот этап можно и пропустить, и существуют компиляторы-линкеры, сразу производящие готовый к запуску артефакт) — в противовес трансляции, которая порождает из текста исходного кода другой текст или альтернативное его представление (вариант байт-кода, в котором каждому кодону языка, или даже целой конструкции, — но не символу! — сопоставляется не исполняемое кодовое значение, ZX-Basic как пример).
                            Позже к нему добавилась приставка trans- для случаев уже в историческом значении: собрать ворох в у едину кучку (*Script, транспилируемые в JS).
                            При этом еще особняком стоит компиляция в байт-код: некоторые отказываются считать ее компиляцией, нарекая разновидностью трансляции.

                      +4
                      Можно разделить задачи — от меня хостинг и веб-разработка.

                      Могу сделать:
                      1. админку для заполнения вами списка функций, включая категории (вы их называете region) и локализации (версии описаний для разных языков)
                      2. пользовательское дерево (иерархический список)
                      Пример дерева можно посмотреть здесь: compliancegear.com, страничка «Loan Lifecycle»
                      3. генерацию ps1 скрипта на основании выбранных пунктов в №2.

                      Пиастры не возьму, банеров и моргающих картинок не будет, сухо — дерево опций и генератор для пользователей.

                      Пишу здесь, а не в личку, т.к. желательно услышать мнение общества на инициативу — есть смысл от такой реализации?
                      +3

                      Telegram-бота! Модно, современно.


                      • Замучили обновления не во время?
                      • Да!
                      • Параноите по поводу телеметрии?
                      • Бывает...
                      • Вот вам ссылка на скрипт.
                      +2

                      Любопытная штука.
                      Но я бы посоветовал смотреть в сторону Ansible или DSC. Меньше кода получится и он будет более читабелен или универсален.
                      Тесты на всяких фреймворках для IaC можно будет прикрутить. На идемпотентность хотя бы тестировать. Тесты также облегчат жизнь при апгрейде поша или винды.
                      Длинные скрипты и модули психологически трудно саппортить.
                      Ну и если чешутся руки попрограммировать, то надо писать инфраструктурные утилиты и в области несколько более другой чем администрирование рабочих станций.

                        0
                        Хочу попробовать DSC. Но надо почитать, что к чему. Возможно, будет 3 часть. :)
                        0
                        Я правильно понимаю что это некий аналог Win10Tweaker?
                          –2

                          К счастью, нет. Трояны я не распространяю. :)
                          Это в первую очередь автоматизация чего-либо, а уже потом так называемый твикер.

                            +1
                            В каком месте там трояны, и чем отличается функционал?
                              –1
                              100 раз уже обсасывалось, но… По ссылке — про то, что Хачатур делает на компах пользователей (спойлер: шпионит, что даже всеми зазря обхаянная Windows 10 курит в сторонке) и то, как относится к критикующим его пользователям, а равно покупателям: forum.ru-board.com/topic.cgi?forum=35&topic=81615&start=460
                              (нужна регистрация, так это варезный раздел ru-board)

                              В каком месте там трояны, и чем отличается функционал?

                              Посыл проекта не отключить все, что только можно (в 10 это уже не прокатит; знаем, плавали), а просто автоматизировать какую-либо настройку только официальными методами, ничего не ломая. Тем более опен-сорс. Хотя качество кода не фонтан, конечно )
                                0
                                Не увидел никаких троянов по ссылке. Только функционал собирания информации о взломщиках, которые поставили кряк для полной версии.

                                Не увидел внятного описания отличия функционала. Как обычно делают хорошие маркетологи — рисуют табличку со своим и чужим функционалом, и ставят галочки где что есть.
                          0
                          Скрипты разные смотрел, возможно даже ваш, но в итоге остановился на DWS — github.com/spinda/Destroy-Windows-10-Spying/releases
                          Как по мне этого вполне достаточно как рядовому, так и достаточно продвинутому пользователю, проще и понятней.
                          Но за работу в любом случае спасибо.
                            0

                            Я против отключения телеметрии: во-первых, ее без брандмауэра не отключить, если на то речь пошла, а, во-вторых, не надо сравнивать это поделие из 2016 года, которое после продажи левое конторе ещё и троян распространяла? Разницу надо понимать.

                              0
                              Вы DWS с Win10Tweaker очевидно путаете.
                                –1
                                В DWS был обнаружен 100 лет троян ровно после того, как его продали конторе. Дальше, вроде, в опен-сорс пошло, но смысла от этой проги уже давно нет. Устарела и морально, и технически. Лучше уже всякими ShutUp10 пользоваться.
                                  0
                                  Возможно этот момент прошёл мимо меня, действительно, на стыке смены разработчика были обвинения — в основном в комментариях на разных мутных сайтах — во вкрячивании то ли малваре, то ли адваре. Официальные версии с гитхаба в этом точно не замечены.
                                  Ваш скрипт точно так же могут модифицировать и где-нибудь выложить. 99.9% людей шесть тысяч строк перепроверять не будут.
                                    0
                                    Не только на мутных. На всех. Когда прогу отправили в опен-сорс, то малварь уже вырезали. Но сейчас главная ее проблема в тотальной неактуальности и устаревании.
                                      0
                                      История всё равно мутная, но дальше-то что? Гитхабовская версия вполне себе рабочая, это форк оригинала. В одну кнопку делает всё нужное.
                                      У меня к ней одна серьёзная претензия — слишком много вваливает в hosts, из-за чего могут не работать некоторые вполне полезные сервисы, типа answers.ms, live.com или работа скайп.
                                        0
                                        слишком много вваливает в hosts

                                        Зачем, правда, — не понятно. Но вы и сами видите, что что-то идет не так. В любом случае каждый волен пользоваться тем, чем желает.
                            +2
                            Пока не вникал в сам сабж, только статью прочитал. Но окошко очистки диска идеально, в парадигме win10. Начнётся через минуту, пользователь может только согласится. Или кинуться в планировщик искать задание, чтоб его перенести. Оно-же там одно, минуты точно хватит. Прям даже не знаю, что вас не устроило в дефолтной win10.
                            Это всё сарказм, возможно не уместный. Не принимайте всерьёз.
                              0

                              Кнопка "Хорошо" лишь скрывает окошко. Пользователь волен создавать или не создавать задачу.

                                0
                                Да это-то я понимаю. Но, к примеру, распаковывается архив в темпы, и тут это окно, хотелось-бы отложить задание конкретно сейчас. Или просто, ось плотно работает с диском. Нафига вообще нужно это окно, если на него никак нельзя прореагировать? Чтоб создавать илюзию контроля?
                                  0
                                  Если не ошибаюсь, процесс будет «держать» эту папку, и удалить ее удастся. Метод запуска можно изменить после.
                                  Ну, окно просто есть. Уведомление, так сказать.
                                    0
                                    Да, процес не отдаст файл, всё верно, но они нада эти конфликты? Это всё мелочи, ничего критичного.
                                    Но это так в стиле 10ки, созавать диалоговые окна, в которых нет выбора. Уведомлять пользователя о событиях, на которые он не может повлиять. И это в скрипте по тюнингу 10ки. Возникает диссонанс типа «зачем вам менять что-то в 10ке, если вы делаете то-же самое, что и 10ка». Ну такое, не знаю, забавно, что-ли.
                                      0
                                      Лучше не придумал, как автоматизировать такое «обслуживание». За 5 лет проблем не было).
                                        +2
                                        Окно зачем? Если отрабатывает-пусть отрабатывает, если окно, то с выбором. Но, придирки это, не берите в голову. Я подумал, что это забавно, решил обратить на это ваше внимание. А вы так серьёзно это восприняли. Извините.
                                          0
                                          Да ладно. Серьезно воспринял лишь в плане «А как сделать лучше?». Но понял, что в любом случае будет не так хорошо, как если бы такое было «из коробки». Так что критика — это хорошо. :) Главное, чтобы с троянами не сравнивали. :)
                                            +2
                                            Если к критике хорошо относитесь, то и я пять копеек добавлю.
                                            Это как раз хороший пример плохого UI. Если это просто информационное сообщение, в нём вообще не должно быть кнопок (а «убираться» оно должно само, используя механизмы уведомлений, средствами ОС). Но ещё лучший вариант — как раз «прокачать» это окошко, сделав его из бесполезного (и даже раздражающего — потому что его надо закрывать) — управляющим. Добавить таймер обратного отсчёта (со временем, когда начнётся очистка, а окно само закроется) и пару кнопок — Пауза и Отмена (хотя тут можно подумать, какие элементы нужны)… Думаю, frip как раз об этом… Мне это окошко тоже сразу резануло по глазам… ))
                                            з.ы. ну и да, это всё — шашечки… Спасибо за проделанную работу, будем попробовать! До сих пор OOSU10 вполне устраивал. Но выбор и открытость — это всегда хорошо!
                                              0
                                              Согласен. Но убирается оно само, так как это нативное тостовое уведомление. Как дойдут руки, почитаю, как можно переделать. OOSU10 так-то вообще не то все-таки: оно про телеметрию и тщетную попытку отключить то, что отключать не надо, а этот проект про автоматизацию чего-либо с примесью показать, как все это можно реализовать. :)
                              +4
                              Я правильно понимаю, что чтобы в наши дни относительно без мата пользоваться Windows 10 нужно выполнить 6000 строк?
                                0
                                Нет. Отлично работает уже 5 лет без каких-либо вмешательств.
                                  +4
                                  Смотря для кого. Мне столько строк не хватит ))
                                    0
                                    Админь. :)
                                    +3

                                    Без мата и с удовольствием пользовался Win10 с момента релиза на дюжине компьютеров. При том, что даже в компьютерные игры не играю. Я бы спросил, что я делаю не так, но я и сам знаю.

                                    0

                                    Поддерживает ли данный скрипт Windows Insider Preview и как быть с возможными глюками при будущих обновлениях? MS вообще не рекомендует даже реестр менять, а возможные глюки от подобных твикеров уже были. У меня, например, перестали открываться свойства моего компьютера после очередного Insider Preview обновления.

                                      0
                                      Практически полностью поддерживает. Но некоторые функции в будущем, весеннем, обновлении удалены, и появились новые, которые тут еще не добавлены. Например, установить сторонний DNS-over-HTTPS сервер. И это не твикер. Твикер это прога WinAero. На Insider Preview вообще может быть что угодно. Лучше прочесть файл пресета и включить лишь то, что надо.
                                      0
                                      Автор, я в windows не силен, подскажите по поводу совместимости со всеми компонентами windows?

                                      Например есть такие «скрипты» после настройки/установки которых что-то да отваливается, xbox game center, магазин или еще что-то, ваш скрипт таким не страдает? Тут только настройка и сама windows будет работать и обновляться дальше без проблем?
                                        0
                                        Да. Все сделано так, чтобы не трогать компоненты системные (поэтому используется
                                        -PackageTypeFilter Bundle
                                        ). Все включается и выключается только официальным путем. Да, из любого состояние можно восстановить, но таким не промышляю. ```xbox game center``` и прочие Xbox* по умолчанию не отмечены на удаление. Также принудительно запрещено удаление компонентов вроде
                                        Microsoft.DesktopAppInstaller
                                        , чем грешат многие так называемые твикеры.
                                          0
                                          Спасибо, собираю пк на windows, попробую ваш скрипт после установки)
                                        0
                                        По поводу переноса пользовательских папок. Скрипт переносит их сразу для всех пользователей или только для текущего?
                                        +1
                                        впринципе интересный набор твиков, но действительно геморно сидеть и проверять весь список. ведь каждая опция дублируется вкл\выкл.
                                        но т.к. крайне спорные дефолтные настройки, не хотелось бы запустить не будучи уверенным что он делает.

                                        #Включить ограничение Windows на 260 символов в пути
                                        #Изменить путь переменной среды для %TEMP% на %SystemDrive%\Temp
                                        отключение гибернации и еще десяток.
                                          0
                                          Настройки по умолчанию как раз достаточно адекватные.
                                          #Включить ограничение Windows на 260 символов в пути

                                          Опечатался и по ошибке раскомментировал.
                                            0
                                            для проверки некоторые опции закоментировал оба варианта. тоесть хочу ничего не трогать и оставить как сейчас (не важно дефолт это или нет).
                                            из очевидного > сменился дефолтный язык ввода на русский. остальное пока не понял, может еще выплывет.
                                            сетевухи тут нет, не знаю, что случится с энергосбережением в таком случае.
                                          +1
                                          Основные претензии к предыдущей версии были две:
                                          Никто не хотел лезть в 3 500 строк кода и комментировать тот или иной раздел, чтобы он в дальнейшем не выполнялся;
                                          Если необходимо было откатиться на значение по умолчанию, никто не мог разобраться, что именно надо делать

                                          Пользуюсь вашим скриптом годовой давности с прошлой статьи. Спасибо за него. Как раз я один из немногих, кто просмотрел его весь и закомментил для себя те изменения, которые мне нужны в использовании. После этого откатывать ничего не нужно.
                                          А с новым скриптом придется разбираться, но скорее старым буду пользоваться.
                                            0
                                            Все-таки советую сравнить код функций. Иногда да проскальзывали недочеты в коде.
                                            +1
                                            Не хочу показаться занудой, но возможно имеет смысл избавиться по всему файлу от кусков кода вида.
                                            if ($RU)
                                            {
                                            }
                                            else
                                            {
                                            }
                                            

                                            В powershell можно добавить поддержку интернационализации в проект. Количество строк скриптов уменьшится и это упростит трансляцию в разные другие языки.
                                            https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_script_internationalization?view=powershell-7
                                            https://plattsoft.net/2015/08/24/internationalization-with-import-localizeddata
                                            https://livebook.manning.com/book/powershell-in-depth/chapter-28/4
                                              0

                                              Буду признателен, если укажешь, как надо. Я самоучка полностью: многое не знаю.

                                                0
                                                я прикрепил ссылки выше на документацию по интернационализации, там все просто в понимании
                                                  0

                                                  Спасибо. Есть что улучшать.

                                                +1
                                                franksinatra, все, сделал, как посоветовал: github.com/farag2/Windows-10-Sophia-Script/releases
                                                  +1
                                                  Ведь отлично же получилось, читать приятнее, строк меньше.
                                                  Хочу предложить еще одну идею. У вас по всему коду идут функции вида Enable/Disable
                                                  Например:

                                                  # Do not show suggested content in the Settings app (current user only)
                                                  # Не показывать рекомендуемое содержимое в приложении "Параметры" (только для текущего пользователя)
                                                  function DisableSuggestedContent
                                                  {
                                                  	New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338393Enabled -PropertyType DWord -Value 0 -Force
                                                  	New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353694Enabled -PropertyType DWord -Value 0 -Force
                                                  	New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353696Enabled -PropertyType DWord -Value 0 -Force
                                                  }
                                                  
                                                  # Show suggested content in the Settings app (current user only)
                                                  # Показывать рекомендуемое содержимое в приложении "Параметры" (только для текущего пользователя)
                                                  function EnableSuggestedContent
                                                  {
                                                  	New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-338393Enabled -PropertyType DWord -Value 1 -Force
                                                  	New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353694Enabled -PropertyType DWord -Value 1 -Force
                                                  	New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SubscribedContent-353696Enabled -PropertyType DWord -Value 1 -Force
                                                  }


                                                  По сути это дублирование кода, кроме того в документации к New-ItemProperty все пути реестра указываются в кавычках.
                                                  
                                                  function SetSuggestedContent
                                                  {
                                                  param([ValidateSet(0,1)] [int] $NewValue = 0)
                                                  	New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338393Enabled" -PropertyType DWord -Value $NewValue -Force
                                                  	New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-353694Enabled" -PropertyType DWord -Value $NewValue -Force
                                                  	New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-353696Enabled" -PropertyType DWord -Value $NewValue -Force
                                                  }
                                                  # вызов функции превращается в
                                                  SetSuggestedContent -NewValue 1
                                                  SetSuggestedContent
                                                  # можно и явно передавать
                                                  SetSuggestedContent -NewValue 0
                                                  # при вызове с неправильным значением получим ошибку
                                                  SetSuggestedContent -NewValue 2
                                                  # т.к. у параметра прописана валидация из набора [int] 0 или 1
                                                  # для [string] будет аналогично
                                                  


                                                  Резюмируя, рефакторинг кода позволит скрипту полинять где-то на 40% кода т.к. большая часть функций отличаются только цифрой изменяемого параметра в реестре. В комментариях к функции надо будет явно указать значения параметров (0,1) и что они делают. Уменьшится количество комментариев, функций и строк.

                                                  man по функции new-itemproperty
                                                  docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-itemproperty?view=powershell-7

                                                  man по валидаторам переменных: riptutorial.com/powershell/example/29958/parameter-validation

                                                  man по функциям:
                                                  docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions_advanced_methods?view=powershell-7
                                                    0
                                                    Да, такое уже предлагали. :) Может, позже сделаю. Пока не знаю…
                                                    Все пути реестра указываются в кавычках

                                                    А зачем всегда брать в кавычки, если в пути нет пробелов?
                                                      0
                                                      Предложение про кавычки преследовало скорее эстетическое единообразие кода и организацию нормальной подсветки строк в редакторах.
                                                      Плюс личная привычка из других языков, что строки явно должны быть в кавычках.
                                                      Я понимаю, что можно на кавычки вообще забить и использовать их только в строках с пробелами, это дело вкуса и читаемости кода.
                                                      Так что данное предложение можно рассматривать, как сомнительное с точки зрения полезности. Это скорее украшательства.

                                                      New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag" -Name ThisPCPolicy -PropertyType String -Value Hide -Force


                                                      Просто удобнее читать.
                                                      New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{31C0DD25-9439-4F12-BF41-7FF4EDA38722}\PropertyBag" -Name "ThisPCPolicy" -PropertyType "String" -Value "Hide" -Force


                                                      Функцию из примера можно еще уменьшить:

                                                      function SetSuggestedContent
                                                      {
                                                      param([ValidateSet(0,1)] [int] $NewValue = 0)
                                                      $keys = @("SubscribedContent-338393Enabled","SubscribedContent-353694Enabled","SubscribedContent-353696Enabled")
                                                      foreach ($key in $keys){
                                                      	New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name $key -PropertyType DWord -Value $NewValue -Force
                                                          }
                                                      }
                                                      
                                                        0
                                                        Меня наоборот бесит, когда просто так все пытаются взять в кавычки. :)
                                                          0
                                                          Microsoft в своих же примерах обычно все записывает в кавычках, если тип данных string. Тут приходится выбирать между удобочитаемостью и лаконичностью кода. Опять-таки дело вкуса.
                                                  +1

                                                  Ещё бы функциональность для удаления Cortana, Windows Defender, и становления владельцем всех файлов и папок, и было бы просто прекрасно.

                                                    0
                                                    Cortana, конечно, можно удалить. Имя ее пакеты не видно на скриншоте
                                                    image
                                                    Но он самый первый в списке:
                                                    Microsoft.549981C3F5F10


                                                    Defender я никогда не буду предлагать удалить. Это удел всяких Win 10 Tweaker.

                                                    Становления владельцем всех файлов и папок, и было бы просто прекрасно.

                                                    Я это не добавлял, так как практически не сталкиваюсь с необходимостью, но все уже изобретено до меня.
                                                    www.tenforums.com/tutorials/3841-add-take-ownership-context-menu-windows-10-a.html
                                                    Регистрация не нужна.
                                                      0
                                                      Defender я никогда не буду предлагать удалить.

                                                      ((
                                                        0

                                                        Спасибо большое за возможность отключить Cortana! А вот с Windows Defender очень жаль, была бы серьезно очень удобная функция убрать наконец-то этот назойливый сервис.


                                                        Про метод "стать владельцем" через контекстное меню знаю, но это неудобно. Я имел в виду сделать так, чтобы в принципе не понадобилось ей пользоваться, чтобы пользователь уже был владельцем всех файлов и папок. Либо эта проверка вовсе отсутствовала.

                                                          +1
                                                          Я имел в виду сделать так, чтобы в принципе не понадобилось ей пользоваться, чтобы пользователь уже был владельцем всех файлов и папок.

                                                          Это сильно ударит по безопасности Windows.
                                                            0

                                                            Пусть так, кто поставит галку об этом в конфигураторе — знает, что делает. Главное, было бы, что ставить.

                                                              +1

                                                              На 7 после этого начинал бузить ThrustedInstaller уже.
                                                              Дословно уже не вспомнить, но начинаются проблемы с установкой/удалением компонент, апдейтов и msi.

                                                                +2
                                                                Было бы странно, если бы не начались.
                                                                  0

                                                                  Y-yep.
                                                                  Ну а чего еще ожидать от оригинального решения, с интерфейсом управления, построенным по принципу сам не "ам", и другим не дам!

                                                                  0
                                                                  Это настолько очевидно, насколько что-то может быть очевидным. Можно еще файлики удалять, ведь они тормозят ОС и занимают место! :D
                                                                    0

                                                                    Например hiberfil.sys и pagefile.sys — при 16ГБ памяти на 64ГБ ssd внезапно из ниоткуда появляется куча места.
                                                                    Кэш инсталлера, в котором лежат гигабайты уже ненужной, но свято хранимой фигни, и интерфейса к обслуживанию которой — нет.
                                                                    Загрузиться с WinPE и пожать оффлайново системный диск.


                                                                    И, таки да, на ssd тех времен оно реально занимает место и чаще заставляет контроллер судорожно собирать мусор — тормозить ;D

                                                                  0
                                                                  Такое никогда у меня не будет. Это удел всяких Win 10 Tweaker.
                                                                    0

                                                                    Эх, жаль :(

                                                                      0
                                                                      Крайне не советую таким заниматься. Желаю вам поменять паттерн использования ОС. Она работает итак стабильно, даже не внося в работу никаких изменений.
                                                                        0

                                                                        Ну, про Windows Defender я ещё могу понять. Безболезненно его препарировать из системы, к сожалению, не получится. Гарантий стабильной работы нет.


                                                                        С правами доступа все несколько иначе. Кстати, папка Windows это наиредчайшее из расположений, полноправный доступ к которому может понадобиться. На ум приходит разве что установка шрифтов. А вот всевозможные App Data — увы, нужны. Вообще я склонен с вами не согласиться, что в условиях, когда компьютером пользуется один человек (админ и пользователь в одном лице), нужны какие-либо запреты "доступов к объектам".

                                                                          0
                                                                          Если человек — админ на ПК, то доступ есть везде, куда надо. Если человек на ПК — пользователь, то, значит, ему обрезали права, и лезть никуда не надо.
                                                                          Доступ к %APPDATA% итак есть.
                                                                0
                                                                назойливый сервис

                                                                Он ни разу ни назойливый и никак не мешает работать.

                                                                пользователь уже был владельцем всех файлов и папок.

                                                                Пользователь итак владелец всех тех папок, которыми он должен быть. Нет никакого смыла становиться владельцем папки Windows, так так это повлечет скорее всего смерть ОС. Я не понимаю, зачем это надо.
                                                                Хотя на работе есть один дурачок (главный админ), который до сих пор так делает, и не зарастает к нему народная тропа погибших ОС. У — умелец.
                                                                  0

                                                                  Он это делает для систем, на которых работают другие люди, а не он сам. Что действительно в корне неправильно.

                                                            +1
                                                            Спасибо за новую версию, прошлая очень помогала настраивать компы, когда приходили по 1-3 штуки. Пришлось доработать немного, чтобы отделить то, что может исправлять администратор (общее для всех пользователей), и то, что нужно исключительно пользователю.
                                                              0
                                                              Сильно ли отличается от VMware OS Optimization Tool?
                                                                0
                                                                Если не считать, что там GUI и поддержка от многомиллиардной конторы, то где-то посыл пересекается. Просто набор функций разный все-таки.
                                                                  +1
                                                                  Назначение VMware OS Optimization Tool скорее для оптимизации Windows, работающей в виртуальных средах, где важно открутить вообще всё ненужное, чтобы оптимизировать потребление ресурсов, но в принципе можно сделать шаблон и для обычной ОС при желании.
                                                                  Данный скрипт для тюнинга скорее обычной ОС, борьба с телеметрией и прочими назойливыми особенностями ОС, задачи немного разные.
                                                                    0
                                                                    Борьба с телеметрией практически не осуществляется, кроме как выключения пары тумблеров. Сделано чисто так, чтобы людям нравилось.
                                                                  –2
                                                                  ?
                                                                    –1
                                                                    Вы переизобрели винтентвикер?

                                                                    Нет, троян я не переизобрел.
                                                                    +1
                                                                    Почему после оптимизации перестали запускаться .bat файлы? Пытаюсь запустить любой скрипт, на доли секунд появляется консоль и тут же закрывается
                                                                      0
                                                                      Ни одна команда не влияет на запуск .bat файлов. Поставь pause в конце скрипта и посмотри, на что ругается скрипт. Но если bat запускает .js скрипт, то в пресете есть функция DisableWindowsScriptHost.
                                                                        +1
                                                                        Выпустил 5.1
                                                                        Теперь файлы локализации вынесены в отдельные psd1 файлы, и можно переводить на другие языки. :)
                                                                          +1
                                                                          Отличная работа! Думаю часть идей забрать в ansible playbook'и :)
                                                                          Не думали ли разделить пресет на две части, пресет для общесистемных настроек, и пресет для текущего пользователя?
                                                                            0

                                                                            Спасибо). Вряд ли буду разделять. Пока хочу 5.2 доделать и почитать про DSC.

                                                                            +1
                                                                              0
                                                                              .\Sophia.psd1
                                                                              В итоге смог запустить только ps1, psd1 просто открывается в «блокноте» вместо запуска. Пробовал варианты решений из интернета, ничего не сработало.
                                                                              Решил тут уточнить у автора.

                                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                              Самое читаемое