Partager via


Mappage de classes Active Directory

Étant donné qu’Active Directory possède un large éventail d’objets possibles, WMI ne peut pas créer un mappage un-à-un direct. Au lieu de cela, le fournisseur de services d’annuaire utilise des règles pour mapper des classes entre les deux technologies.

Les sections suivantes sont abordées dans cette rubrique :

Notes

Pour plus d’informations sur la prise en charge et l’installation de ce composant sur un système d’exploitation spécifique, consultez Disponibilité du système d’exploitation des composants WMI.

Mappage de classes

La liste suivante décrit les recommandations que le fournisseur de services d’annuaire utilise pour mapper des classes Active Directory à des classes WMI :

  • Chaque classe abstraite dans le schéma Active Directory est mappée à une classe abstraite dans le schéma WMI.

    Dans le schéma WMI, chaque classe abstraite a le préfixe DS_. Par exemple, la classe person du schéma Active Directory est mappée à la classe WMI DS_person.

  • Chaque classe non abstraite du schéma Active Directory est mappée aux deux classes suivantes dans le schéma WMI :

    • La première classe mappée a le préfixe ADS_. Il s’agit de classes abstraites, mappées selon les règles ci-dessous.
    • La deuxième classe mappée est une classe non abstraite dont le nom a le préfixe DS_. Cette classe est dérivée de la classe abstraite ADS_, avec l’ajout du qualificateur Provider.

    Par exemple, la classe user du schéma Active Directory est mappée à deux classes. La première classe est la classe abstraite ADS_user, mappée selon les règles ci-dessous. La deuxième classe est la classe non abstraite DS_user. Elle est dérivée de ADS_user à laquelle est ajouté le qualificateur Provider.

  • Sauf indication contraire, le nom d’une classe mappée est la valeur altérée de la propriété LDAP-Display-Name dans la classe Active Directory.

  • Si la propriété Sub-Class-Of est présente sur la classe Active Directory, la classe mappée à WMI est dérivée de la classe spécifiée.

    Si la propriété Sub-Class-Of n’est pas présente, la classe mappée à WMI est dérivée de la classe DS_LDAP_Root_Class, comme spécifié dans le fichier MOF.

    Notes

    Cette classe a la propriété de clé ADSIPath, avec un type VT_BSTR. Il s’agit du chemin ADSI unique qui identifie cette instance. Active Directory prend uniquement en charge l’héritage simple. De ce fait, cela fonctionne.

  • Un qualificateur Dynamic de type VT_BOOL et dont la variante WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS définie sur TRUE est créée pour chaque classe. Il s’agit d’un qualificateur WMI standard qui indique que les instances de cette classe sont fournies dynamiquement.

  • Si la classe n’est pas abstraite, le fournisseur crée un qualificateur Provider de type VT_BSTR BOOL et la variante de qualificateur WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS définie sur « Fournisseur d’instance fournisseur d’instance du Service d’annuaire » pour chaque classe. Il s’agit d’un qualificateur WMI standard qui indique le nom du fournisseur fournissant des instances de cette classe de façon dynamique.

Le reste des propriétés ADSI sont mappées aux qualificateurs et propriétés de classe conformément aux tableaux suivants. Tous les qualificateurs sont mappés avec la valeur d’indicateur de qualificateur WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS.

La liste suivante répertorie les informations de mappage pour la classe Active Directory, montrant le type de qualificateur WMI et de qualificateur WMI pour chaque propriété Active Directory.

Common-Name

CN (VT_BSTR)

Mappé directement à partir de la valeur de chaîne.

Default-Object-Category

DefaultObjectCategory (VT_BSTR)

Mappé directement à partir de la valeur de chaîne.

Default-Security-Descriptor

DefaultSecurityDescriptor (VT_BSTR)

Mappé directement à partir de la valeur de chaîne.

Governs-Id

GovernsId (VT_BSTR)

Mappé à partir de la représentation sous forme de chaîne de l’OID ; par exemple, « { 1 3 3 6 } ».

Object-Class

N/A

Non mappé.

Object-Class-Category

ObjectClassCategory (VT_I4)

Mappé directement à partir de la valeur de type entier. En outre, si la valeur est Abstract(2), le qualificateur CIM VT_BOOL standard, appelé « Abstract », est également créé.

RDN-ATT-ID

RDNATTID (VT_BSTR)

Mappé à partir de la représentation sous forme de chaîne de la valeur OID ; par exemple, « { 1 3 3 6 } ». En outre, la propriété identifiée ici est annotée avec le qualificateur CIM Indexed standard défini sur TRUE.

System-Only

SystemOnly (VT_BOOL)

Mappé directement à partir de la valeur booléenne.

La liste suivante répertorie les propriétés de classe Active Directory mappées à des propriétés de classe WMI.

May-Contain

Chaque propriété de cette liste est mappée à une propriété WMI.

Must-Contain

Chaque propriété de cette liste est mappée à une propriété WMI. Le qualificateur CIM Not_Null standard est créé pour chacune d’elles.

System-May-Contain

Chaque propriété de cette liste est mappée à une propriété WMI. En outre, chaque propriété est annotée avec un qualificateur System défini sur TRUE.

System-Must-Contain

Chaque propriété de cette liste est mappée à une propriété WMI. Le qualificateur CIM Not_Null standard est créé pour chacune d’elles. En outre, chaque propriété est annotée avec un qualificateur System défini sur TRUE.

Mappage d’attributs

Le fournisseur de services d’annuaire mappe chaque attribut d’une classe Active Directory à exactement une propriété de la classe WMI correspondante conformément aux règles de cette section. En général, le fournisseur de services d’annuaire nomme la propriété WMI comme la version altérée de la valeur LDAP-Display-Name de l’attribut Active Directory.

Si la propriété Active Directory Is-Single-Valued a la valeur FALSE, cette propriété WMI est associée à l’opérateur OR avec CIM_FLAG_ARRAY. Notez que chaque propriété est étiquetée avec le qualificateur VT_BSTR, ADSyntax. Cela représente la syntaxe Active Directory sous-jacente.

Le tableau suivant liste le mappage de la syntaxe Active Directory au type de données de propriété WMI.

Élément Active Directory Type de données WMI
Access-Point CIM_STRING
Boolean CIM_BOOLEAN
Chaîne ne respectant pas la casse CIM_STRING
Chaîne respectant la casse CIM_STRING
Nom unique CIM_STRING
DN-Binary Objet incorporé de la classe DN_With_Binary définie ci-dessous.
DN-String Objet incorporé de la classe DN_With_String définie ci-dessous.
Énumération CIM_SINT32
Énumération CIM_STRING
Integer CIM_SINT32
LargeInteger CIM_STRING
Descripteur de sécurité Objet incorporé de la classe Uint8Array définie ci-dessous.
Chaîne numérique CIM_STRING
ID objet CIM_STRING
Chaîne d’octets Objet incorporé de la classe Uint8Array définie ci-dessous.
Nom OR CIM_STRING
Presentation-Address Objet incorporé de la classe Uint8Array définie ci-dessous.
Chaîne utilisant une casse d’impression CIM_STRING
Liaison de réplica Objet incorporé de la classe Uint8Array définie ci-dessous.
String(Sid) Objet incorporé de la classe Uint8Array définie ci-dessous.
Temps CIM_DATETIME
Heure codée UTC CIM_DATETIME
Chaîne Unicode CIM_STRING

La syntaxe d’une chaîne d’octets, qui fait référence à un tableau de valeurs uint8, présente un problème lorsqu’elle est mappée à WMI, car WMI autorise les propriétés des types uint8 et les tableaux de valeurs uint8, tandis qu’Active Directory autorise les propriétés de type Chaîne d’octets ainsi que les tableaux de chaînes d’octets.

L’exemple suivant montre la classe Fournisseur de services d’annuaire qui est utilisée pour mapper un tableau de propriétés de type Chaîne d’octets.

Class Uint8Array 
{
    uint8 values[];
    uint32 numberOfValues;
};

WMI mappe toutes les valeurs de propriété Active Directory de type Chaîne d’octets à des instances incorporées d’Uint8Array. De même, WMI mappe des tableaux de chaînes d’octets à des tableaux d’objets Uint8Array incorporés.

L’exemple suivant montre les classes qui sont mappées par WMI à des valeurs de propriété du Service d’annuaire (DS) DN-Binary et DN-String.

Class DN_With_String
{
    string dnString;
    string value;
};

Class DN_With_Binary
{
    string dnString;
    uint8 value[];
};

Le tableau suivant indique comment WMI mappe le reste des propriétés de l’interface d’attribut Active Directory à des qualificateurs de propriétés WMI.

Nom de propriété d’attribut Active Directory Qualificateur WMI Type de données Informations de mappage
Attribute-Syntax AttributeSyntax VT_BSTR Mappé à partir de la représentation sous forme de chaîne de l’OID.
Common-Name CN VT_BSTR Mappé à partir de la valeur de chaîne.
System-Only Système VT_BOOL Mappé à partir de la valeur booléenne.

Notes

WMI mappe tous les qualificateurs Active Directory avec les variantes de qualificateur WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS.

Classes d’association

Le Service d’annuaire est essentiellement un magasin hiérarchique d’objets. Ces objets qui peuvent apparaître à un niveau non-feuille de la hiérarchie sont appelés « conteneurs ». La structure de cette hiérarchie est contrôlée par les propriétés « Poss-Superiors » et « System-Poss-Superiors » d’une classe dans le schéma. Ces éléments, pris ensemble, spécifient l’ensemble de classes dont les instances peuvent être contenues dans une instance d’une classe de conteneur.

L’exemple suivant modélise une association CIM en tant qu’instances de la classe d’association statique DS_LDAP_Class_Containment.

//  DS Class Associations Provider 

// Create a class of which instances are
// provided by this provider

[
  Association : ToInstance,
  dynamic,
  HasClassRefs,
  Provider("Microsoft|DSLDAPClassAssociationProvider|V1.0")
]
class DS_LDAP_Class_Containment
{
    [key, classref{"DS_LDAP_Root_Class"} : ToInstance ToSubClass]
    object Ref ChildClass;

    [key, classref{"DS_LDAP_Root_Class"} : ToInstance ToSubClass] 
    object Ref ParentClass; // The parent DS Class
};


// Create an instance of the provider class for registration
instance of __Win32Provider as $AssociationsProvider
{
    Name = "Microsoft|DSLDAPClassAssociationProvider|V1.0";
    Clsid = "{33831ED4-42B8-11d2-93AD-00805F853771}";
    ImpersonationLevel = 1;
};    

// Specification of the instances and operation
// provided by the provider
instance of __InstanceProviderRegistration
{
    Provider = $AssociationsProvider;
    SupportsGet = TRUE;
    SupportsPut = FALSE;
    SupportsDelete = FALSE;
    SupportsEnumeration = TRUE;
};

Le fournisseur de classes d’association prend en charge les méthodes GetObjectAsync et CreateClassEnumAsync.