Windows 10 поставляется с набором предустановленных современных (Modern) UWP приложений (ранее они назывались Metro Apps или APPX). Это Калькулятор, Календарь, Почта, Кортана, Карты, Новости, OneNote, Groove Music Камера и т.д. UWP приложения Windows 10 автоматически в профиль пользователя устанавливаются при первом входе в систему. Большинстве из этих приложения не нужны бизнес пользователям, поэтому их обычно требуют удалить. В этой статье мы рассмотрим, как правильно удалить встроенные UWP/APPX приложения в Windows 10, что позволит сохранить дополнительное место на системном диске и уберет ненужные элементы в стартовом меню.
Удаление UWP приложений из меню Параметры Windows 10
Самый очевидный способ удалить современное приложение в Windows 10 – воспользоваться новой панелью управления Параметры. Для этого нажмите кнопку Пуск и перейдите в раздел Settings -> Apps -> Apps and features (Параметры -> Приложения -> Приложения и возможности). В списке программ найдите и выберите приложение, которое нужно удалить. Нажмите кнопку Uninstall (Удалить).
Таким образом вы удалили UWP приложение только в профиле текущего пользователя. При входе любого другого нового пользователя, appx приложение автоматически установится из системного хранилища.
Кроме того, обратите внимание, что у большинства предустановленных современных приложений просто недоступна кнопка Uninstall.
Удалить такие системные приложения Windows 10 можно только с помощью командной строки Powershell.
Как удалить определенное UWP приложение в Windows 10 из PoweShell?
Рассмотрим, как удалить конкретное UWP приложение в Windows 10 с помощью PowerShell. Обратите внимание, что в Windows 10 есть два типа приложений:
- AppX packages – UWP приложения, которые установлены для текущего пользователя Windows 10
- AppX provisioned packages — встроенные Windows 10 приложения, которые устанавливаются при первом входе пользователя в систему
Запустите консоль PowerShell с правами администратора. Следующая команда выведет список современных приложений, установленных для вашего аккаунта:
Get-AppxPackage | select Name,PackageFullName,NonRemovable
Если вы удалил приложение из графического интерфейса Windows 10, оно пропадет из этого списка.
Вы можете вывести список установленных приложений для всех пользователей. В этом случае команда будет выглядеть так:
Get-AppxPackage -AllUsers | select Name,PackageFullName,NonRemovable
Get-AppxPackage –AllUsers>c:\ps\windows10apps.txt
Чтобы найти приложение по имени, используйте такую команду (в этом примере мы ищем приложение BingWeather):
Get-AppxPackage -AllUsers | select Name,PackageFullName,NonRemovable | where-object {$_.Name -like "*Weather*"} | Format-Table
Для удаления конкретного appx приложения для текущего пользователя, вам нужно скопировать название пакета из столбца PackageFullName (полное имя пакета) и вставить его в команду Remove-AppxPackage:
Remove-AppxPackage Microsoft.BingWeather_4.25.20211.0_x64__8wekyb3d8bbwe
Команда удалила приложение только для текущего пользователя. Чтобы удалить приложение у всех пользователей компьютера, используйте параметр –AllUsers:
Remove-AppxPackage -AllUsers Microsoft.BingWeather_4.25.20211.0_x64__8wekyb3d8bbwe
Или так:
Get-AppxPackage * BingWeather * -AllUsers| Remove-AppPackage –AllUsers
При таком удалении приложения оно все еще остается в системе в состоянии Staged (и хранится на диске в каталоге C:\Program Files\WindowsApps). Состояние Staged, означает, что приложение будет устанавливаться для каждой новой учетной записи на этом компьютере.
Теперь посмотрим на список Staged приложений, которые встроены в образ Windows и автоматически устанавливаются всем пользователям при первом входе на компьютер:
Get-AppxProvisionedPackage -online |select DisplayName,PackageName
Чтобы полностью удалить определенное UWP приложение из образа Windows 10, нужно указать его имя в команде Remove-AppxProvisionedPackage:
Get-AppxProvisionedPackage -online | where-object {$_.PackageName -like "*BingWeather*"} | Remove-AppxProvisionedPackage -online –Verbose
Теперь при входе нового пользователя Windows 10 это приложение не будет устанавливаться в его профиль.
Удаляем сразу все ненужные UWP приложения в Windows 10
Конечно, удалять встроенные приложения по одному – задача довольно утомительная. Вы можете использовать простой скрипт для автоматического удаления всех приложений.
Get-AppXProvisionedPackage -online | Remove-AppxProvisionedPackage -online
Не стоить удалять системные приложения, такие как Microsoft.VCLibs, Microsoft.NET.Native.Framework, Microsoft.NET.Native.Runtime, Microsoft.WindowsStore. То же Microsoft Photos при определенной настройке работает вполне быстро, но конечно не так удобно как классическое “Средство просмотра фотографий”.
При удалении магазин приложений Microsoft вы не сможете установить приложения из Windows Store. Впрочем, UWP приложения можно устанавливать и из командной строки при наличии appx файла (а вот здесь описан способ позволяющий получить установочный appx файл любого приложения Магазина Windows).
Кроме того, некоторые предустановленные UWP приложения в Windows, восстановить его довольно сложно. По ссылке доступна статья про восстановить Windows Store в Windows 10 после его удаления через PowerShell.
Создадим список приложений, которые нужно удалить:
$UWPApps = @(
"Microsoft.Microsoft3DViewer"
"Microsoft.MicrosoftOfficeHub"
"Microsoft.MicrosoftSolitaireCollection"
"Microsoft.MicrosoftStickyNotes"
"Microsoft.MixedReality.Portal"
"Microsoft.MSPaint"
"Microsoft.Office.OneNote"
"Microsoft.People"
"Microsoft.ScreenSketch"
"Microsoft.Wallet"
"Microsoft.SkypeApp"
"microsoft.windowscommunicationsapps"
"Microsoft.WindowsFeedbackHub"
"Microsoft.WindowsMaps"
"Microsoft.WindowsSoundRecorder"
"Microsoft.Xbox.TCUI"
"Microsoft.XboxApp"
"Microsoft.XboxGameOverlay"
"Microsoft.XboxGamingOverlay"
"Microsoft.XboxIdentityProvider"
"Microsoft.XboxSpeechToTextOverlay"
"Microsoft.YourPhone"
"Microsoft.ZuneMusic"
"Microsoft.ZuneVideo"
)
Теперь удалим эти приложения как в образе Windows 10, так и в профилях всех пользователей:
foreach ($UWPApp in $UWPApps) {
Get-AppxPackage -Name $UWPApp -AllUsers | Remove-AppxPackage
Get-AppXProvisionedPackage -Online | Where-Object DisplayName -eq $UWPApp | Remove-AppxProvisionedPackage -Online
}
Теперь проверьте список приложений, оставшихся в образе Windows. Список должен серьезно уменьшится:
Get-AppxProvisionedPackage -online |select displayname
Таким образом, все новые учетные записи будут создаваться без встроенных приложений Windows 10 (профили новых пользователей будут создаваться быстрее).
Также для удобства ручного удаления вы можете вывести список всех установленных приложений Widows 10 с помощью Out-GridView:
Get-AppxProvisionedPackage -online | Out-GridView -PassThru | Remove-AppxProvisionedPackage –online
Данный скрипт выведет графическую таблицу со списком provisioned приложений в образе Windows 10. Вам достаточно выделить приложения, которые нужно удалить (несколько строк можно выбрать, зажав ctrl) и нажать Ok.
Вы можете удалять встроенные приложения уже после деплоя Windows 10 на компьютеры (например с помощью запуска скрипта PowerShell через GPO и обязательной фильтрации по версии билда Windows 10 с помощью WMI фильтров). Однако можно удалить приложения из смонтированного офлайн образа Windows, который вы используете для деплоя на рабочие станции (предположим, путь к подключенному образу — c:\offline).
Команда будет такой:
foreach ($UWPApp in $UWPApps) {
Get-AppXProvisionedPackage –Path c:\offline | Where-Object DisplayName -eq $UWPApp | Remove-AppxProvisionedPackage –Path c:\offline
}
Если вам нужно переустановить удаленные приложения, можно воспользоваться командлетом Add-AppXPackage, который позволяет получить данные приложения из XML манифеста и зарегистрировать его в системе:
Get-AppxPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
Доброго дня а у меня вроде удаляются просто по имени напр:
Name : Microsoft.WindowsFeedbackHub
Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture : X64
ResourceId :
Version : 1.3.1741.0
PackageFullName : Microsoft.WindowsFeedbackHub_1.3.1741.0_x64__8wekyb3d8bbwe
удаляется-
Get-AppxPackage -allusers Microsoft.WindowsFeedbackHub | Remove-AppxPackage
Это после обновления? или они вернутся назад? из списка пропали вроде.
1. Get-AppxPackage –AllUsers>c:folder1modernapps.txt
ошибка.
PS C:WINDOWSsystem32> Get-AppxPackage -allusers>c:tempmodernapps.txt
Get-AppxPackage : Не удается найти параметр, соответствующий имени параметра «allusers>c».
— Get-AppxPackage -allusers «c:tempmodernapps.txt» или Get-AppxPackage -allusers»c:tempmodernapps.txt»
0 результата
2. Хотел на самом деле удалить определённые приложения которые в итоге не показало командой Get-AppxPackage
после Get-AppxPackage -AllUsers | Remove-AppxPackage
они остались (
А команда Get-AppxPackage -allusers
По прежнему выдаёт полный список.
win 10 pro сборка 1607 14393.693
В современных реалях надо выполнять две команды.
Get-AppXProvisionedPackage -online | Remove-AppxProvisionedPackage -online
Get-AppxPackage -AllUsers | Remove-AppxPackage
Ещё есть готовое решение для подобных целей от o&o. За статью спасибо.
Ручной выбор и удаление УЖЕ установленных UWP (APPX) приложений для ТЕКУЩЕГО пользователя
Get-AppxPackage | Where-Object {$_.NonRemovable -like «False» -and $_.Name -NotLike «*NET*» -and $_.Name -NotLike «*VCLibs*»} | Out-GridView -PassThru | Remove-AppPackage
Ручной выбор и удаление УЖЕ установленных UWP (APPX) приложений для ВСЕХ пользователей
Get-AppxPackage -AllUsers | Where-Object {$_.NonRemovable -like «False» -and $_.Name -NotLike «*NET*» -and $_.Name -NotLike «*VCLibs*»} | Out-GridView -PassThru | Remove-AppPackage -AllUsers
Ручной выбор и удаление UWP (APPX) встроенных в образ Windows приложений, которые устанавливаются каждому пользователю:
Get-AppxProvisionedPackage -online | Out-GridView -PassThru | Remove-AppxProvisionedPackage –online
Немного изменил синтаксис используя объектность языка на всю катушку.
$garbageappxs = @(
"PricelinePartnerNetwork.Booking.comBigsavingsonhot"
"C27EB4BA.DropboxOEM"
"Amazon.com.Amazon"
"7EE7776C.LinkedInforWindows"
"5A894077.McAfeeSecurity"
"A025C540.Yandex.Music"
# "Microsoft.Microsoft3DViewer"
"Microsoft.MicrosoftOfficeHub"
"Microsoft.MicrosoftSolitaireCollection"
"Microsoft.MicrosoftStickyNotes"
"Microsoft.MixedReality.Portal"
# "Microsoft.MSPaint"
"Microsoft.Office.Desktop"
"Microsoft.Office.OneNote"
"Microsoft.People"
# "Microsoft.ScreenSketch"
"Microsoft.Wallet"
"Microsoft.SkypeApp"
"microsoft.windowscommunicationsapps"
"Microsoft.WindowsFeedbackHub"
"Microsoft.WindowsMaps"
# "Microsoft.WindowsSoundRecorder"
"Microsoft.Xbox.TCUI"
"Microsoft.XboxApp"
"Microsoft.XboxGameOverlay"
"Microsoft.XboxGamingOverlay"
"Microsoft.XboxIdentityProvider"
"Microsoft.XboxSpeechToTextOverlay"
"Microsoft.YourPhone"
"Microsoft.ZuneMusic"
"Microsoft.ZuneVideo"
)
# Удалим установленные приложения у всех пользователей
$installedappxs = Get-AppxPackage -AllUsers | Select-Object -Property Name,PackageFullName
($installedappxs.Where({$_.Name -in $garbageappxs})).PackageFullName.ForEach({Remove-AppxPackage -AllUsers -Package $_ -ErrorAction SilentlyContinue})
# Удалим приложения из образа системы
#$provisionedappxs = Get-AppxProvisionedPackage -Online | Select-Object -Property DisplayName,PackageName
#($provisionedappxs.Where({$_.DisplayName -in $garbageappxs})).PackageName.ForEach({Remove-AppxProvisionedPackage -Online -AllUsers -PackageName $_ -ErrorAction SilentlyContinue})
приветствую.
вот в десятке работало —
powershell "Get-AppxProvisionedPackage -Online|? Name -Like '*Store*|*Native*|*VCLibs*'|Remove-AppxProvisionedPackage"
а в W11 просто ничего не происходит
Можно юзать powershell скрипт Sophia для удаления предустанвленных приложений в Win 10 и 11:
https://github.com/farag2/Sophia-Script-for-Windows
В целях изучения и набора опыта написал динамический скриптик
# Меню
function menu {
Write-Host "`nAppx приложения:" -ForegroundColor Red
$arrmain | Out-Host
write-host "Удалить данные appx?" -ForegroundColor Red
Write-Host "1. Yes" -ForegroundColor Green
Write-Host "2. Исключить из удаления(например лично установленные или необходимые)" -ForegroundColor Green
Write-Host "3. Exit" -ForegroundColor Green
$choice = Read-Host "Выберите пункт меню[Число]"
switch ($choice){
# Удаление appx
1{
$arrmain.object | ForEach-Object {
Get-AppxPackage -Name $_ -AllUsers | Remove-AppxPackage
Get-AppXProvisionedPackage -Online | Where-Object DisplayName -eq $_ | Remove-AppxProvisionedPackage -Online
}
}
2{
two
}
3{
break
}
}
}
# Исключение приложений из списка пользователем
function two {
[System.Array]$del = (Read-Host -Prompt "Введите номера строк через запятую") -split '\s*,\s*'
Clear-Host
foreach ($number in $del) {
if ($arrmain.number -like $number) {
[int]$i = $number
$arrmain = $arrmain.Where{$_.Number -ne $i}
Write-Host "№ $number удален из списка" -ForegroundColor yellow
}
else {
Write-Host "Error, № $number нет совпадений!!!" -ForegroundColor red
}
}
return menu
}
Clear-Host
# Фильтры
## Ключевые слова в приложениях, которые удалять не стоит
$notmatch = @('microsoft','intel','realtek')
## Ключевые слова в приложениях, которые можно удалить(Приложения с этими словами так же содержат слова из первого массива, поэтому создаём второй)
$match = @('xbox','zune','weather','onenote','people','yourphone','FeedbackHub','windowscommunicationsapps','WindowsMaps','Wallet','MicrosoftOfficeHub')
# Собственно сама фильтрация
[System.Array]$FilterEq = (Get-AppxPackage -allusers | Select-Object name,nonremovable | Where-Object { (-not $_.NonRemovable)}).name | Select-String $notmatch -NotMatch
[System.Array]$FilterNe = (Get-AppxPackage -allusers | Select-Object name,nonremovable | Where-Object { (-not $_.NonRemovable)}).name
[System.Array]$arr = @()
foreach ($something in $match) {
$arr += $FilterNe -match $something
}
$FilterEq = $FilterEq + $arr # Объединение двух массивов с разными фильтрами
# Присвоение индекса каждой строчке
[System.Array]$arrmain = @()
foreach ($_ in $FilterEq) {
$arrmain += [pscustomobject] @{
"Number" = $FilterEq.IndexOf($_)
"Object" = $_
}
}
menu
если я удалю большую часть для всех юзеров, забекаплю систему, то при будущем разворачивании эти приложения не должны вставать все с нуля, не так ли?
Имеете в виду снятие образа, а не бэкап?
Все правильно.
Но при установке следующего билда Windows 10 прилоежния могут приехать опять — тут как решит microsoft…
Здравствуйте. Не получается удалятор сунуть в startup-скрипты. Читаю в журнале:
«Параметры разрешений для конкретного приложения не дают разрешения Локально Запуск для приложения COM-сервера с CLSID
Windows.SecurityCenter.SecurityAppBroker
и APPID
Недоступно
пользователю NT AUTHORITY\СИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно). Это разрешение безопасности можно изменить с помощью средства администрирования служб компонентов.»
Такое же для Windows.SecurityCenter.WscBrokerManager. Выходит, нельзя при стартапе из под SYSTEM запустить, правильно понимаю?
При ручном запуске удаление работает нормально?
Запускаете через logon скрипт GPO или еще как-то?
Руками отрабатывает. Сам скрипт сделал буквально по кальке с вашего — сначала обьявляется массив, потом foreach и так далее. В качестве StartUp- и ShutDown-скрипта не работает. Проверял gpresult, пихал в скриптик иные команды (создание и редактирование файлов, например), которые без вопросов исполняются при старте машины. В Logon даже ставить не пробовал, потому что у заходящего пользователя не будет прав для удаления приложений. Пробовал также отложенный старт, всё равно не работает.
Всем привет!
Использую PowerShell 5.1 в Windows 10 Pro 21H2.
Получаю следующее:
обе команды
Get-AppxPackage -PackageTypeFilter Main, Bundle, Resource -AllUsers *ИмяПакета* | Remove-AppxPackage -AllUsers
или
Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -Like "*ИмяПакета*"} | Remove-AppxProvisionedPackage -Online –Verbose
дают одинаковый результат.
То есть при выполнении любой одной из команд приложение пропадает из списка
Get-AppxPackage -AllUsers | Select Name, PackageFullName
и из списка
Get-AppxProvisionedPackage -Online | Select DisplayName, PackageName
.Также это приложение удаляется из папки \Program Files\WindowsApps.
Судя по изложенному в данной статье такого быть не должно и каждая команда должна удалять приложение только из одного соответствующего списка, а из папки \Program Files\WindowsApps приложение должно удаляться только при использовании командлета Remove-AppxProvisionedPackage.
Или я чего-то не понимаю, или кто знает, плиз, поясните , где тут собака порылась)).
PowerShell начал осваивать недавно и пока учусь.
Заранее спасибо за разъяснение.
Забыл отметить уведомление по почте о комментах.))
Приветствую.
При выполнении скрипта вида Get-AppxPackage *BingWeather* -AllUsers | Remove-AppPackage –AllUsers
или приведенного в посте Леонида от 12.08.2021
Выдается ошибка вида:
PS C:\windows\system32> Get-AppxPackage *BingWeather* -AllUsers | Remove-AppPackage –AllUsers
Remove-AppPackage : Произошла ошибка из-за того, что пользователь вышел из системы.
Произошел сбой операции развертывания Remove с конечным томом C: для пакета Microsoft.BingWeather_4.53.43112.0_x64__8wekyb3d8bbwe из . Ошибка: 0x80073D19.
У кого ни будь получилось понять как это исправить?
ЗЫ Ошибка ошибкой, но пакеты таким способом удаляются из ОС.
ЗЫЫ Если из строки убрать один ключ -AllUsers (не важно откуда), то ошибки нет. Но и приложение работает и не удаляется.
Спасибо, помогли