Evoco 10 Geschrieben 10. Dezember 2008 Melden Teilen Geschrieben 10. Dezember 2008 Hallo ich habe Probleme, mit meinem Skript womit ich aus emer CSV Kontakte importien möchte. Leider finde ich nicht den Fehler nicht. Es kommt immer die Fehlermeldung: Das angegebene Verzeichnisattritbut bzw. der angegebene Verzeichnisdienstwert ist bereits vorhanden. Code 8007200A" Zeile 79: Dort steht aber nur "objContact.SetInfo" Bitte schaut euch es mal an und bibt mir bitte einen Tipp was ich Falsch mache, ich bin leider nicht so der Skripter! Gruß Evoco Zitieren Link zu diesem Kommentar
Lian 2.422 Geschrieben 10. Dezember 2008 Melden Teilen Geschrieben 10. Dezember 2008 Hallo, geht es um dieses Script hier: msxforum - MS Exchange Forum - How-To - Active Directory - Wie kann ich e-mail aktivierte Kontakte per Skript im Active Directory erzeugen? ? Zitieren Link zu diesem Kommentar
Evoco 10 Geschrieben 10. Dezember 2008 Autor Melden Teilen Geschrieben 10. Dezember 2008 Wenn man die TXT nicht lesen kann hier vorsichtshalber mal der Inhalt: Option Explicit Dim objRootLDAP, objContainer, objContact, strOU, strdomainname Dim strContainer, strDNSDomain, FSO, file, User, line Dim strMapirecip, strsn, strgivenName, strcn, strmail, strtargetAddress, strI, strstreetAddress, strcompany, strco, strdepartment, strname Dim strtelephoneNumber, strpostalCode, strdisplayName, strc Dim test Const ForReading = 1 Const filename="D:\Setup\Software\Adressen_import\test2.csv" 'on error resume next ' ------------------------------ 'please enter full LDAP path here strOU = "CN=team,CN=Users,DC=firma,DC=int" ' ------------------------------ strMapirecip = "FALSE" Set objRootLDAP = GetObject("LDAP://rootDSE") strdomainname = objRootLDAP.Get("DefaultNamingContext") Set objContainer = GetObject("LDAP://" & strOU) set FSO=CreateObject("Scripting.Filesystemobject") Set File=FSO.OpenTextFile(filename, ForReading, false) – while not file.AtEndOfStream line=file.Readline User=Split(line,";") strsn = User(0) strgivenName = User(1) strcn = User(2) strmail = User(3) strtargetAddress = User(4) strI = User(5) strstreetAddress = User(6) strcompany = User(7) strco = User(8) strdepartment = User(9) strname = User(10) strtelephoneNumber = User(11) strpostalCode = User(12) strdisplayName = User(13) strc = User(14) Set objContact = objContainer.Create("Contact",_ "cn=" & strcn ) objContact.Put "sn", strsn objContact.Put "givenName", strgivenName objContact.Put "cn", strcn objContact.Put "mail", strmail objContact.Put "targetAddress", strtargetAddress objContact.Put "I", strI objContact.Put "streetAddress", strstreetAddress objContact.Put "company", strcompany objContact.Put "co", strco objContact.Put "department", strdepartment 'objContact.Put "name", strname objContact.Put "telephoneNumber", strtelephoneNumber objContact.Put "postalCode", strpostalCode objContact.Put "displayName", strdisplayName objContact.Put "c", strc objContact.Put "mapirecipient", strMapirecip objContact.Put "InternetEncoding", 1310720 objContact.SetInfo Wend WScript.Quit – Ja darum geht es, aber ich möchte einige Einträge mehr dort übergeben, dort werden ja nur 3 oder 4 einträge übergeben. Gruß Evoco Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Dezember 2008 Melden Teilen Geschrieben 10. Dezember 2008 Das der Fehler bei "SetInfo" kommt, kommt daher, weil da ja erst ins AD geschrieben wird! So wie's aussieht, meckert er bereits vorhandene Daten an. Vermutlich gibts z.B. den cn bereits. Bzw. lass das objContact.Put "cn", strcn einfach mal weg. Zitieren Link zu diesem Kommentar
Evoco 10 Geschrieben 10. Dezember 2008 Autor Melden Teilen Geschrieben 10. Dezember 2008 Schön wäre es ja... aber leider existiert keiner. Ich habe auch mal andere Kontalte in die CSV geschrieben und auch dort habe ich die gleiche Fehlermeldung!! Das kann es nicht sein, was ist mit Set objContact = objContainer.Create("Contact",_ "cn=" & strcn ) Wofür steht dies, denn beim Original steht dort: Set objContact = objContainer.Create("Contact",_ "cn=" & strContactName) und strContact ist für "mailnickname" aber bei CN soll doch kein Mailnickname stehen. – wenn ich objContact.Put "cn", strcn weg lasse dann kommt der gleiche Fehler und ich brauch den doch für Set objContact = objContainer.Create("Contact",_ "cn=" & strcn ) Oder?? Kann ich denn eigentlich so viele Argument übergeben?? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Dezember 2008 Melden Teilen Geschrieben 10. Dezember 2008 Das kann es nicht sein, was ist mit Set objContact = objContainer.Create("Contact",_ "cn=" & strcn ) Wofür steht dies, denn beim Original steht dort: Set objContact = objContainer.Create("Contact",_ "cn=" & strContactName) Die Variable heisst da nur anders. Ist aber im Beispiel das erste Feld der CSV, in dem der CN steht. ...wenn ich objContact.Put "cn", strcn weg lasse dann kommt der gleiche Fehler und ich brauch den doch für Set objContact = objContainer.Create("Contact",_ "cn=" & strcn ) Mit objContainer.Create soll ja ein Kontakt mit dem entspr. CN erzeugt werden, daher erübrigt sich das .put "cn" Kann ich denn eigentlich so viele Argument übergeben?? Ich sach ma: ja. Hast du's denn erst mal wie im Beispiel versucht? Erst mal mit wenigen Daten anfangen, ob es überhaupt geht und dann hocharbeiten. Zitieren Link zu diesem Kommentar
Evoco 10 Geschrieben 10. Dezember 2008 Autor Melden Teilen Geschrieben 10. Dezember 2008 Ja ohne meine Erweiterungen funktioniert es, ich hatte es eigentlich schon nach und nach erweitert. Sieht man denn kein Fehler so auf Anhieb?? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Dezember 2008 Melden Teilen Geschrieben 10. Dezember 2008 Was sind "I", "co" und "c" denn für Felder? Die kenn ich, so auf Anhieb, nicht. Zitieren Link zu diesem Kommentar
Evoco 10 Geschrieben 10. Dezember 2008 Autor Melden Teilen Geschrieben 10. Dezember 2008 Wenn man sich das AD mit ADSI Edit anschaut kann man sich Kontakte anschauen und sieht welche Variablen (Attribute) für was stehen. I ist Ort co ist Land c ist z.B Kürzel für Land z.b. Deutschland "DE" Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Dezember 2008 Melden Teilen Geschrieben 10. Dezember 2008 Hast Du auch geschaut, was das jeweils für Datentypen sind? Habs jetzt grad nicht vor mir, aber ich könnte mir vorstellen, dass nicht alles Strings sind. Mehrdimensionale Felder müssten z.B. anders befüllt werden. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. Dezember 2008 Melden Teilen Geschrieben 11. Dezember 2008 Moin, also, erstens: Um herauszufinden, welches Attribut denn das Problem darstellt, könntest du testweise nach jeder "Put"-Zeile einmal "objContact.SetInfo" ausführen. Dann wird der Fehler an der richtigen Stelle gemeldet. Ich habe, genau wie Frank, das "cn" in Verdacht, das kannst du nämlich gar nicht so setzen. Zweitens: Es gibt kein Attribut "I" (groß i), sondern das gemeinte heißt "l" (klein L). faq-o-matic.net Active Directory: LDAP-Feldnamen Drittens: Die Country-Attribute sind leider nicht so einfach. Es gibt eine ganze Reihe von Attributen, die die Angabe in mehreren Arten speichern: Klartext, Kürzel, numerischer Code usw. Immer, wenn ich damit zu tun hatte, war die Länderangabe eigentlich verzichtbar, daher lässt man das in der Praxis meist weg. Wenn das bei dir anders ist, solltest du dich ausführlich damit beschäftigen, weil da einige Stolperfallen lauern. Aber dazu solltest du die Grundlage deines Skripts erst mal beherrschen. Gruß, Nils Zitieren Link zu diesem Kommentar
Evoco 10 Geschrieben 11. Dezember 2008 Autor Melden Teilen Geschrieben 11. Dezember 2008 Moin, also, erstens: Um herauszufinden, welches Attribut denn das Problem darstellt, könntest du testweise nach jeder "Put"-Zeile einmal "objContact.SetInfo" ausführen. Dann wird der Fehler an der richtigen Stelle gemeldet. Ich habe, genau wie Frank, das "cn" in Verdacht, das kannst du nämlich gar nicht so setzen. Zweitens: Es gibt kein Attribut "I" (groß i), sondern das gemeinte heißt "l" (klein L). faq-o-matic.net Active Directory: LDAP-Feldnamen Drittens: Die Country-Attribute sind leider nicht so einfach. Es gibt eine ganze Reihe von Attributen, die die Angabe in mehreren Arten speichern: Klartext, Kürzel, numerischer Code usw. Immer, wenn ich damit zu tun hatte, war die Länderangabe eigentlich verzichtbar, daher lässt man das in der Praxis meist weg. Wenn das bei dir anders ist, solltest du dich ausführlich damit beschäftigen, weil da einige Stolperfallen lauern. Aber dazu solltest du die Grundlage deines Skripts erst mal beherrschen. Gruß, Nils Woah das ist doch mal eine Antwort ich werde das gleich mal testen. danke erst einmal – So ich bin ein ganzes Stück weiter gekommen, ich habe eine Frage aber noch. Kann man im Skript auch sagen das wenn dieser Kontakt schon besteht das dieser nur modifiziert wird. Jetzt momentan müßte ich ja alle Kontakte löschen dann neu importieren, was zu Folge hätte das zum Beispiel Gruppenmitgliedschaften verloren gehen würden. Ich möchte aber die vorhanden Kontakte nur modifizieren. Geht das ??? Und was muß ich dafür ändern?? Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 11. Dezember 2008 Melden Teilen Geschrieben 11. Dezember 2008 Moin, klar geht das. Das erfordert aber einiges an Logik in dem Skript. Dazu solltest du die nötigen Scripting-Kenntnisse aufbauen, denn das ist dann doch etwas zu viel, um es iterativ im Forum aufzubauen. Gruß, Nils Zitieren Link zu diesem Kommentar
Evoco 10 Geschrieben 11. Dezember 2008 Autor Melden Teilen Geschrieben 11. Dezember 2008 Ach komm... Das Skript läuft so aber so schwer kann es doch nicht sein es zu modifizieren damit wenn der Kontakt schon vorhanden ist das er nur die Daten modifiziert. Gebt mir doch bitte mal einen Tipp wo ich zu suchen habe...!! Gruß Evoco Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 11. Dezember 2008 Melden Teilen Geschrieben 11. Dezember 2008 Wenns nicht so schwer sein kann, wo ist dann das Problem? :D Hier'n Tip für Dich, frisch ergoogelt ;) : Add/Modify/Delete Exchange Contact with VBScript - Phong Dam Technical Blog Statt "Create" wird ne "Get" Methode verwendet. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.