Uso de PowerShell para desinstalar aplicaciones

El año pasado les dije que necesitaba un script que detectara todas las versiones de una aplicación en una computadora y desinstalara cada versión una a la vez. En pocas palabras, no pude encontrar uno, ¡así que terminé armando uno! Desde que se publicó la publicación original, recibí una serie de preguntas sobre cómo forzar un inventario de hardware delta o completo SCCM después de desinstalar las aplicaciones. Finalmente, decidí actualizar mi script original y la publicación sobre el uso Potencia Shell para desinstalar aplicaciones.

El nuevo script incluye un inventario delta y ahora hay una opción para forzar un inventario completo de hardware SCCM. Anteriormente, si la aplicación desinstalada era un archivo EXE (y no un archivo MSI), Potencia Shell La secuencia de comandos fallaría porque el código duro solo permitiría la desinstalación de archivos MSI. Corregí este problema, por lo que ahora se desinstalan los archivos EXE y MSI.

Desinstalar aplicaciones - Celebre

Sin embargo, antes de llegar a eso, debería decirte que mi amigo Jason Sandys ya tenía un VBScript para hacer exactamente lo que estaba buscando el año pasado. Hay una larga broma interna entre nosotros sobre VBScript vs Potencia Shell, pero no te aburriré con eso aquí. Cuando originalmente buscaba guiones, tenía que ser Potencia Shell o nada. En ese momento, la razón era simple. Necesitaba aprender más sobre Potencia Shell, así que nunca busqué un VBScript y nunca vi la publicación de Jason. Lo gracioso es que Jason finalmente me contó sobre su guión y me mostró una característica muy interesante. ¡Puede forzar que se produzca un ciclo de inventario de hardware después! Debes consultar el guión de Jason en su sitio del blog.

Puedo escuchar a algunos de ustedes diciendo: "¿Qué guión es mejor?" La respuesta depende, en mi opinión, de su comprensión de VBScript y nuestra Potencia Shell. Fuera de eso, elige el que más te guste y úsalo.

Fondo

Estaba probando un producto Supervisión de informes de información (MIR) que ahora es parte de Informes Enhansoft. Esta prueba implicó la implementación de varias actualizaciones para los clientes de mi laboratorio. Mi laboratorio es una combinación de sistemas operativos (SO) x86 y x64. Después de implementar todas estas versiones de MIR, me quedé buscando una solución que me permitiera limpiar rápidamente las instalaciones del cliente. En última instancia, solo quería instalar la versión final de MIR en cada cliente.

Desinstalar aplicaciones: prueba

Desafortunadamente, no había forma de saber qué versiones de MIR se implementaron en qué equipos de prueba. También existía la posibilidad de que varias computadoras de prueba pudieran tener más de una versión de MIR instalada. Necesitaba una manera fácil de detectar automáticamente todas las versiones de MIR en una computadora y desinstalar cada una, una a la vez, sin tener que desinstalarlas manualmente en cada computadora. Desde entonces, me complace decir que la configuración de MIR se actualizó, por lo que solo se puede instalar una versión en una computadora a la vez.

Volviendo al problema del año pasado. Pensarías que podría encontrar un Potencia Shell solución. ¿Alguna vez ha desplegado Adobe Reader? Entonces sabría que puede haber varias versiones diferentes de Adobe Reader listado dentro de Agregar o quitar programa (ARP) en una computadora. ¿Por qué no habría una manera fácil de eliminar las versiones anteriores?

Encontré un montón de Potencia Shell scripts que me ayudarían a desinstalar solo una aplicación a la vez. Incluso hubo algunos Potencia Shell scripts que consultarían Win32_Product y luego desinstale dos o más aplicaciones. Sin embargo, si lees la publicación del blog de Greg Ramsey Win32_Product es malvado sabrías que esta es una mala idea. ¡Nunca deberías hacer eso! Es por eso que nunca pude usar Win32_Product dentro de mi script debido a los problemas que crea.

Uso de PowerShell para desinstalar aplicaciones

En un alto nivel, esto es lo que actualicé Potencia Shell script hace:
-Detecta si el script se está ejecutando en modo x84, x64 o WoW32.
-Lee las claves de registro de desinstalación x86 y x64.
-Localiza todas las versiones de una aplicación.
-Realiza un recorrido por la lista de entradas ARP y recopila:
-Nombre MSI / GUID / Cadena de desinstalación.
-Detecta si la aplicación es un EXE o MSI y la desinstala en consecuencia.
-Registra cada paso en un archivo de registro.
-Ejecuta un inventario de hardware delta o, si la bandera está configurada, un inventario completo de hardware SCCM.

A continuación se muestra cómo se ve el guión final, pero también puede descargar es desde el Enhansoft sitio web.

Desinstalar aplicaciones - Script

Forzar un inventario de hardware completo SCCM

De forma predeterminada, un ciclo de inventario de hardware delta comenzará como uno de los últimos pasos dentro del script. No hay nada más que deba hacer. Sin embargo, me gusta forzar un inventario completo cuando desinstalo aplicaciones. Si eres como yo, entonces todo lo que necesitas hacer es cambiar el valor $fullinventory = $false a $true. Esto forzará a que ocurra un inventario completo de hardware SCCM.

Cómo implementar el script de desinstalación de la aplicación con SCCM

Primero, comience por editar el guión. Reemplace el nombre de la aplicación con la que desea desinstalar. En la versión de descarga, actualmente está configurado para: Supervisar * Información * Informes * Tenga en cuenta que * es un comodín que se utiliza para buscar entradas ARP.

En segundo lugar, decida si desea forzar un inventario completo de hardware SCCM, así que configure la marca en consecuencia.

En tercer lugar, cree un paquete y un programa para su línea de comandos. Debería tener un aspecto similar al siguiente:
powershell.exe -ExecutionPolicy bypass -file Uninstallv10.ps1

En cuarto y último lugar, implemente el paquete y el programa como lo haría con cualquier otro programa.

Uso de la secuencia de comandos de desinstalación de la aplicación

Puede ver en la captura de pantalla a continuación que tenía varias copias de MIR instaladas en esta computadora de prueba el año pasado.

Desinstalar aplicaciones - Aplicaciones MIR

Configuré mi programa para que se implemente silenciosamente en segundo plano. ¡Nada que ver desde la perspectiva del usuario final!

Si desea verificar que el Potencia Shell el script se está ejecutando, mire el Administrador de tareas. ¡Tendrás que ser rápido! La secuencia de comandos solo tarda de unos segundos a unos minutos en ejecutarse, dependiendo de la cantidad de ARP que tenga que eliminar. Como acotación al margen, también puede ver que el script se ejecutó dentro del Execmgr.log en su computadora de prueba.

Desinstalar aplicaciones: aplicaciones MIR eliminadas

Puede ver en la captura de pantalla de arriba que después de unos minutos todos los Supervisión de informes de información Se eliminaron las entradas de ARP.

Tenga en cuenta que el ciclo de inventario de hardware (delta o completo) comenzará poco después de que se desinstalen todas las aplicaciones. Solo tarda unos segundos en ejecutarse (~ 60 segundos).

Reiniciar computadoras

En algunos casos, es posible que desee reiniciar las computadoras después de enviar el inventario de hardware a SCCM. En mi caso, agregué un Dormir comando al Potencia Shell script durante 75 segundos antes de reiniciar. Si su inventario de hardware tarda más, simplemente ajuste el tiempo en consecuencia.

Estos son los comandos que utilicé:
Inicio-sueño - segundos 75
reiniciar-computadora-fuerza

Si tiene alguna pregunta sobre el uso Potencia Shell para desinstalar aplicaciones, por favor contácteme @GarthMJ.

Vea cómo Right Click Tools está cambiando la forma en que se administran los sistemas.

Aumente la productividad de inmediato con nuestra versión limitada y gratuita de la edición Community.

Comience con Right Click Tools hoy:

Compartir este:

Ayuda

  • Este campo es para fines de validación y no debe modificarse.

Contacto

  • Este campo es para fines de validación y no debe modificarse.
es_MXSpanish