JCMUNERA

Automatiza la Desinstalación de Aplicaciones en Windows 10 con PowerShell

Introducción:
En el vasto ecosistema de Windows 10, es común acumular una gran cantidad de aplicaciones con el tiempo. Sin embargo, no todas estas aplicaciones son necesarias o deseadas a largo plazo. En este artículo, exploraremos cómo utilizar PowerShell para crear un script que permita desinstalar aplicaciones de forma silenciosa, simplificando así la gestión del software en tu sistema operativo.

Contenido:
En Windows 10, la desinstalación de aplicaciones suele implicar navegar a través de varios menús y confirmaciones, lo que puede ser tedioso y consumir mucho tiempo, especialmente si se tienen varias aplicaciones que deseas eliminar.

El script de PowerShell que compartiremos hoy simplifica este proceso al proporcionar una lista de todas las aplicaciones instaladas en el sistema y permitir al usuario elegir cuál desea desinstalar de forma silenciosa.

El script comienza obteniendo la lista de todas las aplicaciones instaladas en el sistema utilizando el cmdlet Get-ItemProperty. Luego, muestra esta lista al usuario y solicita que seleccione la aplicación que desea desinstalar.

Una vez que se ha seleccionado una aplicación, el script busca la cadena de desinstalación asociada a esa aplicación y la ejecuta utilizando el cmdlet Start-Process. Esto permite que la desinstalación se realice de forma silenciosa, sin necesidad de intervención adicional del usuario.

Conclusión:
Automatizar tareas como la desinstalación de aplicaciones puede ahorrar tiempo y simplificar la gestión del software en Windows 10. El script de PowerShell proporcionado en este artículo ofrece una forma eficiente y sencilla de desinstalar aplicaciones de forma silenciosa, lo que puede ser útil para usuarios y administradores de sistemas por igual. Si tienes aplicaciones no deseadas acumuladas en tu sistema, ¡prueba este script y simplifica tu vida digital!

# Establecer la política de ejecución para permitir la ejecución de scripts
Set-ExecutionPolicy RemoteSigned -Scope Process -Force

do {
    # Obtener la lista de todas las aplicaciones instaladas
    $Apps = Get-WmiObject -Class Win32_Product | Select-Object -Property Name

    # Mostrar la lista numerada de aplicaciones instaladas
    Write-Host "Lista de aplicaciones instaladas:`n"
    for ($i=0; $i -lt $Apps.Count; $i++) {
        Write-Host "$($i+1). $($Apps[$i].Name)"
    }

    # Solicitar al usuario que ingrese la lista de números de las aplicaciones que desea desinstalar, separados por comas
    $Selection = Read-Host "Ingrese los números de las aplicaciones que desea desinstalar, separados por comas, o presione 'q' para salir"

    # Salir del bucle si el usuario presiona 'q'
    if ($Selection -eq 'q') {
        break
    }

    # Convertir la entrada del usuario en un array de números
    $Selections = $Selection -split ',' | ForEach-Object { $_.Trim() }

    # Verificar si las entradas del usuario son números válidos
    $ValidSelections = $true
    foreach ($item in $Selections) {
        if (-not ($item -match '^\d+$' -and [int]$item -ge 1 -and [int]$item -le $Apps.Count)) {
            Write-Host "Entrada inválida: $item. Por favor, ingrese números válidos."
            $ValidSelections = $false
            break
        }
    }

    if (-not $ValidSelections) {
        continue
    }

    # Desinstalar los programas seleccionados
    foreach ($item in $Selections) {
        $SelectionIndex = [int]$item - 1
        $AppToUninstall = $Apps[$SelectionIndex].Name
        Write-Host "Desinstalando $($AppToUninstall)..."
        # Ejecutar el comando WMIC para desinstalar de forma silenciosa
        Start-Process -FilePath "wmic" -ArgumentList "product where name=`"$($AppToUninstall)`" call uninstall" -Wait -NoNewWindow
        Write-Host "$($AppToUninstall) desinstalado exitosamente."
    }

    # Preguntar al usuario si desea desinstalar otra aplicación
    $Continue = Read-Host "¿Desea desinstalar otras aplicaciones? (S/N)"
} while ($Continue.ToLower() -eq 's')


Guardar como ‘desinstalarapps.ps1’

Ahora código para lanzar el script Powershell desde un fichero de comandos .bat

@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -File "%~dp0\desinstalarapps.ps1"
pause

Guardar como “desinstalarapps.bat”


Publicado

en

por

Etiquetas:

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *