Jump to content
Sign in to follow this  
Evoco

VBS Contakt import funktioniert nicht

Recommended Posts

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

Share this post


Link to post

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

Share this post


Link to post

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.

Share this post


Link to post

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??

Share this post


Link to post
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.

Share this post


Link to post

Ja ohne meine Erweiterungen funktioniert es, ich hatte es eigentlich schon nach und nach erweitert.

 

Sieht man denn kein Fehler so auf Anhieb??

Share this post


Link to post

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"

Share this post


Link to post

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.

Share this post


Link to post

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

Share this post


Link to post
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??

Share this post


Link to post

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

Share this post


Link to post

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

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...