Udostępnij przez


Mapowanie klas usługi Active Directory

Ponieważ usługa Active Directory ma szeroką gamę możliwych obiektów, usługa WMI nie może utworzyć bezpośredniego mapowania jeden do jednego. Zamiast tego dostawca usług katalogowych używa reguł do mapowania klas między dwiema technologiami.

W tym temacie omówiono następujące sekcje:

Nota

Aby uzyskać więcej informacji o obsłudze i instalacji tego składnika w określonym systemie operacyjnym, zobacz Dostępność systemu operacyjnego składników WMI.

Klasy mapowania

Poniższa lista zawiera opis wytycznych używanych przez dostawcę usług katalogowych do mapowania klas usługi Active Directory na klasy WMI:

  • Każda klasa abstrakcyjna w schemacie Active Directory jest mapowana na jedną klasę abstrakcyjną w schemacie WMI.

    W schemacie usługi WMI każda klasa abstrakcyjna ma prefiks DS_. Na przykład klasa "osoba" ze schematu usługi Active Directory mapuje się na klasę DS_person WMI.

  • Każda klasa nieabstrakcyjna ze schematu usługi Active Directory mapuje się na następujące dwie klasy w schemacie usługi WMI:

    • Pierwsza zamapowana klasa jest poprzedzona ADS_. Są to klasy abstrakcyjne, mapowane zgodnie z poniższymi regułami.
    • Druga zamapowana klasa jest klasą nieabstraktową z prefiksem nazwy DS_. Ta klasa pochodzi z abstrakcyjnej klasy ADS_, z dodatkiem kwalifikatora Provider.

    Na przykład klasa użytkownika ze schematu usługi Active Directory jest mapowana na dwie klasy. Pierwsza klasa jest klasą abstrakcyjną ADS_user mapowana zgodnie z poniższymi regułami. Druga klasa to klasa DS_user nieabstrakcyjna. Pochodzi on z ADS_user i ma dodany kwalifikator dostawcy .

  • Jeśli nie określono inaczej, nazwa odwzorowanej klasy jest zniekształconą wartością właściwości LDAP-Display-Name w klasie Active Directory.

  • Jeśli właściwość Sub-Class-Of znajduje się w klasie usługi Active Directory, klasa mapowana WMI pochodzi z określonej klasy.

    Jeśli właściwość Sub-Class-Of nie jest obecna, klasa mapowana WMI pochodzi z klasy DS_LDAP_Root_Class, jak określono w pliku MOF.

    Notatka

    Ta klasa ma właściwość kluczową ADSIPath z typem VT_BSTR. Jest to unikatowa ścieżka ADSI identyfikująca to wystąpienie. Usługa Active Directory obsługuje tylko pojedyncze dziedziczenie, więc działa to.

  • Dla każdej klasy jest tworzony dynamiczny kwalifikator typu VT_BOOLi WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS smaku TRUE. Jest to standardowy kwalifikator WMI, który wskazuje, że wystąpienia tej klasy są udostępniane dynamicznie.

  • Jeśli klasa nie jest abstrakcyjna, tworzony jest dostawca Provider z kwalifikatorem typu VT_BSTR BOOL oraz z wariantem kwalifikatora WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS ustawionym na "DS Instance Provider" dla każdej klasy. Jest to standardowy kwalifikator WMI wskazujący nazwę dostawcy dynamicznie dostarczającego wystąpienia tej klasy.

Pozostałe właściwości ADSI są mapowane na kwalifikatory klas i właściwości zgodnie z następującymi tabelami. Wszystkie kwalifikatory mapować z wartością flagi kwalifikatora WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS.

Poniżej wymieniono informacje o mapowaniu klasy usługi Active Directory, pokazujące kwalifikator WMI i typ kwalifikatora WMI dla każdej właściwości usługi Active Directory.

nazwa pospolita

CN (VT_BSTR)

Mapowane bezpośrednio z wartości ciągu.

domyślna-kategoria-obiektów

DefaultObjectCategory (VT_BSTR)

Mapowane bezpośrednio z wartości ciągu znaków.

Default-Security-Descriptor

DefaultSecurityDescriptor (VT_BSTR)

Mapowane bezpośrednio z wartości ciągu.

governs-id

GovernsId (VT_BSTR)

Odzwierciedlone z ciągu znaków identyfikatora OID; na przykład "{ 1 3 3 6 }".

klasa obiektów

N/A

Nie jest mapowany.

Klasa-Kategoria-Obiektu

ObjectClassCategory (VT_I4)

Zamapowane bezpośrednio z wartości całkowitej. Ponadto, jeśli wartość to Abstract(2), zostanie również utworzony standardowy kwalifikator VT_BOOL CIM, nazywany "Abstract" kwalifikator.

RDN-ATT-ID

RDNATTID (VT_BSTR)

Tworzenie mapy z ciągu znaków reprezentującego wartość identyfikatora OID; na przykład "{ 1 3 3 6 }". Ponadto właściwość zidentyfikowana w tym miejscu jest oznaczona adnotacją ze standardowym kwalifikatorem Indeksowany CIM ustawionym na TRUE.

System tylko

SystemOnly (VT_BOOL)

Mapowane bezpośrednio z wartości logicznej.

Poniżej wymieniono właściwości klasy usługi Active Directory zamapowane na właściwości klasy WMI.

może zawierać

Każda właściwość na tej liście jest mapowana na właściwość WMI.

musi zawierać

Każda właściwość na tej liście jest mapowana na właściwość WMI. Dla każdego z nich tworzony jest kwalifikator CIM standardowy Not_Null.

System-May-Contain

Każda właściwość na tej liście jest przyporządkowana właściwości WMI. Ponadto każda właściwość jest oznaczona adnotacjami z kwalifikatorem System ustawionym na wartość TRUE.

system-musi-zawierać

Każda właściwość na tej liście jest mapowana na właściwość WMI. Dla każdego z nich tworzony jest standardowy kwalifikator CIM Not_Null. Ponadto każda właściwość jest oznaczona adnotacjami z kwalifikatorem System ustawionym na wartość TRUE.

Atrybuty mapowania

Dostawca usług katalogowych mapuje każdy atrybut klasy usługi Active Directory na dokładnie jedną właściwość odpowiadającej jej klasy WMI zgodnie z regułami w tej sekcji. Ogólnie rzecz biorąc, dostawca usług katalogowych nazywa właściwość WMI jako zniekształconą wersję wartości LDAP-Display-Name atrybutu Active Directory.

Jeśli właściwość usługi Active Directory Is-Single-Valued jest FALSE, wtedy ta właściwość WMI jest połączona z operatorem OR z CIM_FLAG_ARRAY. Należy pamiętać, że każda właściwość jest oznaczona kwalifikatorem VT_BSTRADSyntax. Reprezentuje podstawową składnię usługi Active Directory.

W poniższej tabeli wymieniono mapowanie składni usługi Active Directory na typ danych właściwości WMI.

element Active Directory Typ danych usługi WMI
punkt dostępowy CIM_STRING
logiczne CIM_BOOLEAN
łańcuch znaków bez rozróżniania wielkości liter CIM_STRING
ciąg uwzględniający wielkość liter CIM_STRING
nazwa wyróżniająca CIM_STRING
dn-binary Osadzony obiekt klasy DN_With_Binary zdefiniowany poniżej.
DN-String Osadzony obiekt klasy DN_With_String zdefiniowany poniżej.
Wyliczenie CIM_SINT32
Wyliczenie CIM_STRING
liczba całkowita CIM_SINT32
largeInteger CIM_STRING
Deskryptor zabezpieczeń Osadzony obiekt klasy Uint8Array zdefiniowany poniżej.
Ciąg liczbowy CIM_STRING
Identyfikator obiektu CIM_STRING
Ciąg oktetu Osadzony obiekt klasy Uint8Array zdefiniowany poniżej.
NAZWA LUB CIM_STRING
Presentation-Address Osadzony obiekt klasy Uint8Array zdefiniowany poniżej.
Ciąg znaków do wydruku CIM_STRING
Łącze repliki Osadzony obiekt klasy Uint8Array zdefiniowany poniżej.
String(Sid) Osadzony obiekt klasy Uint8Array zdefiniowany poniżej.
Czas CIM_DATETIME
Czas zakodowany w formacie UTC CIM_DATETIME
Ciąg Unicode CIM_STRING

Składnia ciągu oktetów, która odnosi się do tablicy wartości uint8, przedstawia problem podczas mapowania na WMI, ponieważ usługa WMI zezwala na właściwości typów uint8 i tablice uint8, podczas gdy usługa Active Directory zezwala na właściwości typu Ciąg oktetów oraz na tablice ciągów oktetów.

W poniższym przykładzie przedstawiono klasę Dostawcy usług katalogowych, która służy do mapowania tablicy właściwości typu Octet String.

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

Usługa WMI mapuje wszystkie wartości właściwości typu Octet String w usłudze Active Directory na osadzone wystąpienia Uint8Array. Podobnie, usługa WMI mapuje tablice typu Octet String na tablice osadzonych obiektów Uint8Array.

W poniższym przykładzie pokazano klasy, które są mapowane przez WMI na wartości właściwości DS DN-Binary i DN-String.

Class DN_With_String
{
    string dnString;
    string value;
};

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

W poniższej tabeli przedstawiono sposób mapowania przez usługę WMI pozostałych właściwości interfejsu atrybutów usługi Active Directory na kwalifikatory właściwości usługi WMI.

Nazwa właściwości atrybutu usługi Active Directory Kwalifikator WMI Typ danych Informacje o mapowaniu
składnia atrybutów AttributeSyntax VT_BSTR Odwzorowane z ciągu znaków reprezentującego OID.
nazwa pospolita CN VT_BSTR Przypisany na podstawie wartości ciągu.
tylko system System VT_BOOL Odwzorowane z wartości logicznej.

Notatka

Usługa WMI mapuje wszystkie kwalifikatory Active Directory z odmianami kwalifikatora WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS.

Klasy skojarzeń

Usługa katalogowa jest zasadniczo hierarchicznym magazynem obiektów. Te obiekty, które mogą występować na poziomie niekońcowym w hierarchii, są nazywane „kontenerami”. Struktura tej hierarchii jest dodatkowo kontrolowana przez atrybuty klasy "Poss-Superiors" i "System-Poss-Superiors" w schemacie. Te, połączone, określają zestaw klas, których wystąpienia mogą być zawarte w wystąpieniu klasy kontenera.

Poniższy przykład przedstawia skojarzenie CIM jako instancje statycznej klasy skojarzenia 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;
};

Dostawca klas skojarzenia obsługuje metody GetObjectAsync i CreateClassEnumAsync.