Páginas

30 agosto, 2014

Desinstalar software local o remoto a través de una CMD de Windows

Recientemente buscando la forma de poder desinstalar aplicaciones de forma local y remota solo haciendo uso a través de una shell de Windows Command Prompt. Encontré una forma de poder hacerlo de forma muy fácil y sin hacer uso de tools externas.

Para poder hacer esto haremos uso de la herramienta de comandos WMIC ("Windows Management Instrumentation Command-line"), integrada en Windows 7. Deberemos tener iniciado el servicio WMI de Windows, podremos iniciarlo de forma rápida abriendo una consola con privilegios y escribiendo: net start winmgmt.

Para poder desinstalar una aplicación de un equipo remoto de la red o un dominio, podemos hacer uso de PsExec, una herramienta de linea de comandos incluida en la suite PSTools de la cual ya había comentado en este blog como descargarla y usarla.

Una vez descarga en nuestro equipo local, simplemente tendríamos que ejecutar una CMD de un equipo remoto con PsExec y seguir el procedimiento como si fuese un equipo local, ya que esa CMD es la que equipo remoto al que nos conectamos.

En una CMD de nuestro equipo local escribimos:
psexec \\EquipoRemoto -u UserAdmin -p Password cmd.exe
Donde: EquipoRemoto es el nombre o IP del equipo remoto al que nos queremos conectar, UserAdmin sería un usuario con privilegios de administrador y Password es la contraseña del usuario UserAdmin, acto seguido indicamos la aplicación a ejecutar de forma remota, que para este caso usaremos cmd.exe.

En este ejemplo escogí la aplicación "Passware Kit Enterprise 9.7" para desinstalarla de forma local, pero como ya dije el procedimiento sería el mismo para un equipo remoto una vez tengamos iniciada la consola cmd del equipo remoto en cuestión.

[1] - Como podemos ver la aplicación que quiero desinstalar se visualiza en Progamas y características del Panel de Control de Windows. (esto en el caso de hacerlo de forma local).

Figura 1: Passware Kit Enterprise 9.7 se visualiza instalado en "Programas y características".

[2] - Abrimos una CMD local con altos privilegios administrativos (Tecla Windows+R: escribimos cmd.exe). Una vez abierta escribimos en consola: wmic, y accedemos al modo interactivo del comando, que se nos mostrará con el siguiente prompt: wmic:root\cli>, seguidamente escribimos:
product get name
Para mostrar la lista de aplicaciones instaladas en el equipo y reconocibles.

Nota: Si queremos mostrar más información, como el proveedor y la versión del producto a desinstalar, podemos usar la siguiente sintaxis.
node:HOSTNAME product get name,version,vendor
Donde "HOSTNAME" es el nombre del equipo local. Aunque si habíamos accedido por una cmd.exe remota a otro equipo, será el nombre del equipo remoto.

En este caso para simplificar e usando la primera sintaxis mencionada.
Vemos como se aparece la aplicación que quiero desinstalar, en este caso Passware Kit Enterprise 9.7.

Figura 2: Lista del software instalado en el equipo. (vemos que se muestra Passware Kit Enterprise 9.7).

[3] - Para desinstalar dicha aplicación escribimos:
product where name="NombreExactoDeLaAplicacion" call uninstall
Donde: NombreExactoDeLaAplicacion, es el nombre tal cual se muestra en la lista de aplicaciones (respetando mayúsculas, minúsculas y espacios).
Nos preguntará si estamos seguros de desinstalar la aplicación, presionamos la letra Y para confirmar.

Para verificar que realmente se desinstaló podemos, listar de nuevo las aplicaciones hasta ver que no aparece en la lista o nuevamente desinstalar la aplicación ya desinstalada, en este caso nos mostrará que "No hay instacias disponibles" lo que ya nos da a entender que se desinstaló de nuestro sistema.

Figura 3: Seleccionamos Passware Kit Enterprise 9.7 y lo desinstalamos, después comprobamos que se desinstaló.

[4] - Por último podemos hacer una última comprobación en Programas y características del Panel de control de Windows y comprobar que no se visualiza. (esto en el caso de hacerlo de forma local).

Figura 4: Finalmente comprobamos en "Programas y características" que Passware Kit Enterprise 9.7 ya no se visualiza.

Esta desinstalación es exactamente igual que hacerlo de forma gráfica, es decir que esto, nos tendría más utilidad para llevar a cabo desinstalaciones a equipos remotos de forma subyacente al usuario final, a nivel administrativo.

Para hacer esto de forma no interactiva sin entrar en la consola de WMIC. Podemos usar el parámetro /nointeractive.

Un ejemplo sería. Para listar todos los productos de "Adobe Acrobat" que tengamos instalados en el sistema y desinstalarlos todos de golpe de forma no interactiva.
wmic /node:COMPUTERNAME product where "name like 'Adobe Acrobat%'" call uninstall /nointeractive
Si estamos en un modo interactivo podemos usar solamente product where "name like 'Adobe Acrobat%'" para obtener previamente el listado y no desinstalarlo.

Respecto a si es una desinstalación más o menos limpia, eso dependerá del proceso de programación que tenga software de fabricante dado. Habrá aplicaciones que se desinstalen completamente, sin dejar rastros de carpetas ni rastros en el registro de Windows y habrá otras que no.

Por último, decir que en ocasiones puede que la lista de aplicaciones mostradas no sean todas las que realmente están instaladas en el equipo. Ya que habrá casas comerciales u otros factores que harán que impidan que se listen con WMIC. Con lo cual aquí aconsejo realizar esto por directivas GPO.

Saludos!

15 comentarios

  1. Todo correcto hasta que el programa a eliminar es : Adobe Acrobat 9 Pro - Italiano, Español, Nederlands, Português y me responde
    , - Verbo de alias no válido
    Alguna solucion o alternativa para eliminarlo de mi red?
    Gracias

    ResponderEliminar
  2. También me pasa lo mismo, necesito desinstalar programas en una cuenta sin privilegios, ejecuto cmd con una cuenta con privilegios y me aparece el mismo errror ", - verbo de alias no valido ".

    ResponderEliminar
  3. @Raul, @leito sayan; Probé en dos ocasiones con una cuenta con y sin privilegios, con dos diferentes aplicaciones y en ningún caso vi este mensaje que me ambos comentáis.

    Revisar si las sintaxis están bien escritas y sobre todo revisar si el servicio WMI está iniciado.

    ResponderEliminar
  4. Una pregunta; esto es valido para WinXP? o solo W7?
    En Xp cuando pongo : product get name me dice Access is denied
    Facility=Win32.
    Y lo más importante; necesito desinstalar en remoto actualizaciones de windows, ¿Sabes si esto se puede hacer? Te agradeceria mucho si lo sabes; es urgente dar una solucion porque tengo que desinstalar Windows Updates en cientos de equipos en remotos.
    Gracias
    Miguel

    ResponderEliminar
  5. @Run Bcn78, deshabilitar las Windows Update? o desinstalar ciertas actualizaciones de forma remota?.

    Por que si se trata de deshabilitar las Windows Updates en ciertos equipos de tu red, puedes hacerlo ejeuctando una mmc con privilegios y después cargando un snapin de la msc de services. Y ahí simplemente deshabilitas el servicio y incluso puedes abrir un gpedit.msc para deshabilitar por GPO las Windows Updates.

    Pero si se trata de eliminar remotamente ciertas actualicaciones YA instaladas. Puedes probar a ejeuctar con psexec un cmd remota al equipo en cuestión. Y a través de ahí ejecutar un "systeminfo" para ver las KB (actualizaciones) instaladas, una vez que encuentras la que desees desinstalar, haz uso del comando "wusa" para poder desinstalar esa KB en cuestión.
    Por ejemplo: wusa /uninstall /kb:2943356

    Hablaré de esto en mi próximo post.

    Saludos.

    ResponderEliminar
  6. lo intente para vnc pero no me aparece en la lista aunque si me voy por programas si aparece para desisntalar pero yo queria desinstalarlo masivamente en toda la red pero todas las maquinas que reviso por el psexec no me traen en la lista ese programa

    ResponderEliminar
  7. Hola @Fabio Giraldo.

    Si lees el último párrafo verás que comento este detalle que me dices.

    En ocasiones no aparece todo el software realmente instalado.
    Si en tu caso lo quieres hacer forma masixa, en ese caso me temo que tendrás que hacerlo con GPOs o haciendo uso de una aplicación de terceros...

    Saludos.

    ResponderEliminar
  8. Hola que tal!!

    tengo un problema... cuando intento llamar a WMIC desde el equipo remoto no hace nada el CMD. alguien sabe porque? simplemente se queda sin sintasis

    ResponderEliminar
  9. Hola @Asael,

    Comprueba si tienes este fichero: C:\Windows\System32\wbem\WMIC.exe

    Saludos.

    ResponderEliminar
  10. Hola que tal.. gracias por responder

    verifique y si mantengo el archivo mas esto no me ayudo en nada aunque ya resolvi mi cuestionamiento y es que al intentar llamar a WMIC en la pc remota no me permitia a menos (que fue como hise ahora) que llamara al comando directo para saber los nombres de los programas... en este caso asi

    wmic product get name

    ya con esto se mostraron

    gracias por blog... muy bueno

    saludos

    ResponderEliminar
  11. Hola @Asael,

    Viendo lo que me comentas tu problema estaba en que había que hacer uso del modo no interactivo de WMIC, y no entrar en el modo interactivo. Es decir, realizar la instrucción solicitada al WMIC desde una sola línea en la consola de Windows.

    Saludos.

    ResponderEliminar
  12. Cómo puedo desinstalar adobe Flash player desde la terminal del servidor a un grupo de máquinas remotas al mismo tiempo por wmic

    ResponderEliminar
    Respuestas
    1. Hola @Haward Abreu Elivo,

      Acabo de actualizar la entrada para hacer uso de wmic de forma no interactiva, poniendo como ejemplo el caso que me comentas de Adobe.


      En tu caso, puedes hacer de forma interactiva escribiendo: product where "name like 'Adobe Acrobat%'"

      Eso buscará todo lo que haiga de relacionado con ese nombre, una vez sepas el nombre exacto puedes usar la llamada a desinstalar (call uninstall).

      Espero que sea de ayuda ; )

      Saludos!

      Eliminar
  13. Hola! Va todo bien hasta que intentó obtener la lista de programas. Al poner product get name me aparece esto:
    NODO: MNINT-O5V3C8O
    ERROR:
    Descripción: clase no válida

    ResponderEliminar
  14. Buenos dias, muy bueno el articulo, pero tengo un problema, cuando ejecuto el comando wmic /node:COMPUTERNAME product where "name like 'Adobe Acrobat%'" call uninstall /nointeractive, al poner el nombre de equipo del dominio, me da el error Nodo no válido (descartado), el equipo esta en linea y se llega bien mediante ping

    ResponderEliminar

Entradas Populares