Сопоставление классов 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 .