Jump to content

VBS Contakt import funktioniert nicht


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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.

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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??

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...