El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Libreta De Direcciones De Active Directory En Outlook 2003

Posted by urpiano en Viernes 10 \10\UTC noviembre \10\UTC 2006

Si estás usando Outlook como cliente de correo, puedes hacer que aparezca la información del directorio en la libreta de direcciones. En Outlook, menú HerramientasCuentas de correo electónico…, seleccionas Agregar una nueva libreta de direcciones o directorios, pulsas Siguente>, dejas seleccionado Servicio de directorios de Internet (LDAP), pulsas Siguiente>, pones como nombre de servidor el nombre FQDN de tu controlador de dominio, marcas la casilla El servidor necesita que inicie sesión y pones un usuario del dominio y su contraseña (yo lo que hago es crear un usuario para que haga esto, y que tan solo pertenezca al grupo Usuarios del dominio). Conviene que pulses también el botón Más configuraciones…, para así poner un nombre para mostrar más descriptivo a la libreta cuando la vea el usuario; de no hacerlo así, aparecerá el nombre FQDN del controlador del dominio, quedando mejor que ponga algo así como Directorio LDAP de <nombre de tu empresa>.

Esto, está claro que es engorroso hacerlo equipo por equipo, por ello hay que buscar alguna manera de automatizarlo un poco. Puedes crear un fichero .PRF para acelerar esto un poco. El fichero sería algo así:

; **************************************************************
; Section 1 – Profile Defaults
; **************************************************************

[General]
Custom=1
ProfileName=EveryAccount
DefaultProfile=Yes
OverwriteProfile=Append
ModifyDefaultProfileIfPresent=TRUE

; **************************************************************
; Section 2 – Servicios en el Perfil
; **************************************************************

[Service List]
Service1=LDAP Directory

;***************************************************************
; Section 4 – Valores Predeterminados Servicio
;***************************************************************

[Service1]
UniqueService=No
ServerName=<nombre FQDN de tu controlador de dominio>
DisplayName=Directorio LDAP de <nombre de tu empresa>.
ConnectionPort=389
UseSSL=FALSE
UseSPA=FALSE
DisableVLV=0
UserName=<UPN del usuario de conexión a LDAP (ej: libreta@tudominio.local)>
SearchBase=<DN de la raíz de tu dominio (ej: DC=tudominio,DC=local)>
SearchTimeout=60
MaxEntriesReturned=100

Esto te permite hacer más rápido el proceso, pero sigue teniendo un inconveniente, y es que obliga a ir ejecutando el fichero usuario por usuario, equipo por equipo, pues el automatismo del fichero .PRF no permite incluir la contraseña. Podrías poner el fichero .PRF en una carpeta de red a la que acceda todo el mundo y crear un tutorial que les explique lo que deben hacer:

1. Cerrar Outlook si está abierto
2. Hacer doble click sobre el fichero.
3. Aceptar en el mensaje de advertencia.
4. Teclear la contraseña en el diálogo que aparece y pulsar aceptar.
5. Cerrar y abrir Outlook.

Otro enfoque sería que hicieras un script VBScript, en el que usando SendKeys realizaras esas tareas de forma automática y lo asignases como script de inicio de sesión:

'Este script se encarga de configurar el directorio de Active Directory
'en Outlook 2003

'© Fernando Reyes – Octubre de 2006

'Llamada a la función que averigua si ya está configurado el directorio LDAP
'En caso positivo se termina el script
if f_LibretaEncontrada = True Then WScript.Quit

'Creamos un objeto Shell
Set obj_Shell = CreateObject("WScript.Shell")

'Miramos la ruta de instalación de Office 2003
str_RutaOffice = obj_Shell.RegRead _
("HKLMSoftwareMicrosoftOffice11.0CommonInstallRootPath")

'En el caso de no encontrar la ruta de Office 2003 significa que no está instalado
'y por tanto finalizamos el script
If str_RutaOffice = "" Then WScript.Quit

'Establecemos el comando que se ejecutará en una llamada al método Run
'del objeto Shell. Este comando consiste en ejecutar Outlook con el modificador
'"/importprf", que nos permite importar un fichero PRT de perfil de Outlook.
'Este fichero lo hemos creado desde el asistente de instalación del Kit de
'Recursos de Office, guardando el fichero de perfil cuando da esa
'oportunidad
str_Comando = """" & str_RutaOffice & _
              "OUTLOOK.EXE"" /importprf \servidorcarpetalibreta.prf"

'Ejecutamos el comando
obj_Shell.Run str_Comando,0,False

'Esperamos a que esté abierto Outlook con la ventana de configuración del
'Directorio LDAP
Do Until bol_Exito = True

    bol_Exito = obj_Shell.AppActivate("Directorio LDAP de TuEmpresa")
    Wscript.Sleep 10

Loop

'Nos movemos por la ventana, a la caja de texto donde se teclea la contraseña,
'por medio de emulación de pulsaciones mediante SendKeys
obj_Shell.SendKeys "{TAB 3}"
'"Tecleamos" la contraseña
obj_Shell.SendKeys "libreta"
'"Pulsamos" Enter
obj_Shell.SendKeys "{ENTER}"
'Damos tiempo a que se cierre la ventana
WScript.Sleep 200

'Vaciamos el objeto Shell
Set obj_Shel = Nothing

'Cerramos Outlook
obj_Shell.SendKeys "%{F4}"

Function f_LibretaEncontrada()
'Esta función devuelve True si el directorio LDAP está ya configurado
'y False en caso contrario. Para ello, busca en las en las claves que están
'en "HKCUSoftwareMicrosoftWindows NTCurrentVersionWindows Messaging
'SubsystemProfilesOutlook" buscando el valor
'de nombre "001e6600" y de contenido "tudc.tudominio.local",
'que es el valor que almacena el servidor LDAP que tiene configurada una conexión
'a un directorio LDAP en la libreta de direcciones. Cuando encuentra este valor,
'la función devuelve True, si no lo encuentra devuelve False

    Dim str_Devolucion
    Dim str_Clave
    Dim str_NombreEquipo
    Dim obj_Registro
    Dim str_Comando
    Dim str_Subclave
    Dim arr_NombresDeClaves
    Dim str_Valor

    Const HKEY_CURRENT_USER = &H80000001

    str_NombreEquipo = "."

    Set obj_Registro = GetObject("winmgmts:\" & str_NombreEquipo & _
                                  "rootdefault:StdRegProv")

    str_Clave = "SoftwareMicrosoftWindows NTCurrentVersion" & _
                "Windows Messaging SubsystemProfilesOutlook"
    obj_Registro.EnumKey HKEY_CURRENT_USER, str_Clave, arr_NombresDeClaves

    'Si no hay ninguna subclave salimos de la función
    If IsArray(arr_NombresDeClaves) = 0 Then

        Set obj_Registro = Nothing
        f_LibretaEncontrada = False
        Exit Function

    End If

    For Each str_Subclave in arr_NombresDeClaves

        obj_Registro.GetStringValue HKEY_CURRENT_USER, str_Clave & "" & _
                                    str_SubClave,"001e6600", str_Valor

        If str_Valor = "tudc.tudominio.local" Then

            Set obj_Registro = Nothing
            f_LibretaEncontrada = True
            Exit Function

        End If

    Next

    f_LibretaEncontrada = False

End Function

Fichero PRF: Este es el fichero PRF que configura la libreta LDAP en Outlook. Se debe cambiar su extensión a PRF, editarlo para poner los valores deseados de servidor y usuario de conexión a AD y ubicarlo en una carpeta de red accesible por los usuarios.
Fichero VBS: Este es el script VBScript que configura de forma automatizada la libreta LDAP en Outlook. Se debe cambiar su extensión a VBS y modificarlo para que invoque al PRF en la ruta donde esté ubicado, que ponga la contraseña del usuario para la conexión con AD que se especificó en el PRF.

25 comentarios to “Libreta De Direcciones De Active Directory En Outlook 2003”

  1. Alex said

    Que tal… sabes estoy intentando crear una libreta de direcciones conectandome a un ldap sin embargo en el outlook no me muestra la libreta que he creado, por lo que he podido ver en tu articulo puedo ver que con esto puedo solucionar, ahora bien no tengo idea de como crear el archivo PRF y donde colocarlo o como ejecutarlo…

  2. Oziel Uloa said

    Hola Alex:

    Yo he seguido los pasos y lo he conseguido. Lo que si tienes que tener muy claro son los siguentes campos:
    Nombre de servidor el FQDN : MiServidorDeDominio.MiDominio.Local
    El la sesión: miusuario@MiDominio.Local y su respectiva contraseña.
    Y en la búsqueda: dc=MiDominio,dc=Local

    Reinicias el Outlook y luego lo vuelvs a abrir y te vas a la libreta de direcciones (No a los contactos del Outlook) y ahí eligiendo el nombre de libreta que le hayas dado te vendrán las direcciones que te proporcione LDAP. Ojo!! Tienes que meter en el Directorio Activo los correos electrónicos de los usuarios de lo contrario no te aparecerá ningun contacto.

    un saludo

  3. urpiano said

    El PRF lo creas con el kit de recursos de Office:

    Cómo Crear un archivo PRF para configurar perfiles MAPI durante una instalación personalizada de Outlook 2002

  4. Zquall said

    Perfecta explicacion.!! Muchas Gracias me fuincionó de maravilla!! saludos

  5. vfrances said

    A la hora de aplicar el fichero .PRF, no me pide la contraseña de usuario y al abrir Outlook no me aparece la libreta LDAP. Que puede pasar?

  6. urpiano said

    Vfrances,

    ¿Qué versión de Outlook? ¿Está correctamente construido el fichero PRF? ¿Lo ejecutas teniendo Outlook abierto (se debe ejecutar con Outlook cerrado?

  7. vfrances said

    Lo he estado probando con Outlook 2003 (cerrado)y lo he construido tal cual la explicación de arriba:

    ; **************************************************************
    ; Section 1 – Profile Defaults
    ; **************************************************************

    [General]
    Custom=1
    ProfileName=EveryAccount
    DefaultProfile=Yes
    OverwriteProfile=Append
    ModifyDefaultProfileIfPresent=TRUE

    ; **************************************************************
    ; Section 2 – Servicios en el Perfil
    ; **************************************************************

    [Service List]
    Service1=LDAP Directory

    ;***************************************************************
    ; Section 4 – Valores Predeterminados Servicio
    ;***************************************************************

    [Service1]
    UniqueService=No
    ServerName=servidor.dominio.local
    DisplayName=Directorio LDAP de empresa.
    ConnectionPort=389
    UseSSL=FALSE
    UseSPA=FALSE
    DisableVLV=0
    UserName=usuario@dominio.local
    SearchBase=dc=dominio,dc=local
    SearchTimeout=60
    MaxEntriesReturned=100

    Si la añado de forma manual funciona correctamente. Con Outlook 2007 tampoco me funciona. Y me interesaría poder automatizarlo para todos los usuarios.

    Un Saludo y gracias por responder.

  8. urpiano said

    VFrances,

    Con Outlook 2007 se presenta un problemilla, y es que Office 2007 cambia la asignación en el registro del tipo de archivo PRF y ya no lo abre Outlook sabiendo que tiene hacer una importación. Por ello, para automatizarlo con Outlook 2007, sería necesario que creases también un BAT que ejecutase:

    “%programfiles%\Microsoft Office\Office12\Outlook.exe” /importprf fichero.prf

    Si quieres que se pida confirmación debes poner:

    “%programfiles%\Microsoft Office\Office12\Outlook.exe” /promptimportprf fichero.prf

  9. Vfrances said

    Hola Urpiano, he estado probando lo de crear un bat en el que ejecute la importación, pero al ejecutarlo lo que me lanza es el asistente de configuración de una cuenta nueva en el Outlook. ¿Esto es normal?

    Gracias por todo.

  10. urpiano said

    Vfrances,

    No, no lo veo normal ¿Puede ser que el fichero PRF sea incorrecto en su sintaxis?

  11. Misael said

    Hola..
    Mi pregunta es la siguiente..

    Tengo una pagina donde c registran los usuarios. Con sus respectivos formularios desarrollados en php y esta c envia a mi servidor de base de datos (Mysql), quedando almacenados en ello, mi empresa me pide que esa lista de usuarios este en el outlook 2003 como contactos. Mysql tiene la opcion de poder exportarlos a excel pero al momento d exportarlos, outlook, no lo reconoce. pero bueno este es otro tema. Lo importante aqui es automatizar esto. Crear un .bat para bajar este libreta de direcciones al outlook y todos los usuarios tengan esta lista de contactos en cada uno de sus equipos.

    Espero tengas algun consejo para hacer esto gRaX.

  12. urpiano said

    Misael,

    Yo estudiaría cómo espera un fichero de valores separados por comas Outlook para importarlo como libreta y crearía una consulta en MySQL que su devolución generase el fichero en la forma deseada y que luego fuese importado sin problema. No obstante no sería tan bueno como cuando lo haces por medio AD, ya que la libreta LDAP permite que aparezcan los que están, de forma que las altas, bajas y modificaciones se reflejan en la libreta de los usuarios de forma automática, mientras que con el sistema éste de los ficheros de importación, cuando hay algún cambio es necesario generar un nuevo fichero de importación, borrar las entradas de la libreta en el Outlook del usuario y volver a importar..

  13. Misael said

    Gracias, por el tip.
    Una tecnica q implemente fue crear la base d datos con los campos de outlook, al momento de importarlos al outlook solamente tengo que modificar en insertar–>Definicion—>Nombres. para que outlook los acepte todo esto en excel, despues guardarlo como libro de excel..
    Pero sigue siendo algo tedioso, me gusto la forma en que lo haces, yo no soy muy experto en esto, es por eso que pido tu apoyo, para este proyecto.

    Una pregunta s, si me puedes decir paso a paso la forma en que lo realizas:

    Donde depositas los archivos.
    como haces que los demas equipos vayan automaticamente al archivo en donde esta el directorio.

    c configuren y lo bajen.

    Bueno de hecho son muchas preguntas, no c si me puedas pasar tu direccion email, para contactarte.

    mi correo s cracker_one_1@hotmail.com.

    La verdad me interesa mucho este tema.

    Una pregunta seria mejor hacerlo en un servidor con windows o linux?.

    Espero tu respuesta. Muchas gracias.

  14. urpiano said

    Misael,

    Los archivos los pongo en una carpeta compartida, de forma que se pueda acceder desde el equipo en el que quieras dar de alta la libreta de direcciones. Para hacerlo de forma automática, puedes usar el script que pongo en la entrada como script de inicio de sesión en una GPO. Si no sabes nada de GPOs, este artículo te podría ayudar:

    Directivas de grupo
    http://freyes.svetlian.com/GPOS/GPOS.htm

  15. MISAEL said

    MUCHAS GRACIAS POR TU APOYO Y PUES LO DEMAS CREO QUE YA CORRE POR MI CUENTA, Y CUALQUIER DUDA SÉ QUE CONTARE CON TU AYUDA. Y EN LO QUE TE PUEDA AYUDAR AKI TIENES UN ALIADO.

    GRACIAS

  16. LUISA said

    hola!!!

    lo que pasa es que abri mi cuenta de correo que m da mi escuela, en la escuela, pero al configurar outlook 2003 en mi casa no aparece la libreta de direcciones o contactos que ya tengo agragados.
    ¿que puedo hacer para darla de alta en mi computadora?

    por favor ayudenme les los agradecere mucho

  17. inquina said

    LUISA,
    si tu ordenador de casa no está conectado a la red de la escuela, no podrás ver tus correos, lo que sí puedes hacer es llevarte los contactos de esta manera con un archivo de extensión .pst :

    – Menu Archivo –> Importar y exportar
    – Exportar a un archivo –> Siquiente.
    – Archivo de carpetas personales (pst) –> Siguiente.
    – Seleccionas la carpeta de Contactos –> Selleccionas Incluir subcarpetas (si aplica) –> Siguiente.
    – guardas el archivo PST en un pendrive, por ejemplo.

    Para importarlo desde el outlook del ordenador de casa:

    – Menu Archivo –> Importar y exportar.
    – Importar desde otro programa o archivo –> Siguiente.
    – Archivo de carpetas personales (pst del pendrive) –> Siguiente.

    Lo que se hace es exportar(llevarte) el archivo .pst de los contactos e importar(traer) al otro outlook.

    Espero que te sirva.

  18. juanito said

    Buenos dias,

    Si quieren agregar una nueva libreta de direcciones desde un servidor LDAP, hay un programa llamado JLDAP, el cual permite ver todas las cuentas de un servidor LDAP y mantenerlas en un listado de usuarios en la libreta de direcciones.

    Lo pueden descargar de http://www.sdgltda.com/index.php/Productos/ldap

  19. ismael said

    buenastardes amigos, si jalo el primer scritp, solo q aki en mi empresa se tiene 2 grupos, como hacer para q extraiga los usuarios mas bien los correos de un grupo especificamente… saludos, gracias por su ayuda

  20. urpiano said

    Ismael,

    No se puede hacer eso, pues la conexión que realiza Outlook es directamente con LDAP y lista los objetos que encuentre que tengan dirección de correo, pero no busca en membresías de grupo y muestra los resultados. Podrías emular ese comportamiento si sistuases las cuentas de usuario que quieres que se muestren en una determinada unidad organizativa y configurases que la libreta tuviese como raíz esa unidad organizativa en concreto, no el directorio completo; es decir, que donde pones:

    SearchBase=DC=tudominio,DC=local

    Pondrías

    SearchBase=OU=Unidad Organizativa,DC=tudominio,DC=local)>

  21. Marcelo Candamil said

    Buenas.

    Tengo un problemita aparentemente con la validacion del usaurio.
    Cree una cuenta en el dominio llamada outlookldap perteneciente al grupo usuarios del dominio como tu lo mencionaste. Pero no me trae los contactos desde el servidor de dominio. En cambio si le ingreso una cuenta administrador si me deja.

    Tendre que habilitar algo mas?

    Saludos

    • urpiano said

      Marcelo Candamil,

      Deberías revisar los permisos en las OUs donde estén los contactos para ver si los usuarios “normales” tienen permiso de acceso. Eso lo haces desde usuarios y eequipos de Active Directory, en el menú Ver activas las opciones avanzadas, haces click derecho sobre la OU, propiedades y en el cuadro de diálogo te situas en la pestaña Seguridad.

  22. Pablo said

    Estoy tratando de cargar una libreta en outlook 2007, ejecute el comando “%programfiles%\Microsoft Office\Office12\Outlook.exe” /promptimportprf fichero.prf apuntando al archivo .PRF generado con los datos de mi empresa, me pregunta si deseo continuar pincho “SI”, no me pide la contraseña, me abre el outlook pero no me aparece la libreta indicada.

    Agradezco comentarios.

  23. acceder al arbol de mi directorio activo said

    hola amigos necesito acceder al arbol de mi directorio activo y no tengo idea… alguien me podría ayudar en el tema?… le estaría muy agradecido…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: