Set objAttribute = GetObject _
("LDAP://cn=telephone-Number,cn=schema,cn=configuration,dc=fabrikam,dc=com")
Wscript.Echo "Single-valued: " & objAttribute.isSingleValued
Select Case objAttribute.oMSyntax
Case 1
Wscript.Echo "Datatype: " & "Boolean"
Case 2
Wscript.Echo "Datatype: " & "Integer or Enumeration"
Case 4
Wscript.Echo "Datatype: " & "String (Octet or SID)"
Case 6
Wscript.Echo "Datatype: " & "String (Object-Identifier)"
Case 10
Wscript.Echo "Datatype: " & "Integer or Enumeration"
Case 18
Wscript.Echo "Datatype: " & "String (Numeric)"
Case 20
Wscript.Echo "Datatype: " & "Case-Ignore String (Teletex)"
Case 27
Wscript.Echo "Datatype: " & "Case-Sensitive String"
Case 19
Wscript.Echo "Datatype: " & "String (Printable or IA5)"
Case 22
Wscript.Echo "Datatype: " & "String (Printable or IA5)"
Case 23
Wscript.Echo "Datatype: " & "String (UTC-Time or Generalized-Time)"
Case 24
Wscript.Echo "Datatype: " & "String (UTC-Time or Generalized-Time)"
Case 64
Wscript.Echo "Datatype: " & "String (Unicode)"
Case 65
Wscript.Echo "Datatype: " & "Large Integer"
Case 66
Wscript.Echo "Datatype: " & "String (NT Security Descriptor)"
Case 127
Wscript.Echo "Datatype: " & "Object"
Case Else
Wscript.Echo "Datatype: " & "Undefined"
End Select
指令碼一開始是繫結至 Active Directory 中我們所要的屬性 (在本範例中是 telephone-Number):
Set objAttribute = GetObject _
("LDAP://cn=telephone-Number,cn=schema,cn=configuration,dc=fabrikam,dc=com")
在這裡要注意兩件事。首先,我們是使用屬性 (telephone-Number) 的 CN,而不是 LDAP 顯示名稱 (telephoneNumber)。這是重點,要牢記在心,因為您很可能已經習慣使用 ADSI 指令碼之中的 LDAP 顯示名稱。
附註。如果不知道特定屬性的 CN,請參閱 MSDN 上的 Active Directory 架構參考 (英文)。一般來說,只要在 LDAP 顯示名稱中的各字之間加上連字號,就可以建構 CN。這樣一來,telephoneNumber 就會變成 telephone-Number。不過這並不保證所有情況都能以這種方法運作,因此必要時請參閱「架構參考」。 |
其次,我們是繫結至結構描述本身,它位於 Configuration 容器中。這並不困難,只不過是跟一般 ADSI 指令碼不同罷了。因此還是一樣,就只是在嘗試探索時必須牢記在心的要點而已。
然後,我們就從其中擷取及報告 isSingleValued 屬性的值:
Wscript.Echo "Single-valued: " & objAttribute.isSingleValued
我們已經說過了:這部份很簡單。而且,其實,下一部份也很簡單:只是利用 Select Case 陳述式,(根據 oMSyntax 的值) 判斷屬性的資料型別而己。我們的 Select Case 陳述式如下:
Select Case objAttribute.oMSyntax
我們只是在 Select Case 區塊中尋找可能的 oMSyntax 值,然後回應相對應的訊息就行了。例如,如果 oMSyntax 等於 64 (在本範例中就是如此),就會觸發下列程式碼行:
Case 64
Wscript.Echo "Datatype: " & "String (Unicode)"
為 telephone-Number 屬性執行指令碼,就會取回下列資訊:
Single-valued: True
Datatype: String (Unicode)
好,所以呢,其實判斷方法並不是那麼難,只不過是稍微曲折複雜一點。但是您們都了解 Scripting Guy 嘛:只要必須多一點努力,那就…
附註:對了!還有一點,我們明白 Select Case 陳述式中顯示的資料型別可能會有點隱晦不清。不過還好,您可以參考 MSDN 上的 語法參考 (英文),更深入了解。 |
|