Fichero de firmas para Outlook con Autoit

Active Directory, Autoit3, Scripts 1 Comentario »

Bueno, parece ser que alguien si está interesado en crear una firma corportiva para todos los usuarios.

El procedimiento lo podemos dividir en dos fases:

  • Creacion de los ficheros que contienen las firmas mediante ejecutable de autoit que todos los usuarios ejecutan mediante el script de login al dominio. Mediante el siguiente script compilado recogemos los datos del Active Directory y los utilizamos para crear la firma en tres formatos, html, rtf y txt. Los tres formatos se crean para que según tengamos configurado nuestro outlook en uno o otro formato (html, rtf o txt) siempre exista el fichero de firmas a cargar.


#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=X:\Scripts\Au3\EmailSign\EmailSign.ico
#AutoIt3Wrapper_outfile=X:\Scripts\Au3\EmailSign\EmailSign.exe
#AutoIt3Wrapper_Res_Description=Crea la firma para el perfil de outlook
#AutoIt3Wrapper_Res_Fileversion=1.1.0.0
#AutoIt3Wrapper_Res_LegalCopyright=David Suárez
#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
#AutoIt3Wrapper_Res_Field=Fecha|%date% %time%
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****


#include <GUIConstants.au3>
#include <Misc.au3>
#include <File.au3>
#include <Process.au3>
#include <Constants.au3>
#include <string.au3>

Dim $UserObj
Dim $sigpath                = ( @AppDataDir &'\microsoft\signatures' )
Dim $sigpathOffice2007      = ( @AppDataDir &'\Microsoft\Firmas' )
Dim $msg
Dim $msg1
Dim $msg2
Dim $domain = @LogonDomain
Dim $username = @UserName
Const $ADS_NAME_INITTYPE_GC = 3
Const $ADS_NAME_TYPE_NT4 = 3
Const $ADS_NAME_TYPE_1779 = 1

$oMyError = ObjEvent("AutoIt.Error", "ComError")
$objRootDSE = ObjGet("LDAP://RootDSE")
; DNS domain name.
$objTrans = ObjCreate("NameTranslate")
$objTrans.Init ($ADS_NAME_INITTYPE_GC, "")
$objTrans.Set ($ADS_NAME_TYPE_1779, @LogonDomain)
$objTrans.Set ($ADS_NAME_TYPE_NT4, @LogonDomain & "\" & @UserName)
$strUserDN = $objTrans.Get ($ADS_NAME_TYPE_1779)
$UserObj = ObjGet("LDAP://" & $strUserDN)
DIM $fullname                = $UserObj.FullName
DIM $title                    = $UserObj.title
DIM $description            = $UserObj.description
DIM $emailaddress            = $UserObj.mail
DIM $officenumber            = $UserObj.TelephoneNumber
Dim $otherFax                = $UserObj.facsimileTelephoneNumber

Dim $Disclaimer                = ("Cuidemos del medio ambiente. Por favor no imprima este correo si no es necesario.")
Dim $Defaultsigname            = ("DefaultSign")
Dim $sigrtf                    = ("DefaultSign.rtf")
Dim $sightm                    = ("DefaultSign.htm")
Dim $sigtxt                    = ("DefaultSign.txt")

If FileExists (@ProgramFilesDir & '\Microsoft Office\Office12\outlook.exe') Then    $sigpath = $sigpathoffice2007

If Not FileExists ( $sigpath &'\'& $sigrtf) Then Call ("make_rtf")
If Not FileExists ( $sigpath &'\'& $sigtxt) Then Call ("make_txt")
If Not FileExists ( $sigpath &'\'& $sightm) Then Call ("make_html")

Func make_rtf ()
$filename1 = $sigpath & '\' & $sigrtf
$msg1 &= "{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fswiss\fcharset0 Arial;}}"& @CRLF
$msg1 &= "\viewkind4\uc1\pard\f0\fs20 -- \par"& @CRLF
$msg1 &= "Rmte.: " & $title & " "&$fullname & "\par"& @CRLF
$msg1 &= $description & "\par"& @CRLF
$msg1 &= "Email: " & $emailaddress & "\par"& @CRLF
$msg1 &= "Tel: 91 888 88 88 Ext. " & $officenumber & "\par"& @CRLF
If $otherFax<>'' Then $msg1 &= "Fax Servicio: " & $otherFax &"\par"& @CRLF
$msg1 &= "Fax: 91 888 88 58 \par"& @CRLF
$msg1 &= "C. Direccion, 42 \par"& @CRLF
$msg1 &= "28001 (Madrid) \par"& @CRLF
$msg1 &= "http://www.tuweb.com \par"& @CRLF
$msg1 &= $Disclaimer & "\par"& @CRLF
$msg1 &= "}"
FileWrite($filename1, $msg1 )
EndFunc

Func make_html ()
$filename = $sigpath & '\' & $sightm
If Not FileExists ( $sigpath &'\smalllogo.gif') Then FileInstall("X:\Scripts\Au3\EmailSign\smalllogo.gif", $sigpath & '\smalllogo.gif')
$msg &= "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">"& @CRLF
$msg &= "<html xmlns=""http://www.w3.org/1999/xhtml"" ><style type=""text/stylesheet"" media=""screen"">a:link, a:visited, a:hover, a:active { font-size:7.5pt;font-family:Verdana,sans-serif;color:#4E5C64; }</style>"& @CRLF
$msg &= "<BODY>"& @CRLF
$msg &= "<div style=""font-size:7.5pt; font-family:Verdana, sans-serif; color: #4E5C64"">"& @CRLF
$msg &= "<p>Rmte.: <strong>" & $title & " "& $fullname & "<br/>"& @CRLF
$msg &= $description & "</strong><br/>"& @CRLF
$msg &= "Email: <a href=""mailto:" & $emailaddress & """>" & $emailaddress & "</a><br/>"& @CRLF
$msg &= "Tel: <strong> 91 888 88 88</strong> Ext. <strong>" & $officenumber& "</strong><br />"& @CRLF
If $otherFax<>'' Then $msg &= "Fax Servicio: <strong>" & $otherFax & "</strong><br />"& @CRLF
$msg &= "Fax General: <strong> 91 888 88 58</strong><br />"& @CRLF
$msg &= "<IMG alt='' hspace=0 src='smalllogo.gif' align='baseline' border='0'><br/>"& @CRLF
$msg &= "C. Direccion, 42<br />"& @CRLF
$msg &= "28001 (Madrid)<br />"& @CRLF
$msg &= "<a href=""http://www.tuweb.com"" style=""color:#4E5C64;"">http://www.tuweb.com</a></p>"
$msg &= "<p style=""font-size:8pt;color: #669900"">" & $Disclaimer & "</p>"
FileWrite($filename, $msg )
EndFunc

Func make_txt ()
$filename2 = $sigpath & '\' & $sigtxt
$msg2 &= "-- " & @CRLF
$msg2 &= "Rmte.: " & $title & " " & $fullname & @CRLF
$msg2 &=  $description & @CRLF
$msg2 &= "Email: " & $emailaddress & @CRLF
$msg2 &= "Tel: 91 888 88 88 Ext. " & $officenumber & @CRLF
If $otherFax<>'' Then $msg2 &= "Fax Servicio: " & $otherFax & @CRLF
$msg2 &= "Fax: 91 888 88 58"& @CRLF
$msg2 &= "C. Direccion, 42"& @CRLF
$msg2 &= "28001 (Madrid)"& @CRLF
$msg2 &= "http://www.tuweb.com"& @CRLF
$msg2 &= $Disclaimer
FileWrite($filename2, $msg2 )
EndFunc

;COM Error function
Func ComError()
If IsObj($oMyError) Then
$HexNumber = Hex($oMyError.number, 8 )
SetError($HexNumber)
Else
SetError(1)
EndIf
Return 0
EndFunc ;==>ComError

  • Indicarle a las estaciones mediante el Active Directory cual es la firma que han de cargar desde el directorio de firmas de cada ordenador.
    Esta parte la tengo explicada en el post Directiva AD de firma por defecto en Outlook 2007
    por lo que no volveré a hacerlo ahora.

Descarga el script de autoit desde aqui.

Autoit3. Comprime ficheros por extensión.

Autoit3, Scripts, Software No hay Comentarios »

Pequeña aplicación escrita en Autoit3 que lee las preferencias de compresión de un fichero ini y comprime con ayuda de la aplicación gratuita 7zip los ficheros con la extensión que se especifique en el fichero ini y deja el archivo comprimido en otro directorio también especificado en el ini.

Fichero Comprime_log.ini :

[General]
DirectorioOrigen=L:\
ExtensionFicheros=*.tmp
DirectorioDestino=L:\logs_anteriores\

Código:

;******************************************************************************
; Este script de autoit3 comprime los ficheros en un zip con extension log del
; directorio donde se ejecuta y lo mueve al directorio ./logs_anteriores
;******************************************************************************
#AutoIt3Wrapper_Res_Comment= Comprime y mueve los ficheros logs del directorio donde se ejecuta
#AutoIt3Wrapper_Res_Description=Comprime logs según archivo ini    ;Description field
#AutoIt3Wrapper_Res_Fileversion=1.1.0.0                                     ;File Version
#AutoIt3Wrapper_Res_LegalCopyright= David Suárez                        ;Copyright field
#AutoIt3Wrapper_Icon = Comprime_log.ico        ;Icon
#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                        ;Version Compilador AutoIt
#AutoIt3Wrapper_Res_Field=Fecha|%date% %time%         

$DirectorioOrigen = IniRead(@ScriptDir & "\Comprime_log.ini", "General", "DirectorioOrigen", "Valor de DirectorioOrigen no encontrado en ini")
$Tipofichero= IniRead(@ScriptDir & "\Comprime_log.ini", "General", "ExtensionFicheros", "Valor de tipo de fichero no encontrado en ini")
$DirectorioDestino = IniRead(@ScriptDir & "\Comprime_log.ini", "General", "DirectorioDestino", "Valor de DirectorioDestino no encontrado en ini")
DirCreate ($DirectorioDestino)

$Directorio= @ScriptDir & "\logs_anteriores"
$ArchivoComprimido="logs_" & @mday & "-" & @MON & "-" & @YEAR & "_" & @HOUR & "." & @MIN & "." &  @SEC & ".zip"
$AppBinFile = @ScriptDir & "\7z.exe"
$archivo_comando=@ScriptDir & "\logs.cmd"

$Origen= $DirectorioOrigen & $ArchivoComprimido

$Destino= $DirectorioDestino & $ArchivoComprimido

;preparo el fichero de comandos para ejecutar
if FileExists($archivo_comando) Then FileDelete($archivo_comando)
FileOpen($archivo_comando, 2 )
FileWriteLine($archivo_comando,$AppBinFile & " a -tzip " & $ArchivoComprimido & " " & @ScriptDir & "\" & $Tipofichero )
FileWriteLine($archivo_comando,"
exit" )
FileClose($archivo_comando)

Sleep(5000)
;ejecuto el fichero de comando
RunWait (@ComSpec & ' /k ' & $archivo_comando)
Sleep(5000)
FileMove($Origen, $Destino)
Sleep(5000)
FileDelete ($archivo_comando)
FileDelete($DirectorioOrigen & $Tipofichero)

Descargar los ficheros fuentes de la aplicación y la aplicación.

Autoit3. Funcion para seleccionar el archivo mas actual de un directorio.

Autoit3, Scripts No hay Comentarios »

En ocasiones necesitamos que el programa nos devuelva el fichero mas actual de todos. En mi caso para seleccionar el ultimo backup de un sistema, descomprimirlo y ponerlo disponible.

La función que he utilizado es la siguiente:

Func _GetNewestFileName($sPath, $iMode=0) ;$iMode: 0 = Modificado, 1 = Creado, 2 = Accedido
    Local $sNewestFile = ""
    Local $sNextFile, $iNewsetFileSize, $iCurrentFileSize
    Local $hSearch = FileFindFirstFile($sPath & "\" & $Mask)
    If $hSearch = -1 Then Return SetError(1, 0, -1)
   
    While 1
        $sNextFile = FileFindNextFile($hSearch)
        If @error Then ExitLoop
        If StringInStr(FileGetAttrib($sPath & "
\" & $sNextFile), "D") Then ContinueLoop
        $iNewsetFileSize = FileGetTime($sPath & "
\" & $sNewestFile, $iMode, 1)
        $iCurrentFileSize = FileGetTime($sPath & "
\" & $sNextFile, $iMode, 1)
        If $sNewestFile = "
" Or $iCurrentFileSize> $iNewsetFileSize Then $sNewestFile = $sNextFile
    WEnd
   
    FileClose($hSearch)
    Return $sNewestFile
EndFunc

Para llamar a la función utilizo:

$Mask="HOSPSURG_*.*" ;la mascara que voy a utilizar
$NewsetFileName = _GetNewestFileName("\\vivaldi\Backup_HPS$\respaldo\", 0)
MsgBox(64, "
Resultado", "Nombre de archivo mas actual: " & $NewsetFileName)

Instala el java 1.6.0.3 en el pc que lo ejecute

Autoit3 2 Comentarios »

Aqui teneis un script que he utilizado para instalar java en los pcs de una red con dominio.

Todo pc que lo ejecute se le instalará el java, evidentemente está escrito para mi dominio pero cualquiera que necesite cambiarlo para su red puede consultarme como adaptarlo.

#AutoIt3Wrapper_aut2exe=C:\Archivos de programa\AutoIt3\Aut2Exe\Aut2Exe.exe
#AutoIt3Wrapper_icon=X:\Scripts\Au3\Java_Install\Java_Install.ico
#AutoIt3Wrapper_outfile=X:\Scripts\Au3\Java_Install\Java_Install.exe
#AutoIt3Wrapper_Res_Comment=davidsuarez.es
#AutoIt3Wrapper_Res_Description=Instala el java si no existe
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n
#AutoIt3Wrapper_Run_AU3Check=1

;############################################
;SCRIPT CREADO POR DAVID SUAREZ PARA INSTALAR
;LA VERSION DE JAVA jre1.6.0_03 DESATENDIDA
;TAMBIEN ACTUALIZA LOS ARCHIVOS DE
;ENCRIPTACION DE 256 BITS
;############################################

;$TMPDIR = EnvGet ( "TEMP")
$TMPDIR = "c:\Temp"
$ALLUSERSPROFILE = EnvGet ( "ALLUSERSPROFILE")
$PATH = EnvGet ("PATH")

Lee el resto de esta entrada »

WP Theme & Icons originales por N.Design Studio.
Aviso Legal Entradas RSS Comentarios RSS Iniciar sesión