Fichero .bat (batch de proceso por lotes) para desinstalar un determinado software de forma automática y sin intervención del usuario. Como ejemplo, desinstalamos el producto ESET Antivirus, pero es válido para cualquier otro software del equipo. Este script .bat servirá para ser usado en una directiva GPO y desinstalar software en todos los equipos de un dominio (o de una unidad organizativa).
- Obtener Código de producto (Product Code) de un software instalado.
- Mostrar todos los programas instalados y su código de producto.
- Script .bat para desinstalar un software de forma automática (silenciosa).
- Agregar script a inicio de equipo por directiva para desinstalar software en todos los equipos de un dominio AD DC.
Obtener Código de producto (Product Code) de un software instalado
Para desinstalar un software de forma desatendida, tendremos varios métodos. En muchas ocasiones dependerá del software y de cómo se haya instalado. En general, si se ha usado un fichero .msi, se podrá desinstalar como indicamos en este artículo.
En primer lugar obtendremos el código de producto (Product Code o Package Code), que es un identificador único del software en el equipo. Si queremos desinstalar el mismo software en diferentes equipos, este Product Code puede ser diferente para el mismo software en cada equipo. Por ello indicaremos en este artículo cómo obtener el product code y, a continuación, usarlo para desinstalar el software.
El valor ProductCode del software ESET Endpint Antivirus se puede obtener con el comando:
1 |
wmic product where "name like 'ESET Endpoint Antivirus'" get packagecode | find /v "packagecode" |
Obtendrá, si encuentra la aplicación ESET Endpoint Antivirus, el código de producto, con el formato:
{127C84C1-CFF8-49C2-A505-70863E9E30EC}
También se puede obtener el identificador (código de producto o código de paquete) si sabemos la clave de registro donde se almacena. Cada software puede almacenar este product code en un sitio del Registro del sistema (regedit) diferente. En el caso del producto ESET Endpoint Antivirus, suele estar en la clave de registro:
1 |
HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" |
Para obtener el valor PackageCode por comando podemos usar:
1 |
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v "ProductCode" |
Mostrar todos los programas instalados y su código de producto
Si necesitamos saber el nombre exacto del software a desinstalar, para el comando anterior, podemos listar todos los productos y su código de producto (package code o código de paquete), con:
1 |
wmic product get name,packagecode |
Podremos obtener el nombre del producto a partir de su product code (si lo conocemos), con:
1 |
wmic product where "packagecode like '{FA21706C-54E8-493F-9D8C-82426B98193A}'" get name | find /v "name" |
Modificando el product code de ejemplo: {FA21706C-54E8-493F-9D8C-82426B98193A} por el del software del que queramos obtener el nombre.
Script .bat para desinstalar un software de forma automática (silenciosa)
Teniendo en cuenta la obtención del código de producto anterior, podemos desarrollar el siguiente script .bat para desinstalar un software determinado de forma automática y silenciosa (sin mostrar confirmaciones ni pantallas al usuario):
1 |
FOR /F "tokens=2* skip=2" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Info" /v "ProductCode"') do msiexec /x %%b /qn REBOOT="ReallySuppress" PASSWORD="" /lv %LOCALAPPDATA%\desintalar_ESET_Antivirus.log |
El script anterior obtiene el product code de ESET Endpoint Antivirus y lo añade al parámetro /x del comando msiexec para desinstalar un producto. Almacenará un fichero de log con el resultado de la ejecución de la desinstalación en la carpeta AppData del usuario.
Se podría usar también este otro script, que obtendrá el product code a partir de nombre del software:
1 2 |
SET CodigoProducto=wmic product where "name like 'ESET Endpoint Antivirus'" get packagecode | find /v "PackageCode" msiexec /x %CodigoProducto% /qn REBOOT="ReallySuppress" PASSWORD="" /lv %LOCALAPPDATA%\desintalar_ESET_Antivirus.log |
Agregar script a inicio de equipo por directiva para desinstalar software en todos los equipos de un dominio AD DC
Guardaremos el script anterior en un fichero .bat, lo pasaremos a una carpeta compartida del dominio y seguiremos los pasos del siguiente artículo para crear una directiva GPO y asignarla a una o varias unidades organizativas, de forma que el script se ejecutará en el arranque de los equipos contenidos en estas unidades: