Partilhar via


Mapeando classes do Ative Directory

Como o Ative Directory tem uma grande variedade de objetos possíveis, o WMI não pode criar um mapeamento direto um-para-um. Em vez disso, o provedor de Serviços de Diretório usa regras para mapear classes entre as duas tecnologias.

As seguintes seções são discutidas neste tópico:

Observação

Para obter mais informações sobre suporte e instalação desse componente em um sistema operacional específico, consulte Disponibilidade do sistema operacional de componentes WMI.

Classes de mapeamento

A lista a seguir descreve as diretrizes que o provedor de Serviços de Diretório usa para mapear classes do Ative Directory para classes WMI:

  • Cada classe abstrata no esquema do Ative Directory é mapeada para uma classe abstrata no esquema WMI.

    No esquema WMI, cada classe abstrata é prefixada com DS_. Por exemplo, a classe pessoa do esquema do Active Directory mapeia para a classe DS_person WMI.

  • Cada classe não abstrata do esquema do Ative Directory é mapeada para as duas classes a seguir no esquema WMI:

    • A primeira classe mapeada é prefixada com ADS_. Estas são classes abstratas, mapeadas de acordo com as regras abaixo.
    • A segunda classe mapeada é uma classe não abstrata com o prefixo de nome DS_. Esta classe é derivada da classe abstrata ADS_, com a adição do qualificador Provider.

    Por exemplo, o utilizador com a classe do esquema do Active Directory mapeia-se em duas classes. A primeira classe é a ADS_user classe abstrata, mapeada de acordo com as regras abaixo. A segunda classe é a DS_user classe não abstrata. Ele é derivado de ADS_user e tem adicionado o qualificador Provedor de .

  • A menos que especificado de outra forma, o nome de uma classe mapeada é o valor distorcido da propriedade LDAP-Display-Name na classe Ative Directory.

  • Se a propriedade Sub-Class-Of estiver presente na classe do Ative Directory, a classe mapeada pelo WMI será derivada da classe especificada.

    Se a propriedade Sub-Class-Of não estiver presente, a classe mapeada pelo WMI será derivada da classe DS_LDAP_Root_Class, conforme especificado no arquivo MOF.

    Observação

    Esta classe tem a propriedade chave ADSIPath, com um tipo VT_BSTR. Este é o caminho ADSI exclusivo que identifica esta instância. O Ative Directory suporta apenas herança única, portanto, isso funciona.

  • Um qualificador Dynamic do tipo VT_BOOLcom a característica WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS estabelecida para TRUE é criado para cada classe. Este é um qualificador WMI padrão que indica que instâncias dessa classe são fornecidas dinamicamente.

  • Para cada classe, se a classe não for abstrata, o provedor criará um qualificador Provedor do tipo VT_BSTR BOOL e definirá seu sabor de qualificador WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS como "DS Instance Provider". Este é um qualificador WMI padrão que indica o nome do provedor que fornece dinamicamente instâncias dessa classe.

O restante das propriedades ADSI são mapeadas para qualificadores de classe e propriedades de acordo com as tabelas a seguir. Todos os qualificadores têm um valor de indicador de qualificador de WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS.

A lista a seguir lista informações de mapeamento para a classe Ative Directory, mostrando o qualificador WMI e o tipo de qualificador WMI para cada propriedade do Ative Directory.

Nome Comum

CN (VT_BSTR)

Mapeado diretamente a partir do valor da cadeia de caracteres.

Categoria-Padrão-de-Objeto

DefaultObjectCategory (VT_BSTR)

Mapeado diretamente a partir do valor da cadeia de caracteres.

Default-Security-Descriptor

DefaultSecurityDescriptor (VT_BSTR)

Mapeado diretamente a partir do valor da cadeia de caracteres.

Governa-ID

GovernsId (VT_BSTR)

Mapeado a partir da representação de cadeia de caracteres do OID; por exemplo, "{ 1 3 3 6 }".

Classe de Objeto

N/A

Não mapeado.

Categoria-Classe-de-Objeto

CategoriaClasseObjeto (VT_I4)

Mapeado diretamente a partir do valor inteiro. Além disso, se o valor for Abstract(2), então o qualificador padrão CIM VT_BOOL, chamado qualificador "Abstract", também é criado.

RDN-ATT-ID

RDNATTID (VT_BSTR)

Mapeado a partir da representação de cadeia de caracteres do valor OID; por exemplo, "{ 1 3 3 6 }". Além disso, a propriedade identificada aqui é anotada com o qualificador padrão Indexed CIM definido como TRUE.

somente do sistema

SystemOnly (VT_BOOL)

Mapeado diretamente a partir do valor booleano.

A lista a seguir lista as propriedades de classe do Ative Directory mapeadas para propriedades de classe WMI.

Pode conter

Cada propriedade nesta lista é mapeada para uma propriedade WMI.

Must-Contain

Cada propriedade nesta lista é mapeada para uma propriedade WMI. O qualificador CIM padrão Not_Null é criado para cada um destes.

Sistema-Pode-Conter

Cada propriedade nesta lista é mapeada para uma propriedade WMI. Além disso, cada propriedade é anotada com um qualificador de do Sistema, definido como TRUE.

o sistema deve conter

Cada propriedade nesta lista é mapeada para uma propriedade WMI. O qualificador padrão CIM Not_Null é criado para cada um deles. Além disso, cada propriedade é anotada com um qualificador do Sistema , definido como TRUE.

Mapeando atributos

O provedor de Serviços de Diretório mapeia cada atributo de uma classe do Ative Directory para exatamente uma propriedade da classe WMI correspondente de acordo com as regras desta seção. Em geral, o Provedor de Serviços de Diretório nomeia a propriedade WMI como a versão manipulada do valor LDAP-Display-Name do atributo Ative Directory.

Se a propriedade do Active Directory Is-Single-Valued for FALSE, essa propriedade WMI será combinada com o operador OR com CIM_FLAG_ARRAY. Observe que cada propriedade é marcada com o qualificador VT_BSTR, ADSyntax. Ele representa a sintaxe subjacente do Ative Directory.

A tabela a seguir lista o mapeamento da sintaxe do Active Directory para o tipo de dados de propriedade WMI.

Elemento Ative Directory Tipo de dados WMI
Ponto de Acesso CIM_STRING
Boolean CIM_BOOLEAN
Cadeia sem distinção entre maiúsculas e minúsculas CIM_STRING
String sensível a maiúsculas e minúsculas CIM_STRING
Nome Distinto CIM_STRING
DN-Binary O objeto incorporado da classe DN_With_Binary definido abaixo.
DN-String O objeto incorporado da classe DN_With_String definido abaixo.
Enumeração CIM_SINT32
Enumeração CIM_STRING
Inteiro CIM_SINT32
LargeInteger CIM_STRING
Descritor de Segurança O objeto incorporado da classe Uint8Array definido abaixo.
Cadeia numérica CIM_STRING
ID do objeto CIM_STRING
Corda de Octeto O objeto incorporado da classe Uint8Array definido abaixo.
OU Nome CIM_STRING
Presentation-Address O objeto incorporado da classe Uint8Array definido abaixo.
Imprimir cadeia de texto CIM_STRING
Link da réplica O objeto incorporado da classe Uint8Array definido abaixo.
String(Sid) O objeto incorporado da classe Uint8Array definido abaixo.
Hora CIM_DATETIME
Hora codificada UTC CIM_DATETIME
Cadeia de caracteres Unicode CIM_STRING

A sintaxe Octet String, que se refere a uma matriz de uint8 valores, apresenta um problema quando mapeada para WMI porque WMI permite propriedades de tipos uint8 e matrizes de uint8, enquanto o Ative Directory permite propriedades do tipo Octet String, bem como matrizes de Octet String.

O exemplo a seguir mostra a classe Directory Services Provider usada para mapear uma matriz de propriedades do tipo Octet String.

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

O WMI mapeia todos os valores da propriedade Octet String do Ative Directory para instâncias incorporadas do Uint8Array. Da mesma forma, o WMI mapeia matrizes de Octet String para matrizes de objetos Uint8Array incorporados.

O exemplo a seguir mostra as classes mapeadas pelo WMI para os valores de propriedade DS DN-Binary e DN-String.

Class DN_With_String
{
    string dnString;
    string value;
};

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

A tabela a seguir lista como o WMI mapeia as restantes propriedades da interface de atributos do Active Directory para os qualificadores de propriedade do WMI.

Nome da propriedade do atributo do Active Directory Qualificador WMI Tipo de dados Informações de mapeamento
Sintaxe de Atributo Sintaxe do Atributo VT_BSTR Mapeada a partir da representação em cadeia de caracteres do OID.
Nome Comum CN VT_BSTR Mapeado a partir do valor da cadeia de caracteres.
Somente do Sistema Sistema VT_BOOL Mapeado a partir do valor booleano.

Observação

O WMI mapeia todos os qualificadores do Ative Directory com os WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS tipos de qualificadores.

Aulas de Associação

O Serviço de Diretório é essencialmente um armazenamento hierárquico de objetos. Os objetos que podem aparecer em um nível não folha na hierarquia são chamados de "contêineres". A estrutura desta hierarquia é ainda controlada pelas propriedades "Poss-Superiors" e "System-Poss-Superiors" de uma classe no esquema. Estes, em conjunto, especificam o conjunto de classes cujas instâncias podem ser contidas em uma instância de uma classe de contêiner.

O exemplo a seguir modela uma associação CIM como instâncias da classe de associação estática 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;
};

O provedor de classe de associação suporta os métodos GetObjectAsync e CreateClassEnumAsync.