Abszolút egyszerű feladatot kaptam. Csináljak egy listát, a következő oszlopokkal: felhasználói név, GUID. Az első oszloppal nem volt semmi gond és úgy véltem, a másikkal sem lesz. Kétperces munka. Egy perc volt, amíg megnéztem adsiedit-tel, hogyan is hívják a tulajdonságot: objectguid. A következő perc pedig azzal telt, hogy az előregyártott lekérdezőszkriptemben átírtam a lekérdezést a kívánt formára.
Majd az elkövetkező pár órában azzal foglalkoztam, hogy rájöjjek, miért is nem működik ez a módszer. A szkript ugyanis üres oszlopot hozott le.
Rutinosan kikapcsoltam a szofisztikált hibafigyelést (on error resume next), így meg is kaptam a várt runtime error-t.
Nézzük, ldp-ből mit látok. Semmit. Nincs ilyen tulajdonság. Visszamentem az adsiedit-hez, hátha az előbb káprázott a szemem, de nem – a tulajdonság ott volt, sőt, módosítani is tudtam. (Ezzel azért óvatosan.) Azaz jogosultsági probléma sem lehet.
Jöjjön a gugli power. Hosszas keresgélés után találtam olyan linkeket, miszerint felejtsem el, a feladat vbscript segítségével nem oldható meg. Ugyanis az objectguid az egy binárisokat tartalmazó tömb, a vbscipt viszont kizárólag a variant típusú tömböket tudja kezelni.
Szerencsére a lendület továbbvitt és kipróbáltam még néhány keresőszót. És meg is lett az eredménye, rátaláltam egy írásra Eric Lippert blogján.
A szokásos szöveggel indít. Hogy miért nem lehet megoldani a feladatot. Aztán megmutatja, milyen trükközéssel lehet mégis.
Először bedobja a cstr() függvényt. Ez egy olyan függvény, amely képes kigondolkozni a dobozból. Mindent, még az általa értelmezhetetlen adatokat is átkonvertálja sztringgé. Bízik benne, hogy a programoló csak tud kezdeni valamit a karakterkukaccal. És Eric tud. Nekiáll sztringet szeletelni, karaktereket konvertálni, nullából duplanullát csinálni – míg végül a boszorkánykonyhájából kipottyan a friss, ropogós GUID.
Egyszerű kiolvasás. Ja.
2006. May 31. Wednesday at 19:07
Hali,
Ez ugyan js, de egy ideje itt van:
http://www.gomori.hu/functions_hu.htm
üdv
Zoli
2006. May 31. Wednesday at 19:22
Valóban.
Be kell vallanom, hogy én az AD-t excel táblákból szoktam piszkálni, mert a makrózási lehetőség szép és jó és legfőképpen teljesen vbscript. Emiatt viszont hanyagolni is szoktam a js-t, valószínűleg érdemtelenül.
2006. June 01. Thursday at 12:58
Nem a cscript() függvényt dobja be, hanem a CSrt()-t !
2006. June 01. Thursday at 13:14
Így igaz. Ott volt a probléma, hogy a cstr-t én cstring-ként memorizáltam és ez fajult el írás közben.
Köszi a figyelmeztetést, javítottam.
2006. June 01. Thursday at 13:50
Ej vbscriptet tenyleg el kellene mar sullyeszteni a marianna arok legmelyebb bugyraba, hiszen ezt a feladatot egy statikus tipusos nyelvben tenyleg ket perc megoldani, de meg monad alatt is. Pl C#, vagy a Monad is tokeletes AD varazslasra.
2006. June 01. Thursday at 14:01
A monad rajta van a listámon, bele is fogom magam ásni. A C# viszont már sok egy ilyen adminféleségnek.
2006. June 01. Thursday at 15:38
Összedobtam MONAD-ban – katt a linkre!