Buenas noches.
No se si este es el foro para esta pregunta pero ahi les va, cree un script
.vbs de inicio de sesión que recoge información de la maquina, el usuario y
la version del DAT del antivirus y esta información la guarda en un .TXT en
una carpeta compartida en un servidor para su posterior analisis.
El detalle es que me he topado con 2-3 equipos/usuario que al ejecutar el
script dejan el archivo de texto abierto y por consiguiente nadie que se
valide posteriormente puede escribir su información hasta que voy al
servidor y cierro el archivo abierto.Antes de que se validen funciona al 100
% y despues de desbloquear el archivo igual funciona al 100%
Alguin sabrá porque puede producirse este comportamiento?? lo estoy probando
un una OU con 40 usuarios, pero la idea es ejecutarlo en todo el dominio con
unos 5,000 usuarios.
Les copio el script.
'1- PRIMERO DETECTO SI ES WINDOWS DE 32 O DE 64 BITS
On Error Resume Next
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
sComputerName = objWshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
sUsername = objWshShell.ExpandEnvironmentStrings("%USERNAME%")
sLogonServer = objWshShell.ExpandEnvironmentStrings("%LOGONSERVER%")
RutaEngine = "McAfee\Engine"
DatFile = "avvscan.dat"
' Ruta del registro donde se ve si es de 32 o de 64 Bits
X = objWshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session
Manager\Environment\PROCESSOR_ARCHITECTURE")
'PREPARO TODAS LAS VARIABLES PARA UTILIZARLAS EN LA VALIDACION POSTERIOR (2)
If X = "x86" Then '1er IF
'SI es de 32 bits
'Declaro las variables de entorno de 32 Bits
'wscript.echo "Es un sistema operativo de 32 Bits"
sProgramFile = objWshShell.ExpandEnvironmentStrings("%PROGRAMFILES%") & "\"
sComProgramFile =
objWshShell.ExpandEnvironmentStrings("%COMMONPROGRAMFILES%") & "\"
'wscript.echo sProgramfile
'wscript.echo sComProgramFile
sRutaEngine = sComProgramFile & RutaEngine
'wscript.echo sRutaEngine
sRutaDatFile = sRutaEngine & "\" &DatFile
'wscript.echo sRutaDatFile
Else '1er IF
'SI es de 64 bits
'Declaro las variables de entorno de 64 Bits
'wscript.echo "Es un sistema operativo de 64 Bits"
sProgramFile = objWshShell.ExpandEnvironmentStrings("%PROGRAMFILES(X86)%") &
"\"
sComProgramFile =
objWshShell.ExpandEnvironmentStrings("%COMMONPROGRAMFILES(X86)%") & "\"
'wscript.echo sProgramfile
'wscript.echo sComProgramFile
sRutaEngine = sComProgramFile & RutaEngine
'wscript.echo sRutaEngine
sRutaDatFile = sRutaEngine & DatFile
'wscript.echo sRutaDatFile
End If '1er IF
'2- YA CON LAS VARIABLES PROCEDO A VALIDAR LA FECHA DE ACTUALIZACION DEL
ARCHIVO .DAT
'Fecha de hoy
DateToCheck = Date
'wscript.echo "Hoy es: " & DateToCheck
'SACO LA PROPIEDAD DE FECHA DEL ARCHIVO .DAT
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(sRutaDatFile)
sDateLastModified = objFile.DateLastModified
'Wscript.Echo "Fecha de actualización el DAT: " & sDateLastModified
'HAGO LA COMPARACION DE FECHAS
sDateCompara = sDateLastModified + 5
'wscript.echo sDateCompara
sNoActualizado = "DAT_NO_Actualizado"
sSiActualizado = "DAT_SI_Actualizado"
IF sDateCompara < DateToCheck Then '2do IF
sStatusDAT = sNoActualizado
' wscript.echo sStatusDAT
ELSE '2do IF
sStatusDAT = sSIActualizado
' wscript.echo sStatusDAT
END IF '2do IF
'3- AHORA LO GUARDA EN UN ARCHIVO DE TEXTO
sLog = sComputername &","& sUsername &","& sLogonServer &","& DateToCheck
&","& sDateLastModified &","& DatFile &","& sStatusDAT
'wscript.echo sLog
set objFile = nothing
Set objTextFile = objFSO.OpenTextFile _
("\\192.168.25.56\statusdat$\statusdat.txt", ForAppending, True)
objTextFile.WriteLine(sLog)
objTextFile.Close
wscript.quit 0
Leer las respuestas