Este post está patrocinado por Miguel Villamarín Álvarez, del banco de inversión Banco Mediolanum. Miguel ha donado 100€ para el banco de alimentos en mi iniciativa "¿Te he ayudado? Ayúdame a ayudar a otros". ¡Muchas gracias Miguel!
¿Y tú, a qué esperas para echar un cable?

Cuando instalas un equipo nuevo o creas una nueva cuenta en Windows 10, tras el tedioso proceso de onboarding en el que te someten a un montón de preguntas, te encuentras el menú de inicio lleno de aplicaciones que generalmente no quieres para nada y que vienen con el sistema, bien por parte de Microsoft, bien por parte del fabricante del PC: juegos varios, Facebook (hace años que no lo uso, pero mucho mejor la versión web que esa porquería de app nativa), Twitter, antivirus, Bing Maps... Mierda casi todo:

Un típico menú de inicio lleno de porquería tras acceder la primera vez. No es mío: lo he sacado de por ahí...

Es más, hay unas cuantas más instaladas que no están en el menú de inicio, pero sí en la lista de programas. Y otras que no te deja desinstalarlas. Y lo que es peor: aunque te dediques a desinstalarlas una a una (ya que el menú de inicio de W10 no te deja seleccionar varias a la vez, cosa que el de Windows 8 sí), si miras bien verás que una vez desinstaladas (las que te deja) siguen ocupando espacio en disco en la carpeta C:\Archivos de programa\WindowsApps (al que no tienes acceso, ni como administrador). Esto es así porque esas aplicaciones están incluidas en la base del sistema y se le añaden a todos los usuarios nuevos, por lo que aunque las desinstales de tu cuenta, siguen en disco para los nuevos usuarios, aunque nunca llegues a crearlos.

Me gusta mucho Windows 10, de verdad, pero esto es un despropósito, sobre todo en equipos de pocos recursos donde cada GB libre en disco cuenta.

Por ejemplo, este es el espacio en disco que ocupan las aplicaciones preinstaladas en un equipo nuevo que he adquirido hace poco:

La carpeta de apps ocupaba 7,7GB

Como ves, las apps "modernas" que vienen con el sistema ocupan la friolera de casi 8 GB de espacio en disco, porque en este caso el fabricante había metido varias aplicaciones de edición de audio y vídeo que, pueden estar bien, pero que yo no voy a utilizar. Pero otras apps que no uso ocupan cientos de MB y son de Microsoft. 216MB Windows Photos ¿en serio? ¡Viva el visor de fotos de toda la vida!

En fin, ya está bien de quejarme. Te voy a enseñar una manera sencilla, rápida y visual de librarte de los programas que no te interesen en unos segundos, para tu cuenta y de paso del sistema.

A mano: quitando aplicaciones de la Microsoft Store con PowerShell

Windows incluye ciertos comandos de PowerShell para eliminar aplicaciones de las "modernas" que se instalan desde la Microsoft Store, y que son precisamente las apps a las que me refiero y que se instalan sin tu permiso en el equipo nuevo.

En concreto tenemos el comando Remove-AppxPackage que nos permite eliminarlas para el usuario actual, y uno mucho mejor, Remove-AppxProvisionedPackage, que hace lo mismo pero para el sistema operativo, es decir, no sólo las elimina para los usuarios, sino que las quita de la carpeta WindowsApps y no se volverán a crear para nuevos usuarios tampoco, liberando de verdad el espacio que ocupan.

Lo malo es que para poder utilizarlos tenemos que saber el identificador de la app que queremos eliminar e ir una a una para hacerlo. Averiguarlo es sencillo, y tenemos dos opciones:

  • Cambiar los permisos a la carpeta WindowsApps (por defecto no te deja entrar ni a verla) y acceder a ella para ver las carpetas que contiene, que tienen los identificadores.
  • Utilizar las funciones de PowerShell llamadas Get-AppxPackageGet-AppxProvisionedPackage para buscar aplicaciones en tu perfil o en el sistema. Por ejemplo, puedes listar todas las apps que tienes instaladas con este comando: Get-AppxPackage | Select Name, PackageFullName.

Pero es tedioso y tampoco ganamos demasiado, así que vamos a hacerlo mucho mejor y automatizarlo 😉

Automatizando el proceso: un "truco" de PowerShell y un mini-script para ahorrarte trabajo

Cuando hice el tutorial de PowerShell aquí hace unos años expliqué algunas cosas bastante interesantes. Por ejemplo, cómo obtener los resultados de un comando dentro de una rejilla que podemos filtrar, ordenar y hasta exportar. Lo que no conté en aquella ocasión es que además, la selección que hagas en esa rejilla puedes pasarse automáticamente al siguiente comando usando el carácter de la tubería o pipe (|).

Sabiendo esto podemos hacer una combinación de comandos muy sencilla que nos permita hacer estas tres cosas de golpe:

  1. Obtener todos los programas "modernos" instalados en nuestro sistema
  2. Mostrarlos en una rejilla al usuario de modo que pueda elegir en ésta los que quiere desinstalar
  3. Desinstalar uno a uno los programas elegidos por el usuario

El comando sería este:

Get-AppxProvisionedPackage -Online | Out-GridView -PassThru | Remove-AppxProvisionedPackage -Online

Vale, ¿qué hace esto?

  1. Pues primero obtiene todos los paquetes (argot para "aplicaciones") que hay preinstaladas en el equipo y se los pasa con un | a una rejilla de PowerShell.
  2. La rejilla los recibe y los carga para mostrarlos. El parámetro -PassThru lo que hace es indicar que queremos mandar la selección del usuario al siguiente comando. Además pone la rejilla en el modo de selección múltiple, de modo que el usuario pueda seleccionar más de un elemento, en este caso más de un programa a desinstalar. Le podríamos haber puesto el parámetro -Title para poner un mensaje de ayuda al usuario. En la línea anterior no lo he hecho para que no fuese muy larga, pero en el script que te puedes descargar luego, sí.
  3. La selección del usuario se pasa al siguiente parámetro, que se encarga de eliminar las aplicaciones.

¡ Listo! Una sola línea y nos libramos en unos segundos de todo.

MUY IMPORTANTE: debes ejecutar el script desde una ventana de PowerShell como administrador ya que estos comandos requieren elevación de privilegios. Pulsa con el botón derecho sobre el boton de inicio y verás una opción para abrir PowerShell de esta manera. Ten mucho cuidado con lo que desinstalas. Debes tener seguridad de que sabes qué es o podrías cargarte algo importante del sistema, aunque la mayoría son muy fáciles de ver. Funciona tanto en PowerShell "clásico" como con  el nuevo PowerShell 6/7 multiplataforma.

En caso de que al ejecutarlo, incluso como administrador, te diga que no tienes permisos, debes establecer la política de ejecución de modo que te permita ejecutar scripts no firmados, con esta instrucción:

Set-ExecutionPolicy Unrestricted

Por ejemplo, este es el aspecto de la rejilla en mi sistema:

El aspecto de la rejilla con varios programas seleccionados. Está en inglés porque mi sistema siempre lo instalo en inglés, como ya sabrás si sigues el blog.

Tras haber seleccionado las apps y pulsar OK, unos segundos y adios para siempre.

¡Puedes ahorrar muchos gigas en unos pocos segundos! Y manteniendo el control sobre lo que estás eliminando. Debería venir de serie...

He creado un archivo ZIP (626 bytes) en el que van dos versiones del script:

  • quitar-apps-windows-usuario-actual.ps1: que eliminará las aplicaciones que quieras de tu perfil, pero no del sistema. No necesitas permisos de administrador.
  • quitar-apps-windows-sistema.ps1: que eliminará las aplicaciones del sistema, no sólo de tu perfil de usuario, liberando todo el espacio en disco. Necesitarás permisos de administrador.

¡Espero que te resulte útil!

¿Este post te ha ayudado?, ¿has aprendido algo nuevo? Entonces, me niego a creer que no puedas donar ni 1€ a los que necesitan algo tan básico como comer. Por cada euro que pongas tú, yo pondré otro.
¡No pases de ellos! También es tu responsabilidad.
Vamos a ayudarlos juntos