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:NOMBRE_PC product get name,version,vendor
Donde "NOMBRE_PC" 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.


Por comprobaciones que hice aclaro que, 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.

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 o haciendo uso de aplicaciones de terceros, como por ejemplo Symantec Altiris.

Saludos!

11 Comentarios :

Raul dijo...

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

leito sayan dijo...

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 ".

Adrián Lois dijo...

@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.

Run Bcn78 dijo...

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

Adrián Lois dijo...

@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.

Fabio Giraldo dijo...

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

Adrián Lois dijo...

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.

Asael Espinosa dijo...

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

Adrián Lois dijo...

Hola @Asael,

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

Saludos.

Asael Espinosa dijo...

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

Adrián Lois dijo...

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.

Publicar un comentario

Entradas Relacionadas