다음을 통해 공유


Active Directory 클래스 매핑

Active Directory에는 다양한 가능한 개체가 있으므로 WMI는 직접 일대일 매핑을 만들 수 없습니다. 대신 디렉터리 서비스 공급자는 규칙을 사용하여 두 기술 간의 클래스를 매핑합니다.

이 항목에서는 다음 섹션에 대해 설명합니다.

메모

특정 운영 체제에서 이 구성 요소의 지원 및 설치에 대한 자세한 내용은 WMI 구성 요소 운영 체제 가용성을 참조하세요.

매핑 클래스

다음 목록에서는 Directory Services 공급자가 Active Directory 클래스를 WMI 클래스에 매핑하는 데 사용하는 지침을 설명합니다.

  • Active Directory 스키마의 각 추상 클래스는 WMI 스키마의 하나의 추상 클래스에 매핑됩니다.

    WMI 스키마에서 각 추상 클래스는 'DS_'라는 접두사가 붙습니다. 예를 들어 Active Directory 스키마의 person 클래스는 DS_person WMI 클래스에 매핑됩니다.

  • Active Directory 스키마의 각 nonabstract 클래스는 WMI 스키마의 다음 두 클래스에 매핑됩니다.

    • 매핑된 첫 클래스에는 ADS_가 접두사로 붙습니다. 이러한 클래스는 아래 규칙에 따라 매핑되는 추상 클래스입니다.
    • 매핑된 두 번째 클래스는 DS_ 이름 접두사를 사용하는 nonabstract 클래스입니다. 이 클래스는 ADS_ 추상 클래스에서 파생되며 Provider 한정자가 추가됩니다.

    예를 들어 active Directory 스키마의 사용자 클래스는 두 클래스에 매핑됩니다. 첫 번째 클래스는 아래 규칙에 따라 매핑되는 ADS_user 추상 클래스입니다. 두 번째 클래스는 DS_user nonabstract 클래스입니다. ADS_user에서 파생되어 추가된 공급자 한정자를 포함합니다.

  • 달리 지정하지 않는 한 매핑된 클래스의 이름은 Active Directory 클래스에서 LDAP-Display-Name 속성의 잘못된 값입니다.

  • Sub-Class-Of 속성이 Active Directory 클래스에 있는 경우 WMI 매핑 클래스는 지정된 클래스에서 파생됩니다.

    Sub-Class-Of 속성이 없으면 WMI 매핑 클래스는 MOF 파일에 지정된 대로 DS_LDAP_Root_Class 클래스에서 파생됩니다.

    메모

    이 클래스에는 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 }"입니다.

개체 클래스

N/A

매핑되지 않았습니다.

개체 클래스 범주

ObjectClassCategory(VT_I4)

정수 값에서 직접 매핑됩니다. 또한 값이 Abstract(2)인 경우에는, "Abstract" 한정자라고 불리는 표준 VT_BOOL CIM 한정자가 추가로 생성됩니다.

RDN-ATT-ID

RDNATTID(VT_BSTR)

OID 값의 문자열 표현에서 매핑됩니다. 예를 들어 "{ 1 3 3 6 }"입니다. 또한 여기에서 식별된 속성은 표준 인덱싱된 CIM 한정자를 TRUE설정하여 주석으로 추가됩니다.

시스템 전용

SystemOnly(VT_BOOL)

부울 값에서 직접 매핑됩니다.

다음은 WMI 클래스 속성에 매핑된 Active Directory 클래스 속성을 나열합니다.

포함될 수 있음

이 목록의 각 속성은 WMI 속성에 매핑됩니다.

필수

이 목록의 각 속성은 WMI 속성에 매핑됩니다. 표준 Not_Null CIM 한정자는 각각에 대해 만들어집니다.

시스템-포함할-수-있음

이 목록의 각 속성은 WMI 속성에 매핑됩니다. 또한 각 속성은 System 한정자를 사용하여 주석이 달리고, TRUE로 설정되어 있습니다.

시스템-필수-포함해야 합니다

이 목록의 각 속성은 WMI 속성에 매핑됩니다. 각 항목에 대해 표준 Not_Null CIM 한정자가 생성됩니다. 또한 각 속성은 System 한정자를 사용하여 TRUE로 설정됩니다.

매핑 속성

Directory Services 공급자는 이 섹션의 규칙에 따라 Active Directory 클래스의 각 특성을 해당 WMI 클래스의 정확히 하나의 속성에 매핑합니다. 일반적으로 디렉터리 서비스 공급자는 WMI 속성의 이름을 Active Directory 특성의 LDAP-Display-Name 값의 엉망 버전으로 지정합니다.

Active Directory 속성 Is-Single-ValuedFALSE인 경우, 이 WMI 속성은 OR 연산자를 사용하여 CIM_FLAG_ARRAY와 결합됩니다. 각 속성은 VT_BSTR 한정자, ADSyntax을 붙인 태그가 있습니다. 기본 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
오브젝트 ID CIM_STRING
옥텟 문자열 아래에 정의된 Uint8Array 클래스의 포함 객체입니다.
OR 이름 CIM_STRING
Presentation-Address 아래에 정의된 클래스 의 Uint8Array 객체가 포함되어 있습니다.
출력 대/소문자 문자열 CIM_STRING
복제본 링크 아래에 정의된 Uint8Array 클래스의 포함된 개체입니다.
String(Sid) 클래스의 Uint8Array 포함된 객체가 아래에 정의되어 있습니다.
시간 CIM_DATETIME
UTC 코딩된 시간 CIM_DATETIME
유니코드 문자열 CIM_STRING

uint8 값의 배열을 참조하는 Octet String 구문은 WMI에 매핑할 때 문제가 발생합니다. WMI는 uint8 형식의 속성과 uint8배열을 허용하는 반면, Active Directory는 Octet String 형식의 속성과 Octet String 배열을 허용합니다.

다음 예제에서는 Octet String 형식 속성의 배열을 매핑하는 데 사용되는 Directory Services 공급자 클래스를 보여 줍니다.

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

WMI는 모든 Octet String Active Directory 속성 값을 Uint8Array포함된 인스턴스에 매핑합니다. 마찬가지로 WMI는 옥텟 문자열 배열을 포함된 Uint8Array 객체의 배열에 매핑합니다.

다음 예제에서는 DN-Binary 및 DN-String DS 속성 값에 WMI에 의해 매핑 되는 클래스를 보여 줍니다.

Class DN_With_String
{
    string dnString;
    string value;
};

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

다음 표에서는 WMI가 나머지 Active Directory 특성 인터페이스 속성을 WMI 속성 한정자로 매핑하는 방법을 나열합니다.

Active Directory 특성 속성 이름 WMI 자격 지정자 데이터 형식 매핑 정보
특성 구문 속성 구문 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;
};

연결 클래스 공급자는 GetObjectAsyncCreateClassEnumAsync 메서드를 지원합니다.