You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.0 KiB
120 lines
4.0 KiB
2 years ago
|
Clear-Host
|
||
|
|
||
|
$apps = Get-AppxProvisionedPackage -Online
|
||
|
$apxs = Get-AppPackage -AllUsers
|
||
|
|
||
|
$store = "ms-windows-store://pdp/?ProductId="
|
||
|
|
||
|
$appcsv = @("name,id,skip
|
||
|
Microsoft.BingWeather,9WZDNCRFJ3Q2,0
|
||
|
Microsoft.GetHelp,9PKDZBMV1H3T,0
|
||
|
Microsoft.Getstarted,9WZDNCRDTBJJ,0
|
||
|
Microsoft.Microsoft3DViewer,9NBLGGH42THS,0
|
||
|
Microsoft.MicrosoftOfficeHub,9WZDNCRD29V9,0
|
||
|
Microsoft.MicrosoftSolitaireCollection,9WZDNCRFHWD2,0
|
||
|
Microsoft.MicrosoftStickyNotes,9NBLGGH4QGHW,0
|
||
|
Microsoft.MixedReality.Portal,9NG1H8B3ZC7M,0
|
||
|
Microsoft.MSPaint,9PCFS5B6T72H,0
|
||
|
Microsoft.Office.OneNote,9WZDNCRFHVJL,0
|
||
|
Microsoft.People,9NBLGGH10PG8,0
|
||
|
Microsoft.ScreenSketch,9MZ95KL8MR0L,0
|
||
|
Microsoft.SkypeApp,9WZDNCRFJ364,0
|
||
|
Microsoft.Windows.Photos,9WZDNCRFJBH4,0
|
||
|
Microsoft.WindowsAlarms,9WZDNCRFJ3PR,0
|
||
|
Microsoft.WindowsCalculator,9WZDNCRFHVN5,0
|
||
|
Microsoft.WindowsCamera,9WZDNCRFJBBG,0
|
||
|
microsoft.windowscommunicationsapps,9WZDNCRFHVQM,0
|
||
|
Microsoft.WindowsFeedbackHub,9NBLGGH4R32N,0
|
||
|
Microsoft.WindowsMaps,9WZDNCRDTBVB,0
|
||
|
Microsoft.WindowsSoundRecorder,9WZDNCRFHW,0
|
||
|
Microsoft.YourPhone,9NMPJ99VJBWV,0
|
||
|
Microsoft.XboxApp,9WZDNCRFJBD8,0
|
||
|
Microsoft.XboxIdentityProvider,9WZDNCRD1HKW,0
|
||
|
Microsoft.ZuneMusic,9WZDNCRFJ3PT,0
|
||
|
Microsoft.ZuneVideo,9WZDNCRFJ3P2,0
|
||
|
")
|
||
|
|
||
|
# Windows 11 additions
|
||
|
if ([System.Environment]::OSVersion.Version.Major -eq 11) {
|
||
|
$appcsv += @("
|
||
|
MicrosoftWindows.Client.WebExperience,0
|
||
|
SpotifyAB.SpotifyMusic,0,
|
||
|
Disney.37853FC22B2CE,0,
|
||
|
26720RandomSaladGamesLLC.SimpleSolitaire,0,
|
||
|
5A894077.McAfeeSecurity,0,
|
||
|
C27EB4BA.DropboxOEM,0,
|
||
|
Microsoft.MinecraftEducationEdition,0
|
||
|
")
|
||
|
}
|
||
|
|
||
|
$applist = ConvertFrom-Csv $appcsv
|
||
|
|
||
|
$missed = @()
|
||
|
|
||
|
Write-Host @("This script will remove selected default Windows app packages.
|
||
|
It's most useful when your Windows drive is small, and you need to conserve space.
|
||
|
|
||
|
You may remove staged or user packages, or you may remove both simultaneously.
|
||
|
|
||
|
USER packages are, as the name implies, installed on a per-user basis. You can easily reinstall
|
||
|
these from the regular Microsoft Store app and website. This script can help you find the
|
||
|
right packages in the Store app for easy reinstallation.
|
||
|
|
||
|
STAGED packages are part of the default Windows user profile, which means they will
|
||
|
automatically install for every user who logs into the local machine, regardless of how
|
||
|
they log in (local, domain, MSA, AAD).
|
||
|
|
||
|
====== WARNING ======
|
||
|
Once you remove STAGED packages, there's no easy way to re-add them to the default profile!
|
||
|
Only use this option when you're certain you never want a package ever auto-installing.
|
||
|
")
|
||
|
|
||
|
$q = Read-Host "Remove [U]ser packages, [S]taged packages, or [B]oth?"
|
||
|
|
||
|
switch ($q) {
|
||
|
{"u","s","b"} {
|
||
|
# this is good, proceed
|
||
|
|
||
|
foreach($app in $applist) {
|
||
|
# if skip = 1, continue
|
||
|
if($app.skip) { continue }
|
||
|
# check if exists in installed and staged lists
|
||
|
if(($apps.DisplayName -contains $app.name) -or ($apxs.Name -contains $app.name)) {
|
||
|
$remq = Read-Host "Remove $($app.name)?"
|
||
|
if($remq) {
|
||
|
switch ($q) {
|
||
|
{"u","b"} {
|
||
|
# user and both
|
||
|
Get-AppxPackage -AllUsers -Name $app.name | Remove-AppxPackage
|
||
|
}
|
||
|
{"s","b"} {
|
||
|
# staged and both
|
||
|
Get-AppxProvisionedPackage -Online | ? { $_.DisplayName -eq $app.name } |
|
||
|
Remove-AppxProvisionedPackage -Online
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
elseif($apxs.Name -notcontains $app.name) {
|
||
|
$missed += $app
|
||
|
}
|
||
|
}
|
||
|
Write-Host ""
|
||
|
}
|
||
|
default {
|
||
|
Write-Host "No valid option selected."
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if($missed.Count -gt 0) {
|
||
|
$q2 = Read-Host "Prompt to reinstall $($missed.Count) missing USER packages?"
|
||
|
|
||
|
if($q2) {
|
||
|
foreach($m in $missed) {
|
||
|
$remq2 = Read-Host "Reinstall $($m.name)?"
|
||
|
if($remq2) {
|
||
|
Start-Process ($store + $m.id)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|