Пришло время выложить из закромов очередной скрипт для системных администраторов. Заготовки для работы с пакетами обновлений и компонентами системы выкладывались в предыдущих статьях. Сегодня Я поделюсь готовым решением, которое можно без доработок применять в работе. Как известно, компания Microsoft решила последовать примеру Google и открыла свой маркет приложений, под названием Магазин Windows. В дистрибутивах ОС начиная c Windows 8 появились приложения нового типа (формат файлов распространения — AppX), которые являются универсальными и должны запускаться на всех устройствах под Windows. Среди предустановленных универсальных приложений лично Я не нашел ничего полезного, поэтому и написал скрипт, который удаляет их все.

Представленное здесь решение предназначено для обслуживания образов Windows 8, 8.1, 10. Может применяться как к автономным файлам образов в формате *.wim, так и к развёрнутой (установленной) системе. Как и в предыдущих моих скриптах использую средства системы DISM. Однако в ходе разработки выяснилось, что с помощью команды dism нет возможности удалить универсальные приложения из установленной системы (обслуживание онлайн) — только средствами PowerShell. Пришлось делать выбор: либо писать скрипт полностью на PS, либо использую возможности командного интерпретатора (CMD), осуществить вызов отдельных операций из PS. Я выбрал второй вариант, в связи с чем, представленное решение состоит из двух файлов: основного скрипта (сохранить с любым именем *.cmd) и дополнительного (сохранить с именем RemoveAppxes.ps1).

Основной скрипт


@echo off
title Deleting Appxes in Windows image

set _file=install.wim
set _img=Online
set _mnt=mount

dism /English /LogLevel:1 /Get-Help | find "Version: 6.1" > nul && exit

:pre_menu
cls
if not exist %_file% goto :version
dism /English /LogLevel:1 /Get-ImageInfo /ImageFile:%_file%
echo -------------------------------------------------------------------------------
if %ERRORLEVEL% NEQ 0 pause & exit
set /p _ind=Input index or press [Enter] for quit: || exit
if %_ind% EQU 0 goto :version
if %_ind% GTR 0 if %_ind% LEQ 24 goto :ind_menu
goto :pre_menu

:ind_menu
cls
dism /English /LogLevel:1 /Get-ImageInfo /ImageFile:%_file% /Index:%_ind%
echo -------------------------------------------------------------------------------
if %ERRORLEVEL% NEQ 0 pause & goto :pre_menu
choice /c abcdefghijklmnopqrstuvwxyz /n /m "Mount selected image? [m] "
if %ERRORLEVEL% EQU 13 goto :mount
goto :pre_menu

:version
dism /%_img% /English /LogLevel:1 /Get-Help | find "Image Version: 6.1" > nul && goto :unmount
goto :remove

:remove
cls
echo Getting list of Appxes. Please wait...
dism /%_img% /English /LogLevel:1 /Get-ProvisionedAppxPackages > %TEMP%\appxes.txt
echo -------------------------------------------------------------------------------
set _num=1
for /f "skip=8 tokens=3" %%a in (%TEMP%\appxes.txt) do call :filter %%a
del %TEMP%\appxes.txt
echo Removes default application associations
dism /%_img% /English /LogLevel:1 /Remove-DefaultAppAssociations
echo -------------------------------------------------------------------------------
if %_img%==Online (
echo Remove current Appxes for AllUsers
powershell -Command Start-Process powershell -ArgumentList '-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File RemoveAppxes.ps1' -Verb RunAs
)
if not exist %_file% exit
goto :unmount

:filter
echo %1 | findstr /ric:"Microsoft.*" > nul
if %ERRORLEVEL% EQU 0 call :action %1
exit /b

:action
echo %1 | findstr /ric:"Microsoft.*_" > nul
if %ERRORLEVEL% NEQ 0 (
set /a _num+=1
echo %_num% Remove: %1
) else (
dism /%_img% /English /LogLevel:1 /Remove-ProvisionedAppxPackage /PackageName:%1
echo -------------------------------------------------------------------------------
)
exit /b

:mount
cls
md %_mnt%
dism /English /LogLevel:1 /Mount-Image /ImageFile:%_file% /Index:%_ind% /MountDir:%_mnt%
if %ERRORLEVEL% NEQ 0 rd %_mnt% & pause & exit
set _img=Image:%_mnt%
goto :version

:unmount
cls
if not %_img%==Online (
dism /English /LogLevel:1 /Unmount-Image /MountDir:%_mnt% /Commit
rd %_mnt%
)
set _img=Online
goto :pre_menu

Дополнительный скрипт


Get-AppxPackage -AllUsers | Remove-AppxPackage

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


Два файла должны размещаться в одной папке. Если в папке запуска отсутствует файл образа — install.wim, то скрипты выполняют работу в полностью автоматическом режиме. Если в папке запуска присутствует файл образа — install.wim, то скрипт выполняет считывание из него информацию об имеющихся «индексах» и предлагает ввести номер. После этого отображается расширенная информация о выбранном «индексе» выдаётся запрос на монтирование. Нажатие любой клавиши приводит к возврату, а нажатие клавиши [m] запускает следующую цепочку действий: монтирование образа, проверка версии ОС, удаление дистрибутивов приложений (по циклу), удаление всех ассоциаций, деинсталляция установленных приложений (при запуске онлайн), размонтирование образа, возврат в меню выбора «индекса». После чего можно выбрать другой «индекс» образа для удаления приложений. Выбор «индекса» под номером 0 запускает обслуживание онлайн.

Разбор кода


Вначале командой set происходит установка переменных. Можно изменить предполагаемое имя файла образа install.wim (например, на install.esd). Можно изменить имя папки монтирования (по-умолчанию mount) или задать путь, если папка монтирования должна находится за пределами папки запуска.

:pre_menu


Предварительное меню. Получение основной информации о wim-файле с контролем ошибок. Если отсутствует файл образа, то запуск в режиме Online.

:ind_menu


Индексное меню. Получение расширенной информации о выбранном «индексе» в wim-файле с контролем ошибок. Предложение смонтировать «индекс».

:version


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

:remove (:filter, :action)


Основной блок выполнения скрипта. Вначале запрашивается список интегрированных универсальных приложений с сохранением во временный файл appxes.txt. Затем в цикле for из полученного списка последовательно выбираются строки и передаются в псевдофункцию :filter. Строки фильтруются поиском по регулярному выражению «Microsoft.*» — если найдена, то передаются в следующую псевдофункцию :action. Здесь по регулярному выражению «Microsoft.*_» отфильтровываются названия универсальных приложений, передаваемые в дальнейшем утилите dism для удаления. Чтобы лучше понять логику работы нужно взглянуть на содержимое файла appxes.txt. Так как файл удаляется по завершению работы цикла, то чтобы с ним ознакомиться нужно предварительно вручную его получить и сохранить.

Одной командой происходит удаление всех ассоциаций открытия отдельных файлов универсальными приложениями. Для распространённых типов файлов остаются ассоциации со стандартными классическими приложениями Windows.

Удаление (деинсталляция) универсальных приложений на установленной системе происходит вызовом составной команды на языке скриптов PowerShell. Файл дополнительного скрипта RemoveAppxes.ps1 вначале выполняет запрос списка всех универсальных приложений для всех пользователей, а затем «по конвейеру» передаёт их команде на удаление. Вроде бы ничего сложного, однако, чтобы выполнить эту операцию скрипт PS должен быть запущен с повышенными правами, причём работать от имени Администратора не достаточно. Для успешного запуска нужно вставить тот сложный код в команде powershell чтобы получить повышение прав. Защита которая легко обходится! Вот за этот «идиотизм» мне и не приглянулся PowerShell.

:mount


Монтирование образа. Предварительно создаётся папка монтирования. Контроль ошибок. Изменяется переменная определяющая спецификацию образа, теперь указывает на путь к автономному образу.

:unmount


Размонтирование образа. Если выполнялось интерактивное обслуживание (/Online), то размонтировать не нужно. Возвращение переменных к исходным значениям.

Заключение


Я показал простой и быстрый способ удаления приложений Магазина Windows. Считаю, что одно и тоже приложение не может быть одинаково удобным для использования на мобильном устройстве и на ПК. Прежде всего у названных платформ разное функциональное назначение, а значит и требуемые пользователям приложения должные предоставлять разный функционал. После отработки скрипта несколько универсальных приложений всё же остаются, прежде всего это сам Магазин Windows, с помощью которого можно установить то, что было удалено или что-то ещё.

Комментарии (79)


  1. dmitry_dvm
    25.01.2018 23:41

    Универсальные приложения вам неудобны пока не появится девайс с сенсорным экраном и hidpi. После этого внезапно оказывается, что ничего удобнее не придумано.
    Из UWP, которые искаропки юзаю почту — просто, удобно, ничего лишнего; Groove -музыка прямо из облака, не занимая гигабайты ссд; Видеоплеер — играет всё, что скачиваю, легкий, не надо ничего ставить; просмотрщик фоток и калькулятор — не ставить же отдельно калькулятор, а просмотрщик еще и редактировать умеет; ну и прекрасное тиньковское приложение, ничего удобнее для банка не изобретено еще. Ах, да, еще ворд с экселем юзаю, они мне редко нужны, чтобы какой-нибудь док открыть, не ставить же офисы ради этого.
    Плюс эти приложения не засирают систему, в отличие от всего прочего.
    Так что зря вы так про них.
    Кстати, скрипт прям удаляет наглушняк или просто скрывает, как всегда? Если нового юзера завести, приложения у него появятся?


    1. Wesha
      25.01.2018 23:51

      Groove -музыка прямо из облака, не занимая гигабайты ссд

      Люблю таких вот жизнерадостных товарищей. Потом у них либо пропадает интернет, либо дядя перестаёт поддерживать облачный сервис, и тут-то и начинаются визги — "А где моя музыка???"


      1. dmitry_dvm
        26.01.2018 00:02

        Облачный сервис платный, там у дяди другой уровень ответственности. Внезапно никто ничего не отключит. В случае же отключения интернета бывает намного больше реальных неудобств, нежели недоступность музычки, поэтому имеется резервный канал. Плюс там есть автономный режим, любой альбом можно закэшировать. А, вот интересный вопрос, как часто у вас бывают фатальные отключения инета, чтобы это было фактором в пользу хранения сотен гигов локально? А что будете делать, если винт однажды не зашуршит?


        1. Wesha
          26.01.2018 00:06

          Облачный сервис платный, там у дяди другой уровень ответственности.

          Проблема не в дяде в Микрософте, а в пьяных монтёрах, которые оптику у меня в подъезде перерубили.


          А что будете делать, если винт однажды не зашуршит?

          RAIDZ2 неоднократно спасал отца русской демократии.


          1. dmitry_dvm
            26.01.2018 00:22

            Предполагаю, что RAIDZ2 в современный ноут с одним ссд не вкорячить.


            1. Wesha
              26.01.2018 00:39

              RAIDZ великолепно работает с внешними USB-дисками, причём особенно отлично справляется с подключением-отключением таковых: выдернул провод — работает на внутреннем, подключил провод — распознала и принялась в фоне инкрементально синхронизировать на него на него изменения состояния с момента его отключения.


              1. Taciturn
                26.01.2018 01:07

                А как именно заставить работать RAIDZ в Windows 10?


                1. Wesha
                  26.01.2018 01:29

                  Windows 8/10 отлично работает с сетевыми дисками. www.freenas.org


                  1. Taciturn
                    26.01.2018 01:32

                    Т.е. носим вместе ноутбук + NAS. Ясно, понятно.


                    1. Wesha
                      26.01.2018 01:35

                      К NAS можно обращаться через эти ваши интернеты.

                      А некоторые вообще языком умываются ставят себе на ноутбук FreeBSD и не выёкаблучиваются.


                      1. Usmekhaiouschiysia
                        26.01.2018 09:16

                        Т.е. не доверяем облаку, потому что когда отрубится инет, оно пропадёт, но доверяем своему NAS, к которому обращаемся по инету. Логика.


                        1. Wesha
                          26.01.2018 09:23

                          Я написал, чему я доверяю, а мне "не хочу фряху, хочу форточки". ССЗБ, короче.


                          1. Usmekhaiouschiysia
                            26.01.2018 09:25

                            Да, вы сами себе злой буратинка, если не видите, что ветка с самого начала о мобильных устройствах.


                            1. nehrung
                              26.01.2018 20:37

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


                    1. omgiafs
                      26.01.2018 07:44

                      Я сделал проще. Ampach на свой NAS. А на NASе кто как хочет, так и извращается — RAID, AUFS и прочие замороки.
                      На мобильных платформах слушаю через приложения.

                      Разделяйте проблему на доступность данных и на канал доступа.
                      Инет в России (в подъезде) отрубили — не будет вам Дизеров, и данных не будет.
                      А если данные у вас, то от вас они никуда не денутся (зависит от уровня резервирования).


                      1. Wesha
                        26.01.2018 09:22

                        А если данные у вас, то от вас они никуда не денутся (зависит от уровня резервирования).

                        Вот и я как раз про это!


                        1. dmitry_dvm
                          26.01.2018 10:17

                          Да будь у вас дома хоть три рейда, облако всё равно надежней. От облака вас может отрезать только обрыв инета (временно), а от потери данных дома множество факторов, начиная от скачка напряжения и глюка рейда до наводнений и пожаров.
                          Да о чем мы вообще спорим, отказоустойчивые массивы жрущие электричество, гудящие и ради музычки(!). Ну ок, ваш выбор.


          1. profesor08
            26.01.2018 01:25

            В таком случае проще держать локально сотню другую музыкальных треков на флешке и не *** себе мозг вопросами «а вдруг». От всего, что может произойти не защититься, тем самым каждый определяет самые критичные для себя моменты и решает вопрос в индивидуальном, удобным для себя способом.


            1. Lennonenko
              28.01.2018 21:24

              если ваши вкусы ограничиваются сотней-другой треков, то, проще как раз на гуглдиск (icloud) всё положить и не париться
              хранить на флэшке можно только либо ненужную, либо забэкапленую информацию


          1. evgenWebm
            26.01.2018 12:27

            RAIDZ2 неоднократно спасал отца русской демократии.

            А вместо мухобойки вы применяете динамит?


        1. crazylh
          26.01.2018 07:37

          У вас очень странное представление о ведении бизнеса. Ничто не мешает владельцу признать ваше облако нерентабельным и закрыть.


          1. Usmekhaiouschiysia
            26.01.2018 09:17
            +1

            Обязательства. Из-за которых при закрытии облаков они ещё некоторое время доступны и работают, что позволяет сменить сервис.


            1. crazylh
              26.01.2018 16:34
              +1

              Покажите пожалуйста хоть одну EULA где про это написано? Везде пишут "сервис предоставляется как есть, без каких либо гарантий. Все риски и ущерб от использования сервисом принимает на себя пользователь".


              1. Wesha
                26.01.2018 19:40

                Usmekhaiouschiysia не читатель,Usmekhaiouschiysia писатель.


      1. ElectroGuard
        28.01.2018 00:04

        Я в последнее время почти перестал 'свою музыку' слушать. Нашел десяток хороших онлайн трансляций (из многих тысяч) и, бывает, слушаю онлайн. Интернет отключат? Музыка будет самой малой печалью.


    1. Massacre
      26.01.2018 02:47

      Ну так логично же, это скрипт для ПК. Пусть планшетно-телефонные приложения используются там, где им и положено. Впрочем, есть ещё более радикальный метод, установить Win7 :)


      1. Kobalt_x
        26.01.2018 08:09

        Windbg новая бета версия которого metro приложение тоже только для планшетов/ноутов?


        1. Massacre
          26.01.2018 20:34

          Скорее, для программистов UWP приложений. Правда, я не понимаю, как оно будет работать, ведь настоящее UWP ж в своей песочнице только может? Что-то гибридное?


          1. Kobalt_x
            27.01.2018 13:39

            не, не, не дэвид-блейн нативщину и ядерную отладку оно поддерживает, плюс фича ttd явно ориентированная не на разработчиков uwp приложений


      1. Mi7teR
        26.01.2018 09:11

        можно вообще не пользоваться компьютером — один из самых радикальных методов. Для пк есть сенсорные мониторы, в этом случае эти приложения внезапно становятся удобными.


      1. dmitry_dvm
        26.01.2018 10:12

        Ну в мире, где приемлема W7 всё это, конечно, не актуально, как и UWP-приложения. А в моем мире у меня отличный ноутбук-трансформер с сенсорным экраном, на котором универсальные приложения как глоток свежего воздуха.


        1. Massacre
          26.01.2018 20:39

          Я ж и упомянул планшетно-телефонные приложения — разумеется, на планшете (чем и является ноутбук-трансформер в положении без клавиатуры), им, как раз и место.

          Заодно, отвечая на комментарий выше — и как, удобно пользоваться сенсорными мониторами с диагональю 27"? Руки не устают?


  1. Sergey-S-Kovalev
    26.01.2018 07:44

    Пришлось делать выбор: либо писать скрипт полностью на PS, либо использую возможности командного интерпретатора (CMD), осуществить вызов отдельных операций из PS. Я выбрал второй вариант, в связи с чем, представленное решение состоит из двух файлов: основного скрипта (сохранить с любым именем *.cmd) и дополнительного (сохранить с именем RemoveAppxes.ps1).
    Не то что бы я не считал логичным вызывать из командного интерпретатора DISM и командлеты Powershell, но:
    echo Remove current Appxes for AllUsers
    powershell -Command Start-Process powershell -ArgumentList '-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File RemoveAppxes.ps1' -Verb RunAs
    вызывать на исполнение из CMD интерпретатор Powershell, что бы запустить Powershell для исполнения скрипта Powershell это какой то новый для меня уровень вложенности. Не говоря уже о том, что конструкция
    Get-AppxPackage -AllUsers | Remove-AppxPackage
    удаляет далеко не все.


    1. Ostan Автор
      26.01.2018 09:15

      Про автоподнятие прав в PS в курсе? В статье объяснено почему такой «хитрый» способ. Предложи способ (скрипт), который удаляет всё.


      1. Sergey-S-Kovalev
        26.01.2018 13:23

        Ей богу не хотел писать полотенце, но Вы фамильярны и грубоваты.

        Я прокомментирую удаление в работающей системе, c WIM не тестировал, не вижу смысла.

        Про автоподнятие прав в PS в курсе?
        А можно ссылку на официальный мануал? Напомню, актуальная версия Powershell — 5.1+
        В статье объяснено почему такой «хитрый» способ.
        А Вы сами то соблаговолили протестировать? Я соблаговолил. И на выходе один и тот же результат. После выполнения Вашего скрипта остается 31 appx, и после выполнения
        Get-AppxPackage -AllUsers | Remove-AppxPackage -Confirm:$False -Verbose
        через
        powershell.exe -ExecutionPolicy Bypass -NoProfile -File Remove-AppxPackage.ps1
        остается 31 апп. Т.е. разницы вообще никакой. Даже статья Дарьи (где кстати тоже указывается «хитрый» способ) Удаление/восстановление Metro-приложений в Windows 10, где очень подробно разжёвано не приводит к другому результату, но там хоть рассказывается как починить.
        Предложи способ (скрипт), который удаляет всё.
        Даже в обычном случае, по моему скромному мнению удаляется слишком много. Это где то да аукнется.

        Дабы развить свою мысль добавлю, что выполнение из CMD сильно ограничивает Вас в захвате и обработке исключений, не говоря уже о том, что скрипт не проверяет включен ли UAC, и если не запустить его сразу с повышенными привилегиями, то он делает вид, что работает, а на выходе (ни)фига. Т.е. перепроверок нет.

        Защита которая легко обходится!
        Вы сидите в системе под правами локального администратора, и жалуетесь что можете что то поломать с помощью Powershell? Set-ExecutionPolicy, вроде, еще с 3ей версии Powershell уже не заставляет править права доступа что бы выполнять скрипты на локальной системе. Под правами пользователя Ваша магия «автоподнятия прав» не работает. Это как жаловаться, что ножны от ножика не защищают. Вы сами вынули ножик, наделали в себе дырок, и теперь оказывается ножик с чехлом не правильные. Смешно, ей богу.


        1. Ostan Автор
          26.01.2018 15:04

          Давайте разбираться. Отвечу по пунктам.

          Про автоподнятие прав в PS в курсе?
          А можно ссылку на официальный мануал? Напомню, актуальная версия Powershell — 5.1+
          Ссылки не будет — в Интернете полно информации о способах повышения прав для скрипта PS в самом скрипте (автоподнятие прав). Мне пришлось искать способ, потому что иначе не работало. А что, в PS 5.1 не нужно повышать права для выполнения некоторых операций? К тому же, в дистрибутивах Windows 8, 8.1, 10 изначально PS не последней версии. Таким образом чтобы использовать в скрипте PS «фишки» из версии 5.1+ нужно её предварительно установить.
          А Вы сами то соблаговолили протестировать? Я соблаговолил. И на выходе один и тот же результат. После выполнения Вашего скрипта остается 31 appx
          Я тестировал скрипт на Windows 8.1 и у меня оставалось 2-3 (точно не помню) приложения appx, а Вы похоже тестируете на Windows 10 (тот, который для домохозяек) и остаётся 31 appx. Я использую Windows 10 LTSB в котором нет универсальных приложений. Значительная часть «мусора» в 10-ке всё же удаляется моим скриптом и это уже хорошо.
          выполнение из CMD сильно ограничивает Вас в захвате и обработке исключений, не говоря уже о том, что скрипт не проверяет включен ли UAC, и если не запустить его сразу с повышенными привилегиями, то он делает вид, что работает, а на выходе (ни)фига. Т.е. перепроверок нет.
          Да, так и есть. В предыдущей статье к скрипту по отключению компонентов Windows Я указывал, что нужно запускать с отключенным UAC и с правами Администратора, а в этой статье эту информацию не указал. У меня UAC отключён «пожизненно» поэтому я не имею проблем с запуском, которые могут быть у других.
          Это как жаловаться, что ножны от ножика не защищают. Вы сами вынули ножик, наделали в себе дырок, и теперь оказывается ножик с чехлом не правильные. Смешно, ей богу.
          Нет, неправильно! Если говорить аллегориями, то мне нужен ножик без ножн, которым Я могу размахивать во все стороны. А вместо этого компания MS предлагает мне ножик в ножнах, который чтобы достать, нужно приложить усилие. Мне не нужна их «детская» защита для PS в виде Execution Protect.


          1. Sergey-S-Kovalev
            26.01.2018 21:31

            Ну давайте разбираться, я всегда за конструктивный диалог.

            Ссылки не будет
            Ни на секунду не имел в этом сомнений, просто потому что вижу, что нет у Вас понимания как это работает… а одна из причин — потому что у Вас отключен UAC.
            К тому же, в дистрибутивах Windows 8, 8.1, 10 изначально PS не последней версии.
            На момент выхода Windows 8 актуальной версией была 4я, вместе в Windows 10 релизнулась 5я. Соответственно там всегда последняя версия был на момент релиза. В текущей Win10 v1709 PS как раз последней возможной версии.
            чтобы использовать в скрипте PS «фишки» из версии 5.1+
            Вы не используете возможности 5той версии, но даже это не повод обновлять PS, если Вы его используете.
            (тот, который для домохозяек)
            Ничем не подкрепленное, голословное утверждение. Я взял стоковый WIM от Win10-Pro-x64-1709, поскольку его не было в WDS, сделал вжух (Import-WdsInstallImage), нажал F12 и пока ходил за кофе получил виртуальную тестовую среду. После залития всех апдейтов там 99 штук appx, и все мегаскрипты оставляют ровно 31.
            Windows 10 LTSB
            Там 16 appx и они не удаляются. Ваш скрипит применять к нему бесполезно. Пользоваться Win8/8.1 при наличии Win10 моветон, телеметрию льют одинаково, юзабилити как земля и небо.
            У меня UAC отключён «пожизненно» поэтому я не имею проблем с запуском
            Двумя десятками строк выше в Вашем комментарии: "Мне пришлось искать способ, потому что иначе не работало.". Видимо отключение UAC Вам проблем таки добавило, а не убавило.

            Мне не нужна их «детская» защита для PS в виде Execution Protect.
            Если Вы не следите за новостями я Вам подскажу, что CMD скоро не станет, его заменит PS. Можете начинать тренироваться помещать все Ваши BAT/CMD в мусорную корзину.


            1. Ostan Автор
              26.01.2018 22:09

              Продолжим

              Ни на секунду не имел в этом сомнений, просто потому что вижу, что нет у Вас понимания как это работает… а одна из причин — потому что у Вас отключен UAC.
              Сейчас мне и не нужно понимание тонкостей PS. Я себе поставил задачу и решил её известным мне способом (CMD). Судя из Ваших намёков отключение UAC и автоподнятие прав в PS как-то связаны?
              После залития всех апдейтов там 99 штук appx, и все мегаскрипты оставляют ровно 31.
              Здесь хоть ко мне претензии нет, раз у всех остаётся 31 appx?
              Пользоваться Win8/8.1 при наличии Win10 моветон, телеметрию льют одинаково, юзабилити как земля и небо.
              Я «дважды моветон» — до сих пор для личных нужд пользуюсь Windows 7. Подумываю уйти на Linux…
              Если Вы не следите за новостями я Вам подскажу, что CMD скоро не станет, его заменит PS. Можете начинать тренироваться помещать все Ваши BAT/CMD в мусорную корзину.
              Ой горе то какое!

              А теперь Я задам вопрос:
              Вся наша ветвь дискуссии похожа на то, что Я как ученик/подчинённый оправдываюсь перед преподавателем/начальником за то что плохо выполнил свою работу. Вы как адепт PS пытаетесь убедить меня использовать этот инструмент. Заглянул к Вам профиль и увидел одну несчастную статью по 1С.
              Что же вы сами не напишете какой-нибудь полезный широкой публике скрипт на любимом PS и не выложите его здесь? Блесните умом, покажите на что Вы способны!


              1. Sergey-S-Kovalev
                27.01.2018 09:41

                не нужно понимание тонкостей PS
                а это не тонкость работы PS. Это особенность работы UAC, который можно ослабить, но невозможно отключить. Именно поэтому Вам приходится решать «непонятную» проблему первым работающим кодом из интернетов. При явно включенном UAC, вы просто учитываете этот нюанс при разработке скриптов изначально.
                Здесь хоть ко мне претензии нет, раз у всех остаётся 31 appx?
                Если взять мой первый пост в ветке, я просто высказался, что нелогично задействовать CMD+DISM+PS, когда можно сделать все это в PS. Код будет нагляднее, его проще поддерживать и развивать. Вы подаете будущим специалистам дурной пример.
                Подумываю уйти на Linux
                Поставить что бы в интернеты ходить или администрировать сервера и сервисы? Разница то огромная.
                Ой горе то какое!
                Было бы горе, кстати, огромное. Но вот в январе опровержение вышло в блогах мелкомягких.
                плохо выполнил свою работу
                На Вас озарение снизошло, или Вы случайно это написали? :)
                Заглянул к Вам профиль и увидел одну несчастную статью по 1С.
                Покажите мне статью, которая проще и легче автоматизирует указанный в статье процесс на 200+ организаций и я пожалуй подумаю над написанием автоматизации на PS.
                полезный широкой публике скрипт на любимом PS и не выложите его здесь?
                У меня есть решения, которым нет аналогов на хабре в плане качества реализации, но эти решения еще растут, в них ловятся ошибки, они оптимизируются. Как будут готовы, я конечно же их представлю на суд общественности.
                Уверен, что это будет законченное решение, в которое меня носом тыкать потом не будут :)))


                1. Ostan Автор
                  27.01.2018 10:21
                  -1

                  Я не заказывал «аудиторскую проверку» своего кода. Меня мой код устраивает. Хватит меня поучать, ты мне надоел! Что-то твои «идеальные» решения на PS долго зреют, если отсчитывать от последнего (и единственного) твоего поста по 1С в 2015 году. Умом блеснёшь когда будет результат — твой пост с кодом. А так «п***ть, не мешки ворочать».


            1. Massacre
              26.01.2018 22:29
              +1

              CMD скоро не станет, его заменит PS.

              Что, действительно? А как же обратная совместимость?


              1. Sergey-S-Kovalev
                27.01.2018 09:05

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


  1. AikoKirino
    26.01.2018 09:15
    -2

    А можно установить LTSB релиз и ничего не нужно удалять.
    К тому же апдейты там в основном секьюрные и не потребуют сильно много трафика.


    1. Ostan Автор
      26.01.2018 09:18
      -1

      Установи и посмотри, что в Windows 10 LTSB тоже присутствуют универсальные приложения.


    1. zirix
      26.01.2018 14:35

      Его могут только компании купить, частным лицам его не продают.


      1. YuriM1983
        26.01.2018 19:31

        Даже специально решил посмотреть ваш профиль: что за страна, где такие проблемы у людей… Всё оказалось логично.


        1. Ostan Автор
          26.01.2018 20:14

          Да, несчастные люди! Всё приходится покупать. Главное чтоб деньги были.


          1. YuriM1983
            26.01.2018 22:37

            Интересно, и как вы купите LTSB будучи физ лицом?


            1. Ostan Автор
              26.01.2018 22:50

              Ладно, человек которому Я ответил был из Германии. Ну вы то из России, али в Москве тоже денег не мерено?


    1. Ostan Автор
      26.01.2018 15:07

      Я ошибся! Да, действительно в дистрибутиве Windows 10 LTSB нет универсальных приложений. Но скрипт также предназначен и для Windows 8, где универсальные приложения присутствуют, а версии LTSB не существует.


  1. evgeny_alekseyew
    26.01.2018 10:34
    -1

    Get-AppxPackage -AllUsers | Remove-AppxPackage
    Get-AppXProvisionedPackage -Online | Remove-AppxProvisionedPackage -Online
    ___
    Запускать в PS от администратора. 1 минута на всё


    1. Ostan Автор
      26.01.2018 10:41

      Неа! Запуск от имени Администратора не даст результата. Нужно поднятие прав.
      А ещё нужно чтобы скрипт выполнял работу над автономным образом — файлом install.wim. Сможешь?


      1. evgeny_alekseyew
        26.01.2018 10:43

        Боюсь, вы меня неправильно поняли. Эти 2 волшебные команды применяю на свежеустановленной системе. Не вижу смысла рыться в установочном образе ОС, если задача удаления встроенного ПО занимает менее минуты.


        1. Ostan Автор
          26.01.2018 10:56

          Смысл в том, чтобы уменьшить размер образа — это раз! После установки ОС, удаление установившихся универсальных приложений и их дистрибутивов занимает время — это два! Необходимость после каждой установки что-то запускать снижает автоматизацию — это три!


      1. Hikedaya
        26.01.2018 10:49

        По поводу автономного файла:
        Mount-WindowsImage + RemoveAppxPackage -path %FOLDER_NAME%


        1. Ostan Автор
          26.01.2018 11:04

          Mount-WindowsImage + RemoveAppxPackage -path %FOLDER_NAME%
          — «Совершенный Код».
          Напиши готовый скрипт на PS, который делает тоже что и мой на CMD и выложи здесь и будет тебе хвала! Я в PS не силён (да и не нравится он мне), поэтому и выбрал CMD.


          1. Hikedaya
            26.01.2018 12:37

            У меня не было цели написать готовое решение, я лишь ответил на вопрос, как работать с автономными образами. Тем не менее, спасибо за задачу, будет время — попробую переложить ваш cmd на powershell.


  1. forcam
    26.01.2018 12:56
    +1

    Я не нашел ничего полезного, поэтому и написал скрипт, который удаляет их все

    Вы точно уверены что ваши действия не подпадают под нарушение 4х законов УК РФ?
    А то, тут народ недавно спросил у Майкрософта как им отключить автообновления в Windows 10, так им прямо указали на нарушение законов и на то, что за такое отключение можно горько поплатиться (штраф до 200к рублей + административка, если не путаю), а уж удаление предустановленных приложений это совсем кощунство может оказаться, судя повсему :)
    Если интересно:
    answers.microsoft.com/ru-ru/windows/forum/windows_10-update-winpc/%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82/b15b8831-845e-4d1d-814d-106d11d7264a?auth=1

    Ваши действия по отключению автоматического обновления, что прямо запрещено статьями 1229 и 1235 Федерального Закона 230-ФЗ «Гражданский кодекс Российской Федерации», квалифицируются Законодательством как незаконное использование программного обеспечения, со всеми вытекающими из этого юридическими последствиями, предусмотренными статьёй 7.12 Федерального Закона 195-ФЗ Кодекс Российской Федерации «Об административных правонарушениях», статьями 1252, 1301 Федерального Закона 230-ФЗ «Гражданский кодекс Российской Федерации», и 2-й и 3-й частями статьи 146 Федерального Закона 63-ФЗ «Уголовный Кодекс Российской Федерации»...


    1. dmitry_dvm
      26.01.2018 13:19

      Вы там не увидели или не захотели увидеть, что это ответ на удаленное сообщение, а не на вопрос топикстартера? Это же касается Ostan. Вроде взрослые люди, не первый раз в интернете.


      1. forcam
        26.01.2018 22:11

        Не важно каким было перед этим сообщением, важно каков был ответ. Отключение автомотаческого обновление невозможно сделать стардартно (оно все равно включится), по этой причине придется производить дополнительные действия, которые и будут отнесены к модификации ПО. Из этого следует, что любой отключивший, является нарушителем всех описанных законов. Поэтому абсолютно не важно кто и что писал до этого, важен сам факт того, что, пусть и в теории, но с вас могут стрести 1-2 сотенки и пусть не баксов, а каких-то тысяч рублей, но за ваше же удобство. И к слову, все пользователи добровольно согласились на предоставление почти любой информации, поэтому то, что именно вы отключили и где именно вас найти — они будут знать точно :) (то что кнопочек в винде по отключению нарисовали, а в соглашение добавить забыли — никто и не заметил, по этой причине кнопочки, то бутофорские :)) Дела в компании идут не очень и то, что пользователей не завалят исками, что бы поправить дела — я бы не исключал, ведь в глазах общества они будут почти хакерами :) каков % пользователь знает как и зачем отключать автообновления? 0,01?)


        1. Massacre
          26.01.2018 22:34

          А за блокирования серверов обновления и телеметрии Windows средствами стороннего файервола теперь тоже сажать будут?

          В общем, мне жаль тех, кто сознательно перешёл на Win10.


          1. forcam
            27.01.2018 18:48

            чуть ниже ответил на комент, ответ тот же.
            Отключение обновлений, запрещено лицензионным соглашением.


            1. Lennonenko
              28.01.2018 21:41

              нет


        1. dmitry_dvm
          26.01.2018 23:37

          Вот, честно говоря, лицензию не читал, как и большинство, но думаю, в том каменте была речь об отключении обновления какими-нибудь патчами в Home. Потому что на Pro можно отключить обновления одним дропдауном в политиках и я уверен про это в лицензии ни слова. Так что хотите удобств — покупайте Pro. По мне так даже и хорошо, что в версии для домохозяек у домохозяек урезаны права.
          Вы тоже из тех, кто отключает обновления?


          1. forcam
            27.01.2018 18:47

            так вы почитайте, что второй модер пишет)

            "… Принимая условия настоящего соглашения, вы даете согласие на получение автоматических обновлений такого типа без каких-либо дополнительных уведомлений.

            ..."

            Поэтому отключать автоматическое обновление нельзя. Это запрещено лицензионным соглашением.

            То есть, единственный способ не получать обновлений, это отказаться от использования Windows 10.


            1. Kobalt_x
              27.01.2018 20:37

              Ну отключение на не продуктах Microsoft доступа к windows update серверам не является нарушением лицензионного соглашения


              1. forcam
                28.01.2018 04:59

                Только в случае если это сделано не намеренно, потому что если намеренно, то пользователь умышленно препятствует обновлению, что является нарушением.


            1. Lennonenko
              28.01.2018 21:44

              это тупые совковые модеры производят чушь в промышленных масштабах
              приведённый пункт EULA не обязывает пользователя принимать обновления и не запрещает ему блокировать получение этих обновлений, а всего лишь прописывает юридическую отмазку для изготовителя от пользователей «ааа, ваша винда у меня 4 гига трафика сожрала в роуминге!!!»


  1. Ostan Автор
    26.01.2018 13:03

    Спасибо за ссылку — почитал, посмеялся. В последние годы Я всё больше убеждаюсь, что компания Microsoft «идёт не туда».


  1. UksusoFF
    26.01.2018 13:30

    Так вот же https://github.com/W4RH4WK/Debloat-Windows-10
    В чем разница?


    1. Sergey-S-Kovalev
      26.01.2018 13:51

      Скрипт на гитхабе не херит кучу библиотек. После него остается 92 appx, а не 31 как в случае с скриптом в топике. По ощущениями сносит все что не мелкомягкое.


    1. Ostan Автор
      26.01.2018 15:13

      Очевидно же! Там полностью написано на PS и только для Windows 10. У меня скрипт на CMD и для версий начиная с Windows 8. Спасибо за ссылку, будет время — ознакомлюсь.
      Программирование не детерминированный процесс, а это значит что одна и та же задача может быть решена разными способами, с использованием разных технологий.


  1. pvs043
    26.01.2018 19:23

    Уважаемые хабровчане!

    Не мог пройти мимо этой статьи, так как занимаюсь подготовкой «золотых» образов Windows уже 4 года.
    Разберем некоторые цитаты:

    Среди предустановленных универсальных приложений лично Я не нашел ничего полезного, поэтому и написал скрипт, который удаляет их все.
    А как же Microsoft.BingWeather или например Windows.Photos? Нужен список для удаления.
    У меня скрипт на CMD и для версий начиная с Windows 8.
    Скажу по-секрету, что начиная с Windows 8.1 эту задачу уже решили уважаемые сотрудники и партнеры Microsoft. 4(!) года назад:
    Removing Windows 8.1 Built-in Applications
    Removing Windows 10 in-box apps during a task sequence
    Updated Remove Apps Script, and a Workaround
    Я в PS не силён (да и не нравится он мне), поэтому и выбрал CMD.
    CMD=DOS, VBS=WinXP, PowerShell 5.1=Win7+, PowerShell 6.0=Win+Linux+MacOS (PowerShell Core 6.0: Generally Available (GA) and Supported!)
    Ostan, у Вас какая OS?
    У меня UAC отключён «пожизненно» поэтому я не имею проблем с запуском, которые могут быть у других.
    Без комментриев. Проблем с запуском вирусни и прочих майнеров действительно нет.

    Коллеги, не спешите сразу же выполнять
    готовое решение, которое можно без доработок применять в работе
    Подготовка эталонного образа Windows требует множества шагов, которые подробно описаны в официальных источниках. Другое дело, что читать (да еще и на английском) лень :)
    Мой проект, используемый в Production: MDT Build Factory. Начните с прочтения Списка литературы


    1. Taciturn
      26.01.2018 20:12

      Но ведь cmd не запускается в DOS, а в XP есть PowerShell 2.0. Или 7=PowerShell 2.0, если рассматривать ОС без обновлений.

      Проблем с запуском вирусни и прочих майнеров действительно нет.

      Ясное дело, им же права не нужны, они что с UAC'ом, что без, прекрасно работают.


    1. Ostan Автор
      26.01.2018 22:36

      Отвечу по цитатам

      А как же Microsoft.BingWeather или например Windows.Photos? Нужен список для удаления.
      Я же сказал: «Скрипач не нужен». Нужно — делайте!
      Скажу по-секрету, что начиная с Windows 8.1 эту задачу уже решили уважаемые сотрудники и партнеры Microsoft. 4(!) года назад:
      Отвечу по секрету: у меня автономное решение, а там: «The script is designed to work as part of an MDT or Configuration Manager task sequence.» (рус. «Сценарий предназначен для работы как часть последовательности задач MDT или Configuration Manager»).
      CMD=DOS, VBS=WinXP, PowerShell 5.1=Win7+, PowerShell 6.0=Win+Linux+MacOS
      — интересная математика. Ясно, ещё один рекламщик PS.
      Без комментриев. Проблем с запуском вирусни и прочих майнеров действительно нет.
      Смех! Вот представь образы двух людей: один программист, обладает достаточными знаниями чтобы написать данный скрипт, а другой — тупой пользователь, который клацает и запускает всё подряд, компьютер которого «кишит» вирусами и майнерами. А теперь мысленно совмести эти два образа в одном человеке. Получилось? Думаю что нет!
      Подготовка эталонного образа Windows требует множества шагов, которые подробно описаны в официальных источниках. Другое дело, что читать (да еще и на английском) лень :)
      — слушайте грамотного человека! Я ото «болван» сидю тута, аглицками йазыками не владеюча, по клавам навгад стукау, а оно бац! и само заработало. Отама вон вумный человек для продакшуна чятыре годка (пятый пошол) сборку делает, десять звёздочок на гытхабу собравши.


    1. VitalKoshalew
      27.01.2018 08:05

      Замечу безотносительно статьи, что не существует продукта «PowerShell 6.0». Существует отдельный сырой PowerShell Core, первую GA версию которого назвали «6.0». Заменой PowerShell это не является хотя бы потому, что не реализован модуль ActiveDirectory.


  1. Taciturn
    26.01.2018 20:11

    Не туда.


  1. pvs043
    27.01.2018 10:10
    -1

    у меня автономное решение, а там: «The script is designed to work as part of an MDT or Configuration Manager task sequence.»
    А посмотреть содержимое лень конечно? :)
    Обычный скрипт, который использует Remove-AppxProvisionedPackage и Remove-AppxPackage, но при этом умеет работать с онлайн/оффлайн образом и удаляет только явно заданные в конфиге приложения.


    1. Ostan Автор
      27.01.2018 10:25
      -1

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