Поделиться через


Сопоставление классов Active Directory

Так как Active Directory имеет широкий спектр возможных объектов, инструментарий WMI не может создать прямое сопоставление "один к одному". Вместо этого поставщик служб каталогов использует правила для сопоставления классов между двумя технологиями.

В этом разделе рассматриваются следующие разделы:

Примечание

Дополнительные сведения о поддержке и установке этого компонента в определенной операционной системе см. в статье Доступность компонентов WMI для операционной системы.

Классы сопоставления

В следующем списке описаны рекомендации, которые поставщик служб каталогов использует для сопоставления классов Active Directory с классами WMI.

  • Каждый абстрактный класс в схеме Active Directory сопоставляется с одним абстрактным классом в схеме WMI.

    В схеме WMI каждый абстрактный класс имеет префикс DS_. Например, класс person из схемы Active Directory сопоставляется с классом DS_person WMI.

  • Каждый неабстрактный класс из схемы Active Directory сопоставляется со следующими двумя классами в схеме WMI:

    • Первый сопоставленный класс имеет префикс ADS_. Это абстрактные классы, сопоставленные в соответствии с приведенными ниже правилами.
    • Второй сопоставленный класс является неабстрактным классом с префиксом имени DS_. Этот класс является производным от абстрактного класса ADS_ с добавлением квалификатора Provider .

    Например, класс пользователя из схемы Active Directory сопоставляется с двумя классами. Первый класс — это ADS_user абстрактный класс, сопоставленный в соответствии с приведенными ниже правилами. Второй класс — это класс DS_user nonabstract. Он является производным от ADS_user и имеет добавленный квалификатор поставщика .

  • Если не указано иное, имя сопоставленного класса является искаженным значением свойства LDAP-Display-Name в классе Active Directory.

  • Если свойство Sub-Class-Of присутствует в классе Active Directory, сопоставленный WMI класс является производным от указанного класса.

    Если свойство Sub-Class-Of отсутствует, сопоставленный WMI класс является производным от класса DS_LDAP_Root_Class , как указано в MOF-файле.

    Примечание

    Этот класс имеет свойство ключа ADSIPath с типом VT_BSTR. Это уникальный путь ADSI, который идентифицирует этот экземпляр. Active Directory поддерживает только однонаследование, поэтому это работает.

  • Динамический квалификатор с типом VT_BOOL и свойством для параметра вкуса WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS, равным TRUE, создается для каждого класса. Это стандартный квалификатор WMI, который указывает, что экземпляры этого класса предоставляются динамически.

  • Если класс не является абстрактным, поставщик создает квалификатор поставщика типа VT_BSTR BOOL , а WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS для каждого класса — "Поставщик экземпляра DS". Это стандартный квалификатор WMI, который указывает имя поставщика, динамически предоставляющего экземпляры этого класса.

Остальные свойства ADSI сопоставляется с квалификаторами классов и свойствами, как показано в следующих таблицах. Все квалификаторы сопоставляют со значением флага WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASSквалификатора .

Ниже перечислены сведения о сопоставлении для класса Active Directory, показывающие квалификатор WMI и тип квалификатора WMI для каждого свойства Active Directory.

Общее имя

CN (VT_BSTR)

Сопоставляются непосредственно со строковым значением.

Категория объекта по умолчанию

DefaultObjectCategory (VT_BSTR)

Сопоставляются непосредственно со строковым значением.

Дескриптор безопасности по умолчанию

DefaultSecurityDescriptor (VT_BSTR)

Сопоставляются непосредственно со строковым значением.

Governs-Id

GovernsId (VT_BSTR)

Сопоставляются со строковым представлением объекта OID; Например, "{ 1 3 3 6 }".

Класс объекта

Н/Д

Не сопоставлено.

Категория класса объекта

ObjectClassCategory (VT_I4)

Сопоставляются непосредственно с целочисленным значением. Кроме того, если значение — Abstract(2), то также создается стандартный VT_BOOL квалификатор CIM, называемый квалификатором Abstract .

RDN-ATT-ID

RDNATTID (VT_BSTR)

Сопоставляются со строковым представлением значения OID; Например, "{ 1 3 3 6 }". Кроме того, свойство, указанное здесь, аннотируется стандартным квалификатором индексированного CIM, равным TRUE.

Только для системы

SystemOnly (VT_BOOL)

Сопоставляются непосредственно с логическим значением.

Ниже перечислены свойства класса Active Directory, сопоставленные со свойствами класса WMI.

Может содержать

Каждое свойство в этом списке сопоставляется со свойством WMI.

Обязательное значение

Каждое свойство в этом списке сопоставляется со свойством WMI. Для каждого из них создается стандартный Not_Null квалификатор CIM.

System-May-Contain

Каждое свойство в этом списке сопоставляется со свойством WMI. Кроме того, каждое свойство аннотировано с помощью квалификатора System , для которых задано значение TRUE.

Обязательное для системы

Каждое свойство в этом списке сопоставляется со свойством WMI. Для каждого из них создается стандартный Not_Null квалификатор CIM. Кроме того, каждое свойство аннотировано с помощью квалификатора System , для которых задано значение TRUE.

Атрибуты сопоставления

Поставщик служб каталогов сопоставляет каждый атрибут класса Active Directory ровно с одним свойством соответствующего класса WMI в соответствии с правилами, приведенными в этом разделе. Как правило, поставщик служб каталогов называет свойство WMI как искаженную версию значения LDAP-Display-Name атрибута Active Directory.

Если свойство Active Directory Is-Single-Valued имеет значение FALSE, то это свойство WMI объединяется с оператором OR с CIM_FLAG_ARRAY. Обратите внимание, что каждое свойство помечается квалификатором VT_BSTRADSyntax. Представляет базовый синтаксис Active Directory.

В следующей таблице перечислены сопоставления синтаксиса Active Directory с типом данных свойства WMI.

Элемент Active Directory Тип данных WMI
Точка доступа CIM_STRING
Логических CIM_BOOLEAN
Строка без учета регистра CIM_STRING
Строка с учетом регистра CIM_STRING
Различающееся имя CIM_STRING
DN-Binary Внедренный объект класса DN_With_Binary определен ниже.
Строка DN Внедренный объект класса DN_With_String определен ниже.
Перечисления CIM_SINT32
Перечисления CIM_STRING
Целое число CIM_SINT32
LargeInteger CIM_STRING
Дескриптор безопасности Внедренный объект класса Uint8Array, определенный ниже.
Числовая строка CIM_STRING
Идентификатор объекта. CIM_STRING
Строка октета Внедренный объект класса Uint8Array, определенный ниже.
ИЛИ Имя CIM_STRING
Presentation-Address Внедренный объект класса Uint8Array, определенный ниже.
Строка регистра печати CIM_STRING
Ссылка на реплику Внедренный объект класса Uint8Array, определенный ниже.
String(Sid) Внедренный объект класса Uint8Array, определенный ниже.
Time CIM_DATETIME
Время в формате UTC CIM_DATETIME
Строка Юникода CIM_STRING

Синтаксис Octet String, который ссылается на массив значений uint8 , представляет проблему при сопоставлении с WMI, так как WMI разрешает свойства типов uint8 и массивы uint8, тогда как Active Directory разрешает свойства типа Octet String, а также массивы octet String.

В следующем примере показан класс поставщика служб каталогов, который используется для сопоставления массива свойств типа Octet String.

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

WMI сопоставляет все значения свойств Active Directory строки octet с внедренными экземплярами Uint8Array. Аналогичным образом WMI сопоставляет массивы Octet String с массивами внедренных объектов Uint8Array .

В следующем примере показаны классы, сопоставленные WMI со значениями свойств DN-Binary и DN-String DS.

Class DN_With_String
{
    string dnString;
    string value;
};

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

В следующей таблице показано, как WMI сопоставляет остальные свойства интерфейса атрибута Active Directory с квалификаторами свойств WMI.

Имя свойства атрибута Active Directory Квалификатор WMI Тип данных Сведения о сопоставлении
Синтаксис атрибутов AttributeSyntax VT_BSTR Сопоставляются со строковым представлением объекта OID.
Общее имя CN VT_BSTR Сопоставляются со строковым значением.
Только для системы Системные функции VT_BOOL Сопоставляются с логическим значением.

Примечание

WMI сопоставляет все квалификаторы Active Directory с WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS вариантами квалификаторов.

Классы ассоциаций

Служба каталогов по сути является иерархическим хранилищем объектов. Объекты, которые могут отображаться на уровне нелиевых в иерархии, называются контейнерами. Структура этой иерархии дополнительно управляется свойствами "Poss-Superiors" и "System-Poss-Superiors" класса в схеме. Вместе они определяют набор классов, экземпляры которых могут содержаться в экземпляре класса контейнера.

В следующем примере ассоциация CIM моделируется как экземпляры класса статической ассоциации 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;
};

Поставщик классов ассоциаций поддерживает методы GetObjectAsync и CreateClassEnumAsync .