| |
|
|
| |
-
Windows Script Host - VBScript - Componentes - ADSI (Active Directory Service Interface)
-
El ADSI es un componente para el acceso al servicio de carpetas (directorio).
El servicio de carpetas es un objeto que representa un conjunto jerárquico de usuarios, grupos, servicios y otros recursos en una red.
Con ADSI pueden administrarse los servicios de carpetas siguientes:
- banco de datos de usuarios y servicios de Windows NT (incluido los bancos
de datos locales de usuarios de Windows 2000 Professional, Windows XP,
Windows Vista y Servidor Windows 2000/2003/2008 sin "Active Directory")
- todos los servicios de carpetas compatibles con LDAP (Lightweight Directory
Access Protocol), a los que pertenecen:
. Active Directory Windows 2000
. Active Directory Windows Server 2003
. Microsoft Exchange Server 5.5 y 2000
. Novell NetWare, a partir de la versión 3
. Netware Directory Service, a partir de la versión 4
. Microsoft IIS (Internet Information Server), a partir de la versión 4
ADSI forma parte de de la instalación estándar de los sistemas operativos a partir de Windows 2000 (ADSI 2.5).
La versión de ADSI instalada en el sistema, puede determinarse a partir de la versión del archivo "activeds.dll" (propiedades).
Normalmente, este archivo se encuentra en la carpeta %System% de Windows.
ADSI puede acceder a equipos remotos y ejecutar acciones. Este debe estar instalado en el sistema donde se ejecuta el script. Para el equipo, al cual se
accede, resulta irrelevante.
ADSI no es un solo archivo "DLL", si no, un grupo de DLLs. Para cada servicio de carpeta hay un DLL. ADSI es un "Provider" y puede
ser ampliado con otros "Provider".
Los provider más importantes son LDAP y WinNT. El provider LDAP permite la administración de los servicios de carpetas basados en este
provider. El provider WinNT, por su parte, permite la administración de los siguientes objetos:
- Dominio NT4
- Computadoras
- Usuarios locales y de dominio
- Grupos de usuarios locales y globales
- Servicios Windows
- carpetas compartidas
- cola de espera de impresora
- trabajos de impresión
- sesión de usuario
- archivos que se encuentran en uso
Clases
La clase del componente ADSI a utilizar depende del servicio de carpetas al que ha de dirigirse.
Las tablas siguiente hacen referencia acerca de las clases más importantes para sistemas basados en WinNT y active directory. En cada caso, se accede al
objeto concreto sobre "GetObject()". Tras "GetObject()" debe indicarse el path (ruta) ADSI, el cual es como sigue:
<ID del servicio de carpetas>:<servicio de carpetas-parte especifica>
La parte principal del path ADSI depende del servicio de carpetas y allí, en sentido general, del tipo de objeto que se trate. El path es el mismo que se
utiliza en la administración del sistema.
Los ejemplos que se presentarán a continuación contribuyen a la comprensión de los paths. Una ayuda en la determinación de los paths,
la brinda el Browser del active directory.
El ID del servicio de carpetas diferencia las mayúsculas y minúsculas.
Clases ADSI de sistema basados en WinNT (WinNT Provider), para Windows NT4.0, Windows 2000 Professional, Windows 2000 Server sin active directory, Windows XP,
Windows Vista y Windows Server 2003 y 2008 sin active directory.
| Clase |
Acceso |
Descripción |
| Domain |
GetObject("WinNT://
NombredelDomain") |
Dominios NT |
| Computer |
GetObject("WinNT://
NombredelDomain /
Nombredelacomputadora") o
GetObject("WinNT:// Nombredelacomputadora") |
Computer |
| User |
GetObject("WinNT://
NombredelDominio/
Nombre del usuario") o
GetObject("WinNT://
Nombredelacomputadora/
nombredelusuario") |
Cuenta de usuario del dominio o de la computadora |
| Group |
GetObject("WinNT://
NombredeDominio/
NombredelGrupo") o GetObject("WinNT://
NombredelPDC/
NombredelGrupo") o GetObject("WinNT://
NombredelaComputadora/
NombredelGrupo") |
Grupo de usuarios de un dominio o una computadora |
| Service |
GetObject("WinNT://
NombredelaComputadora/
NombredelServicio") |
Servicio de una computadora con sistemas operativos de la familia NT |
| PrintQueue |
GetObject("WinNT://
NombredelaComputadora/
NombredelaImpresora") |
Cola de espera de impresión |
| PrintJob |
Solo sobre una instancia
de PrintQueue |
Un trabajo de impresión en la cola de espera de impresión |
| FileShare |
GetObject("WinNT://
NombredelaComputadora/
lanmanserver/
nombredelrecursocompartido") |
Carpeta compartida |
Clases para el active directory (Provider LDAP)
| Clase |
Acceso |
Descripción |
| Domain |
GetObject("LDAP://dc=x,dc=y,dc=z") o GetObject("LDAP://Domain-Controler/dc=x,
dc=y,dcz") |
Dominio –Active Directory |
| Computer |
GetObject("LDAP://LDAPFAD") |
Computadora |
| User |
GetObject("LDAP://LDAPFAD") |
Cuenta de usuario en el dominio |
| Group |
GetObject("LDAP://LDAPFAD") |
Grupo de usuarios en el dominio |
| Organizacional-Unit |
GetObject("LDAP://LDAPFAD") |
Servicio en una computadora con un sistema operativo de la familia NT |
| Contact |
GetObject("LDAP://LDAPFAD") |
Registro de contacto |
| printQueue |
GetObject("LDAP://LDAPFAD") |
Cola de espera de impresión |
| volume |
GetObject("LDAP://LDAPFAD") |
Carpetas compartidas |
Para el acceso al active directory se utilizan nombres path LDAP. El siguiente comando accede a un usuario:
Set usuario = GetObject("LDAP://ServerPC4/CN= Foyo Alfredo,
OU=Personal, DC=Region-23, DC=local")
Ejemplo:
' objeto-ADSI.vbs
' ====================
Set usuario = GetObject("LDAP://ServerPC4/CN= Foyo Alfredo,
OU=Personal, DC=Region-23, DC=local")
'—leer objeto
WScript.Echo(usuario.nombre)
WScript.Echo(usuario.apellido)
WScript.Echo(usuario.telefono)
'---describir objeto
usuario.description = "Trabajador de la Región- 23"
usuario.SetInfo
WScript.Echo(usuario.description)
Los objetos del sistema de carpetas pueden contener otros objetos. Estos objetos son denominados contenedores. Para acceder a
los objetos de un contenedor, se utiliza el bucle "For Each".
El siguiente ejemplo lista los nombre de los objetos y las clases a que pertenecen:
' subobjetos-ADSI.vbs
' =================
Set computadora = GetObject("WinNT://Regional")
WScript.Echo computadora.nombre
For Each obj en computadora
WScript.Echo obj.class & ":" & obj.nombre
Next
Los métodos "Create( )" y "Delete( )" pueden utilizarse al manipular contenedores. "Create( )"
crea un objeto y "Delete( )" borra un objeto existente. En cada caso, deberá consignarse el nombre de la
clase.
' crear-borrar-ADSI.vbs
' ================
Const PCNombre = "."
Set NTDomain = GetObject("WinNT://" & PCNombre)
Set Usuario = NTDomain.Create("user", "AlfredoF")
Usuario.Fullname = "Alfredo Foyo"
Usuario.Description = "Administrador"
Usuario.SetInfo
WScript.Echo(“Crear un usuario”)
Set NTDomain = GetObject("WinNT://" & PCNombre)
NTDomain.Delete "user", "AlfredoF"
WScript.Echo("Borrar usuario")
Algunos atributos de objetos ADSI no pueden ser utilizados directamente, en esos casos puede hacerse lo siguiente:
Object.Put "nombre del atributo", valor
variable = Object.Get("nombre del atributo")
Además, hay atributos que pueden asumir más de un valor. Dichos valores se asignan a través de un array y requieren
de los métodos "GetEx( )" y "PutEx( )".
Para examinar la jerarquía de objetos en un servicio de carpetas, se presta ADB (Microsoft Active Directory Service Browser) como
herramienta.
ADB permite desde cualquier punto, recorrer el servicio de carpetas en todos sus niveles. Las ventajas de ADB para el scripting, radica en
dos aspectos:
- ADB muestra el path ADSI completo del objeto escogido. Este path
puede ser introducido en un script, simplemente copiarlo y pegarlo en
el mismo.
- ADB muestra, en un punto de su menú, los atributos que el
objeto actualmente escogido, tiene. Así puede reconocerse el nombre de los atributos que se pueden ser utilizados en un script.
 |
|
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
|
|
|
|