Con este script se des-registra, sobreescribe y registra una dll, el proceso se automatiza mediante script de inicio de AD.
Consideraciones previas y entorno
- El script se pondrá en las politicas de grupo (script de inicio) en Active Directory.
- Es necesaria una carpeta de acceso público donde se alojarán la dll a actualizar.
- En este caso el usario que ejecuta el script no tiene privilegios sobre la carpeta destino local, por lo que se han de cambiar los permisos de la carpeta destino antes y despues de la distribución.
- Se actualiza la dll en función de la versión de la misma.
Definición de los elementos
- Ruta donde se ubica la dll en el equipo local: "C:\KewaN\DIKewanReportsV3.dll"
- Ruta carpeta compartida que aloja la dll a distribuir: "\\Servidor\KEWAN\DIKewanReportsV3.dll"
- La escritura de Log es opcional, solo es un registro de control de actualización.
Set objFS = CreateObject("Scripting.FileSystemObject")
'------------------ACTUALIZACION DLL--------------------------------------------
Sub Principal
'Definicion de objeto para la ejecución de comandos shell
Set objShell = CreateObject("WScript.Shell")
'Definicion de ubicacion de dll KewanReports
Dim rutaLocal
rutaLocal= "C:\KewaN\DIKewanReportsV3.dll"
Dim rutaRemota
rutaRemota= "\\Servidor\KEWAN\DIKewanReportsV3.dll"
Dim versioninstalada
versioninstalada = objfs.GetFileVersion(rutaLocal)
Dim versionvigente
versionvigente = "18.5.0.0"
If versioninstalada <> versionvigente Then
'Concecer permisos sobre C:\Kewan
'para el grupo Todos con Control Total
objShell.Run "cacls C:\Kewan /T /E /G Todos:C"
'Establece una pause para que finalice el
'proceso de cambio de permisos
WScript.Sleep(2000)
Select Case objFS.FileExists(rutaLocal)
Case True
'Des-Registra dll local
objShell.Run "regsvr32.exe " & rutaLocal & " /s /U"
'Elimina dll local
objFS.DeleteFile rutaLocal, Y
Principal
Case False
'Copia la dll de la version nueva
objFS.CopyFile rutaRemota, rutaLocal
'Registra dll vigente
objShell.Run "regsvr32.exe " & rutaLocal & " /s"
'Llamar a la escritura del log pasando
'la version de la dll local
KewanReport_Log ()
End select
WScript.Sleep(2000)
objShell.Run "regsvr32.exe " & rutaLocal & " /s"
'Revocar permisos en C:\Kewan para el grupo Todos
objShell.Run "cacls c:\Kewan /E /R Todos"
End if
End Sub
'------------------ESCRITURA LOG--------------------------------------------
Sub KewanReport_Log ()
Const ForAppending = 8
'Define el archivo log
Dim rutaLog
rutaLog = "\\Servidor\KEWAN\KewanReport_Log.txt"
'Apertura de archivo log en modo Appendig
'(=>inserta texto en última linea)
Set objFile = objFS.OpenTextFile (rutaLog, ForAppending)
'Obtener direccion IP y nombre de la maquina donde se ejecuta el script
Set colAdapters = GetObject ("winmgmts:" & "!\\.\root\cimv2").ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Dim dirIP
For Each objAdapter in colAdapters
'Lista las direcciones IP de la maquina
For i = LBound(objAdapter.IPAddress) To UBound(objAdapter.IPAddress)
dirIP = objAdapter.IPAddress(i)
Next
'Introduce los valores recogidos de la maquina a un archivo de texto
objFile.WriteLine Date & "," & Time & "," & _
objAdapter.DNSHostName & "," & dirIP
objFile.Close
Next
End Sub
' Ejecución de procedimientos
Principal
KewanReport_Log

No hay comentarios:
Publicar un comentario