@ADSISearchObjectGetColumnData
Syntax
@ADSISearchObjectGetColumnData(ADSIObj;ADSISearchResult;ColName;ColData);
Beschreibung
Holt die nächste Splate des Suchergebnisses.
Rückgabe:
Im Fehlerfall @Error, Im Erfolgsfall TRUE und wenn keine weitere Spalte mehr verfügbar ist FALSE.
TEXT ColName:
Liefert den Spaltennamen.
ColData:
Wenn absehbar werden die Daten in den jeweiligen Engine-Datentyp gewandelt.
In den meisten Fällen werden Listen zurückgegeben.
Wenn ein Datentyp unbekannt ist, wird der Text "UNSUPPORTED DATATYPE (X)" zurück gegeben, wobei X den Datentyp auf ADSI-Seite bezeichnet.
Für einen SECURITY DESCRIPTOR wird "SECURITY DESCRIPTOR" zurückgegeben, der Datentyp kann nicht sinnvoll gewandelt werden.
Überschreitet eine Spalte die in der Engine maximal zulässige Feldgröße, wird "ITEM TOO BIG" zurück gegeben.
Für eine Spalte mit dem ADSI-Datentyp "ADSTYPE_LARGE_INTEGER" wird eine TEXTLIST zurückgegeben.
Der Datentyp kann mehrere Inhalte haben.
Es kann zum einen Zeitwerte enthalten, mit möglicherweise speziellen Werten wie "NEVER EXPIRES" oder "NO VALUE" oder komplexe Zahlwerte.
Es können bei der Konvertierung der Zeitwerte auch Fehler auftreten, die dann in dem jeweiligem TEXTELEMENT signalisiert werden.
Die Rechnung für solche Zeitwerte beginnt mit dem 01.01.1601 (in 100 Nanosekundenschritten), ein NULL-Wert liefert also ein solches Datum.
Komplexe Zahlwerte werden in der Form "H:X L:Y Q:Z" zurückgegeben.
"H" steht für HighPart (DWORD)
"L" steht für LowPart (int)
"Q" steht für QuadPart (I64 int)
Unter bestimmten Umständen kann auch eine Variable mit dem Datentyp POTVAR zurückgegeben werden.
Beispiel: @ADSISearchObjectGetColumnData(ADSIObj;ADSISearchResult;ColName;ColData);
ADSIObj:=@ADSIOpenSearchObject("LDAP://mycompany.local/CN=Users,DC=mycompany,DC=local";"";"");
ADSISearchPrefs:=@ADSISearchPreferencesArrayInit();
Ret:=@ADSISearchPreferencesArrayAddScope(ADSISearchPrefs;2);
Ret:=@ADSISearchPreferencesArrayApply(ADSIObj;ADSISearchPrefs);
ADSISearchPrefs:=@ADSISearchPreferencesArrayDestroy(ADSISearchPrefs);
ADSISearchResult:=@ADSISearchObjectExecuteSearch(ADSIObj;"(&(objectCategory=person)(objectClass=user))");
RowCC:=0;
MaxRows:=10;
Loop:=@ADSISearchObjectGetFirstRow(ADSIObj;ADSISearchResult);
WHILE(Loop & (RowCC<MaxRows))
{
@Increment(RowCC);
@LogReport("############################################# "+@Right("0000"+@Text(RowCC);4)+" #############################################");
More:=1;
WHILE(More)
{
More:=@ADSISearchObjectGetColumnData(ADSIObj;ADSISearchResult;ColName;ColData);
@LogReport("ColName: "+ColName+" ["+@GetDataType(ColData)+"]";3);
@LogReport(ColData;3);
}
Loop:=@ADSISearchObjectGetNextRow(ADSIObj;ADSISearchResult);
}
Ret:=@ADSISearchObjectCloseSearch(ADSIObj;ADSISearchResult);
ADSIObj:=@ADSICloseSearchObject(ADSIObj);
Dieses Beispiel gibt für den DC "mycompany" die Daten von allen Spalten aller Benutzer-Objekte (Begrenzt auf MaxRows=11) im ApiLog aus.
