Provider Specific Attributes
Mit den im SelfADSI-Artikel "LDAP Objekt-Attribute lesen" beschriebenen Methoden können Sie alle Attribute eines Objekts im Active Directory (oder einem anderen LDAP-Verzeichnis) auslesen und die damit empfangenen Daten in einem Skript weiterverarbeiten.
Problematischer wird es, wenn der Verzeichnis-Server ein Attribut unter dem ADSI-Datentyp "Provider Specific" zurückgibt. Dies kommt in Active Directory Umgebungen nie vor, ist jedoch oft bei Novell eDirectory-Zugriffen (NDS) der Fall und kann auch bei anderen LDAP-Servern vorkommen.
Wenn ein LDAP-Server den Datentyp "Provider Specific" zurückgibt, heißt das soviel wie "kann vom Skript aus nicht genau entschieden werden". Es ist schwierig, diese Attribute auszulesen (das Schreiben dieser Attribute hingegen klappt fast immer ohne Probleme). Versuchen Sie es mit einem normalen Lesezugriff (mit Get oder GetEx), dann bekommen Sie wahrscheinlich die folgende Script-Laufzeitfehlermeldung:
0x8000500C - "The Active Directory datatype cannot be converted to/from a native DS datatype"
Hier hilft nur ein Blick ins Schema des betreffenden Verzeichnisdiensten und eine spezielle Methode, um die Daten in ein für eine Skript brauchbares Format umzuwandeln. Man liest die Daten dazu aus dem lokalen Property-Cache eines verbundenen Verzeichnisobjektes. Dieser wird mit der ADSI-Methode GetInfo gefüllt und kann danach mit GetPropertyItem zugegriffen werden, wobei der Datentyp der ausgelesenen Daten in gewissen Grenzen selbst festgelegt werden kann. Eine vernünftige Vorgehensweise ist es, die Daten stets in der LDAP-Syntax OctetString zu lesen und sie danach in das geeignete Datenformat umzuwandeln.
Das Ergebnis: Die binären Rohdaten werden erst als purer Hex-String ausgegeben, dann in einem Hex-Editor-ähnlichen Format und zuletzt als ASCII-Text.
ADSI-Referenz im MSDN: Property Cache Interface
In Active Directory Umgebungen werden Attribute eigentlich NIE im Format "Provider Specific" zurückgegeben, falls doch, liegt eine Fehlfunktion des betreffenden Domänen-Controllers oder der ADSI-Schnittstelle auf dem Client vor. Bei anderen Verzeichnisdienst-Servern wie z.B. in eDirectory-Umgebungen werden Sie Provider Specific Attribute jedoch häufiger antreffen.