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.exeDonde: 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 namePara 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,vendorDonde "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 uninstallDonde: 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.
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!
Todo correcto hasta que el programa a eliminar es : Adobe Acrobat 9 Pro - Italiano, Español, Nederlands, Português y me responde
ResponderEliminar, - Verbo de alias no válido
Alguna solucion o alternativa para eliminarlo de mi red?
Gracias
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@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.
ResponderEliminarRevisar si las sintaxis están bien escritas y sobre todo revisar si el servicio WMI está iniciado.
Una pregunta; esto es valido para WinXP? o solo W7?
ResponderEliminarEn 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
@Run Bcn78, deshabilitar las Windows Update? o desinstalar ciertas actualizaciones de forma remota?.
ResponderEliminarPor 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.
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
ResponderEliminarHola @Fabio Giraldo.
ResponderEliminarSi 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.
Hola que tal!!
ResponderEliminartengo un problema... cuando intento llamar a WMIC desde el equipo remoto no hace nada el CMD. alguien sabe porque? simplemente se queda sin sintasis
Hola @Asael,
ResponderEliminarComprueba si tienes este fichero: C:\Windows\System32\wbem\WMIC.exe
Saludos.
Hola que tal.. gracias por responder
ResponderEliminarverifique 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
Hola @Asael,
ResponderEliminarViendo 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.
Cómo puedo desinstalar adobe Flash player desde la terminal del servidor a un grupo de máquinas remotas al mismo tiempo por wmic
ResponderEliminarHola @Haward Abreu Elivo,
EliminarAcabo 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!
Hola! Va todo bien hasta que intentó obtener la lista de programas. Al poner product get name me aparece esto:
ResponderEliminarNODO: MNINT-O5V3C8O
ERROR:
Descripción: clase no válida
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