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