共用方式為


對應 Active Directory 類別

因為 Active Directory 有各種不同的可能物件,所以 WMI 無法建立直接一對一對應。 相反地,目錄服務提供者會使用規則來對應兩種技術之間的類別。

本主題將討論下列各節:

注意

如需特定作業系統上支援和安裝此元件的詳細資訊,請參閱 WMI 元件的作業系統可用性

對應類別

下列清單描述目錄服務提供者用來將 Active Directory 類別對應至 WMI 類別的指導方針:

  • Active Directory 架構中的每個抽象類別都會對應至 WMI 架構中的一個抽象類別。

    在 WMI 架構中,每個抽象類別前面都會加上 DS_。 例如,Active Directory 架構中的 person 類別會對應至 DS_person WMI 類別。

  • Active Directory 架構中的每個非abstract 類別都會對應至 WMI 架構中的下列兩個類別:

    • 第一個對應的類別前面會加上ADS_。 這些是抽象類別,會根據下列規則進行對應。
    • 第二個對應類別是具有DS_名稱前置詞的非abstract 類別。 這個類別衍生自ADS_抽象類別,並新增 提供者 限定詞。

    例如,Active Directory 架構中的 使用者 類別會對應至兩個類別。 第一個類別是 ADS_user 抽象類別,其會根據下列規則進行對應。 第二個類別是 DS_user 非abstract 類別。 它衍生自 ADS_user ,並已新增 提供者 限定詞。

  • 除非另有指定,否則對應類別的名稱是 Active Directory 類別中 LDAP-Display-Name 屬性的管理值。

  • 如果 Active Directory 類別上有 Sub-Class-Of 屬性,則 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 類別的對應資訊,其中顯示每個 Active Directory 屬性的 WMI 限定詞和 WMI 限定詞類型。

Common-Name

CN (VT_BSTR)

直接從字串值對應。

Default-Object-Category

DefaultObjectCategory (VT_BSTR)

直接從字串值對應。

Default-Security-Descriptor

DefaultSecurityDescriptor (VT_BSTR)

直接從字串值對應。

Governs-Id

GovernsId (VT_BSTR)

從 OID 的字串表示對應;例如,「{ 1 3 3 6 }」。

Object-Class

N/A

不會對應。

Object-Class-Category

ObjectClassCategory (VT_I4)

直接從整數值對應。 此外,如果值為 Abstract (2) ,則也會建立稱為「抽象」限定詞的標準VT_BOOL CIM 限定詞。

RDN-ATT-ID

RDNATTID (VT_BSTR)

從 OID 值的字串表示對應;例如,「{ 1 3 3 6 }」。 此外,此處識別的屬性會加上標準 Indexed CIM 限定詞設定為 TRUE的批註。

僅限系統

SystemOnly (VT_BOOL)

直接從布林值對應。

下列列出對應至 WMI 類別屬性的 Active Directory 類別屬性。

五月包含

此清單中的每個屬性都會對應至 WMI 屬性。

必須包含

此清單中的每個屬性都會對應至 WMI 屬性。 系統會為每個專案建立標準 Not_Null CIM 限定詞。

System-May-Contain

此清單中的每個屬性都會對應至 WMI 屬性。 此外,每個屬性都會以 系統 限定詞標注,設定為 TRUE

System-Must-Contain

此清單中的每個屬性都會對應至 WMI 屬性。 系統會為每個專案建立標準 Not_Null CIM 限定詞。 此外,每個屬性都會以 系統 限定詞標注,設定為 TRUE

對應屬性

目錄服務提供者會根據本節中的規則,將 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-String 以下定義的類別内嵌物件 DN_With_String
列舉型別 CIM_SINT32
列舉型別 CIM_STRING
整數 CIM_SINT32
LargeInteger CIM_STRING
安全性描述元 以下定義的 Uint8Array 類別内嵌物件。
數值字串 CIM_STRING
物件識別碼 CIM_STRING
八位字串 以下定義的 Uint8Array 類別内嵌物件。
OR 名稱 CIM_STRING
Presentation-Address 以下定義的 Uint8Array 類別内嵌物件。
列印大小寫字串 CIM_STRING
複本連結 以下定義的 Uint8Array 類別内嵌物件。
字串 (Sid) 以下定義的 Uint8Array 類別内嵌物件。
時間 CIM_DATETIME
UTC 自動程式碼時間 CIM_DATETIME
Unicode 字串 CIM_STRING

Octet String 語法是指uint8值的陣列,在對應至 WMI 時會產生問題,因為 WMI 允許uint8 類型的屬性和 uint8的陣列,而 Active Directory 則允許八進制字串類型的屬性以及八位字串的陣列。

下列範例顯示用來對應八位字串類型屬性陣列的目錄服務提供者類別。

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

WMI 會將所有 Octet String Active Directory 屬性值對應至 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 限定詞 資料類型 對應資訊
Attribute-Syntax AttributeSyntax VT_BSTR 從 OID 的字串表示對應。
Common-Name 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 方法。