Muchas veces, es necesario sacar algún valor de registro para alguno de nuestros scripts. Es poco conocida la posibilidad de obtener ese valor desde MS-Dos.
El comando REG nos permite trabajar con el registro desde la consola de MS-Dos. Añadir claves, Borrar claves, etc.
Ejemplo practico de acceso al registro desde MS-Dos.
Vamos a ver su utilidad con un ejemplo practico. Suponemos que queremos sacar la fecha de la ultima actualización del antivirus, podemos 2 cosas:
- Ir a Ayuda -> Acerca de … y ahí vemos la fecha de actualización.
- Inicio ->Ejecutar ->regedit.exe y ahí navegar hasta la rama del registro donde esta guardado el valor con la fecha de la ultima actualización.
C:Documents and SettingsJSIERRA>REG QUERY "HKLMSOFTWARENetwork AssociatesTVDShared ComponentsVirusScan Engine4.0.xx"
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINESOFTWARENetwork AssociatesTVDShared ComponentsVirusScan Engine4.0.xx
szVirDefVer REG_SZ 4.0.4761
DAT REG_SZ C:Archivos de programaArchivos comunesNetwork AssociatesEngine szVirDefDate REG_SZ 12 mayo 2006
szEngineVer REG_SZ 4.4.00
szInstallDir REG_SZ C:Archivos de programaArchivos comunesNetwork
AssociatesEngine
Obtenemos la fecha de ultima actualización del antivirus: REG_SZ 7 abril 2006
Si tenemos instaladas las UnixUtils podemos usar el grep para obtener solo lo que queremos.
C:Documents and SettingsXXXX>REG QUERY "HKLMSOFTWARENetwork AssociatesTVDShared ComponentsVirusScan Engine4.0.xx" |grep szVirDefDate
¿Donde esta aqui la automatización?
Supongamos que tenemos una red de muchos ordenadores y queremos saber si estan todos actualizados… Sigamos desarrollando el script RevisaActualizacionAntivirus.bat:
set RUTA="k:temporalVersionAntivirus.log"
@echo off
echo ==== >> %RUTA%
set |grep COMPUTERNAME >> %RUTA%
ipconfig | grep "Dirección IP" >> %RUTA%
REG QUERY "HKLMSOFTWARENetwork AssociatesTVDShared ComponentsVirusScan Engine4.0.xx" |grep szVirDefDate>> %RUTA%
echo ==== >> %RUTA%
====
COMPUTERNAME=MAQUINA
szVirDefDate REG_SZ 7 abril 2006
====
Integrando todo con un dominio samba o windows o incluso en un workgroup.
Solo nos faltaría ejecutar este script en todos los equipos. Para ello tenemos varias posibilidades
- Poner el script en el script de arranque del dominio o NETLOGON (valido para dominios montados con SAMBA tambien).
- Usar el Psexec para lanzarlo remotamente en todas las maquinas (caso de tener un workgroup).
- Asignando este script a una politica de inicio/apagado del equipo o inicio/cierre de sesión (valido para dominios Windows).