Esta guía presenta la administración por lotes del servicio Active Directory® mediante la utilidad Formato de intercambio de datos LDAP (Protocolo ligero de acceso a directorios) (LDIF) y varios programas de ejemplo que puede escribir con el sistema de desarrollo de Microsoft Visual Basic® Scripting Edition (VBScript).
| Introducción | |
| Introducción | |
| Usar VBScript y ADSI | |
| Apéndice: Usar LDIFDE | |
| Recursos adicionales |
Las guías detalladas de desarrollo de Windows Server 2003 proporcionan experiencia práctica para muchas configuraciones de sistemas operativos. Las guías comienzan estableciendo una infraestructura de red común a través de la instalación de Windows Server 2003, la configuración de Active Directory, la instalación de una estación de trabajo Windows XP Professional y, por último, la incorporación de esta estación de trabajo a un dominio. Las guías detalladas posteriores asumen que posee esta infraestructura de red común. Si no desea seguir esta infraestructura de red común, tendrá que efectuar las modificaciones pertinentes mientras utiliza estas guías.
La infraestructura de red común requiere que se sigan las instrucciones de las guías siguientes.
| • | Parte I: Instalar Windows Server 2003 como un controlador de dominio |
| • | Parte II: Instalar una estación de trabajo Windows XP Professional y conectarla a un dominio |
Una vez configurada la infraestructura de red común, pueden utilizarse todas las guías detalladas adicionales. Tenga en cuenta que algunas guías detalladas pueden tener requisitos previos adicionales además de los requisitos de infraestructura de red común. Todos los requisitos adicionales se indicarán en la guía detallada específica.
Las guías detalladas de desarrollo de Windows Server 2003 se pueden implementar en un entorno de laboratorio físico o mediante tecnologías de creación de entornos virtuales como Microsoft Virtual PC 2004 o Microsoft Virtual Server 2005. La tecnología de máquina virtual permite a los usuarios ejecutar varios sistemas operativos simultáneamente en un único servidor físico. Virtual PC 2004 y Virtual Server 2005 están diseñados para aumentar la eficacia operativa de las pruebas y desarrollo de software, la migración de aplicaciones heredadas y los escenarios de consolidación de servidores.
En las guías detalladas de desarrollo de Windows Server 2003 se asume que todas las configuraciones se realizarán en un entorno de laboratorio físico, aunque la mayoría de ellas se pueden aplicar a un entorno virtual sin necesidad de modificarlas.
La aplicación de los conceptos proporcionados en estas guías detalladas a un entorno virtual se escapa al alcance de este documento.
Las compañías, organizaciones, productos, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares y datos mencionados aquí son ficticios. No se pretende indicar, ni debe deducirse ninguna asociación con compañías, organizaciones, nombres de dominio, direcciones de correo electrónico, logotipos, personas, lugares o datos reales.
Esta infraestructura común está concebida para su uso en una red privada. El nombre ficticio de la compañía y el nombre DNS (Sistema de nombres de dominio) utilizados en la infraestructura común no están registrados para su uso en Internet. No debe utilizar estos nombres en una red pública ni en Internet.
El objetivo de la estructura del servicio Active Directory para esta infraestructura común es mostrar cómo funciona la administración de cambios y configuración de Windows Server 2003 con Active Directory. No se ha diseñado como un modelo para configurar Active Directory en una organización.
Esta guía presenta la administración por lotes del servicio Active Directory mediante la utilidad Formato de intercambio de datos LDAP (LDIF) y un programa simple que puede escribir con el sistema de desarrollo de Visual Basic Scripting Edition (VBScript). Con estas herramientas, puede exportar, importar y modificar objetos como usuarios, contactos, grupos, servidores, impresoras y carpetas compartidas.
En esta guía se realizarán las siguientes tareas.
| • | Ejecutar operaciones por lotes mediante la utilidad Ldifde.exe. Exportar usuarios a un formato de archivo compatible con el formato estándar LDIF. Realizar una modificación por lotes de todos los usuarios. Utilizar LDIF para crear un nuevo usuario y eliminar un usuario. |
| • | Ejecutar operaciones por lotes mediante Interfaces de servicio de Active Directory (ADSI) y VBScript. Exportar usuarios a un archivo de texto mediante una secuencia de comandos escrita con ADSI y VBScript. Utilizar VBScript para realizar una modificación por lotes de todos los usuarios. Utilizar VBScript para crear un nuevo usuario y eliminar un usuario. |
| • | Parte 1: Instalar Windows Server 2003 como un controlador de dominio |
| • | Guía detallada de configuración de controladores de dominio adicionales |
La utilidad LDIF es un borrador estándar de Internet para un formato de archivo que se puede utilizar para realizar operaciones por lotes en directorios que cumplen los estándares LDAP. LDIF se puede utilizar para exportar e importar datos y permite realizar operaciones por lotes como Agregar, Modificar y Eliminar en Active Directory. En el sistema operativo Windows Server 2003 se incluye una utilidad llamada Ldifde.exe que proporciona compatibilidad con las operaciones por lotes basadas en el estándar LDIF.
También puede usar la utilidad Ldifde.exe para ampliar el esquema, exportar información de usuarios y grupos de Active Directory a otras aplicaciones o servicios y rellenar Active Directory con datos de otros servicios de directorio.
Nota: la utilidad Ldifde.exe es el método recomendado para insertar extensiones de esquemas probadas en un entorno de producción.
Puede usar la utilidad Ldifde.exe para exportar todos los objetos de la unidad organizativa Mercadotecnia, creada en "Guía detallada de infraestructura común (Parte 1)". En este ejemplo se busca la unidad organizativa de algunos objetos y se crea un archivo con los nombres de esos objetos.
Para exportar objetos mediante LDIF
1. | Inicie sesión como administrador de dominio. |
2. | Haga clic en el botón Inicio, seleccione Todos los programas y Accesorios y, a continuación, haga clic en Símbolo del sistema. |
3. | En el símbolo del sistema, escriba: ldifde -f marketing.ldf -s hq-con-dc-01 -d "ou=mercadotecnia,ou=cuentas,dc=contoso,dc=com" -p subtree -r "(objectCategory=CN=Persona,CN=Esquema,CN=Configuración,DC=contoso,DC=com)" |
4. | Presione ENTRAR. Los resultados deben ser similares a los que se muestran en la Figura 1. El comando anterior crea un archivo LDIF llamado Marketing.ldf mediante la conexión al servidor llamado HQ-CON-DC-01 y la ejecución de una búsqueda en los subárboles de la unidad organizativa Mercadotecnia de todos los objetos de la categoría Persona. El archivo de salida se almacenará en la raíz del directorio Documents and Settings del usuario actual. Nota: objectCategory es un atributo indizado diseñado para aumentar la velocidad de búsqueda. Puede utilizar este archivo LDIF para realizar una importación por lotes de todos los objetos de la unidad organizativa Mercadotecnia a cualquier otro directorio compatible con LDAP. Puede que algunos atributos no se apliquen a otras implementaciones de LDAP. En concreto, si utiliza este mecanismo para importar los objetos a otro Active Directory, algunos atributos deben omitirse porque se generan automáticamente durante la creación de objetos. (Si no se omiten específicamente, la operación puede producir un error.) Por ejemplo, el comando LDIFDE que se utiliza para omitir estos atributos es idéntico al comando anterior, con la única diferencia de que incorpora el parámetro –m. ldifde -f marketing.ldf -s hq-con-dc-01 -d "ou=mercadotecnia,ou=cuentas,dc=contoso,dc=com" -p subtree -r "(objectCategory=CN=Persona,CN=Esquema,CN=Configuración,DC=contoso,DC=com)" –m |
En el siguiente ejemplo, toda la organización Mercadotecnia se ha movido a una nueva dirección de oficina. Se utiliza LDIF para realizar una modificación por lotes de todos los objetos de usuario de la organización Mercadotecnia mediante la modificación de los atributos de provincia, calle, localidad y código postal.
Para modificar objetos mediante LDIF y el Bloc de notas
1. | Haga clic en el botón Inicio, seleccione Todos los programas y Accesorios y, a continuación, haga clic en Símbolo del sistema. |
2. | En el símbolo del sistema, escriba los siguiente comandos para extraer las entradas necesarias. ldifde -f marketing.ldf -s hq-con-dc-01 -d "ou=mercadotecnia,ou=cuentas,dc=contoso,dc=com" -p subtree –r "(objectCategory=CN=Persona,CN=Esquema,CN=Configuración,DC=contoso,DC=com)" -l "1,st,streetaddress,postalcode" Nota: las entradas de City, State, Address y PostalCode no se han definido en las guías de infraestructura de red común para los objetos de usuario incluidos en la unidad organizativa Mercadotecnia. Es aconsejable que rellene estos campos para cada objeto de usuario de la unidad organizativa Mercadotecnia antes de realizar la exportación. |
3. | Presione ENTRAR. |
4. | Abra el archivo marketing.ldf con el Bloc de notas. ![]() Figura 2. Revisión de un archivo LDF |
5. | En el Bloc de notas, modifique cada entrada de objeto de usuario en Marketing.ldf de forma que tenga un aspecto similar al que se muestra en la Figura 3. Nota: debe guardar el archivo como un archivo .ldf. ![]() Figura 3. Modificación de un archivo de importación LDF |
6. | Cierre el Bloc de notas. En la ventana del símbolo del sistema, escriba: ldifde –i -f marketing.ldf -s hq-con-dc-01 |
7. | Presione ENTRAR. Los resultados deben ser similares a los que se muestran en la Figura 4. ![]() Figura 4. Importación correcta de un archivo LDF |
8. | Para confirmar que los atributos de objetos de usuario se han modificado correctamente, utilice el complemento Usuarios y equipos de Active Directory. (Para obtener ayuda con el uso de este complemento, consulte la Guía detallada de administración de Active Directory.) |
Nota: otra utilidad llamada Csvde.exe realiza las mismas funciones de exportación que la utilidad Ldifde.exe, pero emplea un formato de archivo separado por comas. Las operaciones de importación con esta utilidad son sólo “agregar”; no ofrece la capacidad de modificar ni eliminar objetos. El formato de archivo de valores separados por comas (CSV) es compatible con aplicaciones como Microsoft Excel.
En los ejemplos siguientes, se utiliza LDIF para agregar y eliminar usuarios de Active Directory.
Para crear un nuevo usuario mediante LDIF
1. | Haga clic en el botón Inicio y en Ejecutar, escriba Bloc de notas Newuser.ldf y, a continuación, haga clic en Aceptar. Cuando se le indique, haga clic en Sí para crear un nuevo archivo. |
2. | Agregue el siguiente texto al archivo. dn: CN=Pilar Ackerman,OU=Mercadotecnia,OU=Cuentas,DC=contoso,DC=com changetype: add cn: Pilar Ackerman objectClass: user samAccountName: Pilar givenName: Pilar sn: Ackerman |
3. | Guarde y después cierre el archivo newuser.ldf . Antes de seguir con la creación de objetos de usuario, compruebe el archivo guardado en el directorio Documents and Settings. |
4. | Escriba lo siguiente en la ventana del símbolo del sistema. ldifde –i -f newuser.ldf -s hq-con-dc-01 |
5. | Presione ENTRAR. Cuando termine, la ventana del símbolo del sistema confirmará las modificaciones, como se muestra en la Figura 5. ![]() Figura 5 Agregar un nuevo usuario |
Para eliminar un usuario mediante LDIF
1. | Haga clic en el botón Inicio y en Ejecutar, escriba Bloc de notas Deleteuser.ldf y, a continuación, haga clic en Aceptar. Cuando se le indique, haga clic en Sí para crear un nuevo archivo. |
2. | Agregue el siguiente texto al archivo. dn: CN=Pilar Ackerman,OU=Mercadotecnia,OU=Cuentas,DC=contoso,DC=com changetype: delete |
3. | Guarde y después cierre el archivo deleteuser.ldf . |
4. | Escriba lo siguiente en la ventana del símbolo del sistema. ldifde –i -f deleteuser.ldf -s hq-con-dc-01 |
ADSI permite desarrollar fácilmente aplicaciones habilitadas para directorios. Junto con Windows Script Host, las operaciones por lotes de directorios se pueden ejecutar con secuencias de comandos mediante el software de desarrollo VBScript o Microsoft JScript®. En esta guía, los procedimientos descritos en la sección anterior (en los que se utilizaba LDIF) se han realizado mediante aplicaciones simples escritas en VBScript.
Tenga en cuenta que estas secuencias de comandos no incluyen comprobación de errores ni se han concebido para proporcionar una referencia a VBScript y ADSI a los programadores. En todos los ejemplos que se incluyen en este documento se asume que ha iniciado sesión con las credenciales correctas en un equipo que es miembro del dominio de destino. En ADSI es posible especificar de forma explícita credenciales y un dominio de destino. Después de cada procedimiento, confirme que se han modificado las entradas mediante el complemento Usuarios y equipos de Active Directory.
En este ejemplo, se utiliza un editor de texto, como el Bloc de notas, para crear un programa VBScript. La secuencia de comandos busca la unidad organizativa Mercadotecnia y crea un archivo de texto con todos los objetos de usuarios y un subconjunto de sus atributos.
Para crear y ejecutar una secuencia de comandos de exportación
1. | Haga clic en el botón Inicio y en Ejecutar, escriba Bloc de notas export.vbs y, a continuación, haga clic en Aceptar. Cuando se le indique, haga clic en Sí para crear un nuevo archivo. Copie el siguiente texto en export.vbs.
'Global variables
Dim oContainer
Dim OutPutFile
Dim FileSystem
'Initialize global variables
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("marketing.txt", True)
Set oContainer=GetObject("LDAP://OU=Marketing,OU=Accounts,DC=contoso,DC=com")
'Enumerate Container
EnumerateUsers oContainer
'Clean up
OutPutFile.Close
Set FileSystem = Nothing
Set oContainer = Nothing
WScript.Echo "Finished"
WScript.Quit(0)
Sub EnumerateUsers(oCont)
Dim oUser
For Each oUser In oCont
Select Case LCase(oUser.Class)
Case "user"
If Not IsEmpty(oUser.distinguishedName) Then
OutPutFile.WriteLine "dn: " & oUser.distinguishedName
End If
If Not IsEmpty(oUser.name) Then
OutPutFile.WriteLine "name: " & oUser.Get ("name")
End If
If Not IsEmpty(oUser.streetAddress) Then
OutPutFile.WriteLine "streetAddress: " & oUser.streetAddress
End If
If Not IsEmpty(oUser.l) Then
OutPutFile.WriteLine "l: " & oUser.l
End If
If Not IsEmpty(oUser.st) Then
OutPutFile.WriteLine "st: " & oUser.st
End If
If Not IsEmpty(oUser.postalcode) Then
OutPutFile.WriteLine "postalcode: " & oUser.postalcode
End If
Case "organizationalunit", "container"
EnumerateUsers oUser
End Select
OutPutFile.WriteLine
Next
End Sub
|
2. | Guarde export.vbs y, a continuación, cierre el Bloc de notas. |
3. | En la ventana del símbolo del sistema, escriba export.vbs y, a continuación, presione ENTRAR. |
Nota: al ejecutar export.vbs se crea el archivo Marketing.txt, que contiene una lista de usuarios y un subconjunto de sus atributos.
Con las modificaciones apropiadas, esta secuencia de comandos se puede utilizar con cualquier aplicación que sea compatible con las tecnologías Modelo de objetos componentes (COM) y Visual Basic de Microsoft. Estas aplicaciones son Visual Basic, Excel y Microsoft Access. También se admiten secuencias de comandos en Internet Explorer y Servicios de Internet Information Server.
En este ejemplo, se modificarán todos los atributos de dirección de los usuarios incluidos en la unidad organizativa Mercadotecnia. Se utiliza un programa VBScript simple para realizar una modificación por lotes de todos los objetos de usuario de la organización Mercadotecnia. La secuencia de comandos modifica los atributos de provincia, calle, localidad y código postal.
Para crear y ejecutar una secuencia de comandos de modificación de objetos
1. | Haga clic en el botón Inicio y en Ejecutar, escriba Bloc de notas modify.vbs y, a continuación, haga clic en Aceptar. Cuando se le indique, haga clic en Sí para crear un nuevo archivo. Copie el siguiente texto en modify.vbs.
Dim oContainer
Set oContainer=GetObject("LDAP://OU=Marketing,OU=Accounts,DC=contoso,DC=com")
ModifyUsers oContainer
'cleanup
Set oContainer = Nothing
WScript.Echo "Finished"
WScript.Quit
Sub ModifyUsers(oObject)
Dim oUser
oObject.Filter = Array("user")
For Each oUser in oObject
oUser.Put "st","Washington"
oUser.Put "streetAddress","One Microsoft Way"
oUser.Put "postalCode","98052"
oUser.Put "l","Redmond"
oUser.SetInfo
Next
End Sub
|
2. | Guarde modify.vbs y, a continuación, cierre el Bloc de notas. |
3. | En la ventana del símbolo del sistema, escriba modify.vbs y, a continuación, presione ENTRAR. |
En este ejemplo, se utiliza VBScript para agregar un nuevo usuario a la organización Mercadotecnia. Este ejemplo ilustra lo fácil que resulta utilizar ADSI y VBScript para tener acceso al directorio mediante programación. Tenga en cuenta que en este ejemplo sólo se configura un conjunto limitado de atributos durante la creación del usuario.
Para crear y ejecutar una secuencia de comandos de creación de objetos
1. | Haga clic en el botón Inicio y en Ejecutar, escriba Bloc de notas add.vbs y, a continuación, haga clic en Aceptar. Cuando se le indique, haga clic en Sí para crear un nuevo archivo. Copie el siguiente texto en add.vbs.
Dim oContainer
Dim oUser
Set oContainer=GetObject("LDAP://OU=Marketing,OU=Accounts,DC=contoso,DC=com")
'Create user
Set oUser = oContainer.Create("User","CN=Pilar Ackerman")
'Assign values to user attributes
oUser.Put "samAccountName","Pilar"
oUser.Put "givenName","Pilar"
oUser.Put "sn","Ackerman"
oUser.Put "userPrincipalName","pilar@contoso.com"
oUser.SetInfo
'Clean up
Set oUser = Nothing
Set oContainer = Nothing
WScript.Echo "Finished"
WScript.Quit
|
2. | Guarde add.vbs y, a continuación, cierre el Bloc de notas. |
3. | En la ventana del símbolo del sistema, escriba add.vbs y, a continuación, presione ENTRAR. |
Para crear y ejecutar una secuencia de comandos de eliminación de objetos
1. | Haga clic en el botón Inicio y en Ejecutar, escriba Bloc de notas delete.vbs y, a continuación, haga clic en Aceptar. Cuando se le indique, haga clic en Sí para crear un nuevo archivo. Copie el siguiente texto en delete.vbs.
Dim oContainer
Set oContainer=GetObject("LDAP://OU=Marketing,OU=Accounts,DC=contoso,DC=com")
'Delete user
oContainer.Delete "user","CN=Pilar Ackerman"
'Clean up
Set oContainer = Nothing
WScript.Echo "Finished"
WScript.Quit
|
2. | Guarde delete.vbs y, a continuación, cierre el Bloc de notas. |
3. | En la ventana del símbolo del sistema, escriba delete.vbs y, a continuación, presione ENTRAR. |
ldifde [-i] [-f NombreArchivo] [-s NombreServidor] [-c Cadena1 Cadena2] [-v] [-j Ruta] [-t NúmeroPuerto] [-d NCBase] [-r FiltroLDAP] [-p Alcance] [-l ListaAtributosLDAP] [-o ListaAtributosLDAP] [-g] [-m] [-n] [-k] [-a NombreCompletoUsuario Contraseña] [-b NombreUsuario Dominio Contraseña] [-?]
-i
| • | Especifica el modo de importación. Si no se especifica, el modo predeterminado es exportación. |
-f NombreArchivo
| • | Identifica el nombre del archivo de importación o exportación. |
-s NombreServidor
| • | Especifica el controlador de dominio que va a realizar la operación de importación o exportación. De forma predeterminada, Ldifde se ejecutará en el controlador de dominio en el que está instalado. |
-c Cadena1 Cadena2
| • | Sustituye todas las apariciones de Cadena1 y Cadena2. Se utiliza normalmente al importar datos de un dominio a otro; el nombre completo del dominio de exportación (Cadena1) debe reemplazarse por el del dominio de importación (Cadena2). |
-v
| • | Establece el modo detallado. |
-j Ruta
| • | Establece la ubicación del archivo de registro. El valor predeterminado es la ruta de acceso actual. |
-t NúmeroPuerto
| • | Especifica un número de puerto de LDAP. El puerto LDAP predeterminado es 389. El puerto de catálogo global es 3268. |
-d NCBase
| • | Establece el nombre completo de la base de búsqueda para la exportación de datos. |
-r FiltroLDAP
| • | Crea un filtro de búsqueda de LDAP para la exportación de datos. Por ejemplo, para exportar todos los usuarios con un apellido determinado, puede utilizar el siguiente filtro: -r (and(objectClass=User)(sn=Apellido)) |
-p Alcance
| • | Establece el alcance de la búsqueda. Las opciones de alcance de la búsqueda son Base, OneLevel o SubTree. |
-l ListaAtributosLDAP
| • | Establece la lista de atributos que deben devolverse en los resultados de una consulta de exportación. Si se omite este parámetro, se devuelven todos los atributos. |
-o ListaAtributosLDAP
| • | Establece la lista de atributos que deben omitirse en los resultados de una consulta de exportación. Se utiliza normalmente cuando se exportan objetos de Active Directory y luego se importan a otro directorio compatible con LDAP. Si los atributos no son compatibles en el otro directorio, puede omitirlos del conjunto de resultados mediante esta opción. |
-g
| • | Omite las búsquedas paginadas. |
-m
| • | Omite los atributos que sólo se aplican a objetos de Active Directory, como los atributos ObjectGUID, objectSID, pwdLastSet y samAccountType. |
-n
| • | Omite la exportación de valores binarios. |
-k
| • | No tiene en cuenta los errores durante la operación de importación y continúa el procesamiento. A continuación se incluye una lista completa de los errores omitidos:
|
-a NombreCompletoUsuario Contraseña
| • | Establece el comando para que se ejecute con el nombre completo del usuario y la contraseña especificados. De forma predeterminada, el comando se ejecutará con las credenciales del usuario que inició la sesión actual en la red. |
-b NombreUsuario Dominio Contraseña
| • | Establece el comando para que se ejecute con el nombre de usuario, el dominio y la contraseña especificados. De forma predeterminada, el comando se ejecutará con las credenciales del usuario que inició la sesión actual en la red. |
-?
| • | Muestra el menú de comandos. |
Cuando cree el archivo de importación para utilizarlo con el comando Ldifde, use un valor de changeType para definir el tipo de cambios que contendrá el archivo de importación. Están disponibles los siguientes valores de changeType:
| Valor | Descripción |
Add | Especifica que el archivo de importación incluye nuevo contenido. |
modify | Especifica que el contenido existente se ha modificado en el archivo de importación. |
delete | Especifica que se ha eliminado contenido en el archivo de importación. |
A continuación se incluye un ejemplo de un formato de archivo de importación LDIF que utiliza el valor add.
DN: CN=UsuarioEjemplo,DC=NombreDominio
changetype: add
CN: UsuarioEjemplo
description: DescripciónDeArchivo
objectClass: User
sAMAccountName: UsuarioEjemplo
Para recuperar sólo el nombre completo, el nombre común, el nombre, el apellido y el número de teléfono de los objetos devueltos, escriba:
-l DistinguishedName, CN, GivenName, SN, Telephone
Para omitir el objeto GUID, escriba:
-o whenCreated, whenChanged, objectGUID
| Formato | Significado |
Cursiva | Información que el usuario debe especificar |
Negrita | Elementos que el usuario debe escribir tal como se muestran |
Puntos suspensivos (...) | Parámetro que se puede repetir varias veces en una línea de comandos |
Entre corchetes ([]) | Elementos opcionales |
Entre llaves ({}); opciones separadas por una barra vertical (|). Ejemplo: {even|odd} | Conjunto de opciones de las que el usuario debe seleccionar una |
Fuente Courier | Resultado del código o programa |
Para obtener más información, consulte los siguientes recursos:
| • | Formato de intercambio de datos LDAP (LDIF): especificación técnica en http://www.ietf.org/rfc/rfc2849.txt (en inglés) |
| • | Tecnologías de Microsoft Visual Basic Scripting en http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtorivbscript.asp (en inglés) |
| • | Para obtener la información más reciente sobre Windows Server 2003, consulte el sitio Web de Windows Server 2003 en |