Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBScript createKontakt mit CSV Import Problem

Mitglied: hagbardceline

hagbardceline (Level 1) - Jetzt verbinden

29.05.2008, aktualisiert 10.06.2008, 5709 Aufrufe, 11 Kommentare

Kontakte per script in der AD anlegen ohne im GAB zu erscheinen (evtl sofort in einen verteiler kommen), möglich für alle Mitarbeiter.

Nach meiner kleinen erfolgreichen Suche für Script welches Kontakte in der AD anlegt impotiert aus einer Datei fand ich hier ein passendes da. Habe die Pfade angepasst und es erfolgreich getestet. Jedoch gefällt mir nicht das der Anzeigename extra erstellt wird und ich habe versucht die Variablen strLast und StrName stattdessen zu benutzen. Desweiteren habe ich ein Feld für die beschreibung mit Eingebaut. Oder es zumindest versucht, denn das script läuft zwar durch, erstellt aber keine Kontakte. Der LDAP Pfad stimmt, denn das "alte" script funktioniert mit denen. Ich denke es hapert an meinem Versuch den Anzeigenamen auf "Nachnamen, Vornamen" zu scripten?! Zusätzlich möchte ich noch das die Kontakte nicht im GAB angezeigt werden (ginge im Notfall aber wohl auch mit ADModify) und die Adressen am besten direkt in einem Verteiler Landen. Erstmal sollte es aber überhaupt funktionieren
Jemand eine Ahnung woran es liegen könnte?



01.
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
02.
' Kontakt
03.
' Beschreibung
04.
'
05.
' Version: 1.1
06.
' Datum:   08.06.2005
07.
' Autor:   Jon-Claude Hick
08.
' Letzte Änderungen: 12.05.2006
09.
'
10.
' Jon-Claude Hick stellt dieses Skript ohne jede
11.
' Gewährleistung zur Verfügung.
12.
' Die Verwendung geschieht auf eigene Gefahr.
13.
'
14.
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
15.

16.
Option Explicit
17.
Dim objRootLDAP, objContainer, objContact, strOU, strdomainname
18.
Dim strContainer, strDNSDomain, FSO, file, User, line, strTargetAddress
19.
Dim strContactName, strEmail, strFirst, strLast, strMapirecip, strDesc
20.
Const ForReading = 1
21.
Const filename="G:\X-Sonstiges\Kontakte.csv"
22.

23.
on error resume next
24.

25.
' ------------------------------
26.
'please enter full LDAP path here
27.

28.
strOU = "Xerver/ou=Kontakttest,ou=MyBusiness,dc=X,dc=de"
29.
' ------------------------------
30.

31.
strMapirecip = "FALSE"
32.

33.
Set objRootLDAP = GetObject("LDAP://rootDSE")
34.
strdomainname = objRootLDAP.Get("DefaultNamingContext")
35.
Set objContainer = GetObject("LDAP://" & strOU)
36.

37.
set FSO=CreateObject("Scripting.Filesystemobject")
38.
Set File=FSO.OpenTextFile(filename, ForReading, false)
39.

40.
while not file.AtEndOfStream
41.
	line=file.Readline
42.
	User=Split(line,";")
43.
	strContactName = strLast & ", " & strFirst
44.
   	strLast = User(0)
45.
   	strFirst = User(1)
46.
   	strEmail = User(2)
47.
	strDesc = User(3)
48.
	Set objContact = objContainer.Create("Contact",_
49.
   	"cn=" & strContactName)
50.
   	objContact.Put "Mail", strEmail
51.
   	objContact.Put "targetaddress", strEmail
52.
   	objContact.Put "givenName", strFirst
53.
   	objContact.Put "sn", strLast
54.
	objContact.Put "description", strDesc
55.
   	objContact.Put "mailnickname", strContactName
56.
   	objContact.Put "mapirecipient", strMapirecip
57.
	strTargetAddress = "SMTP:" & strEmail
58.
	objContact.Put "TargetAddress", strTargetAddress
59.
	objContact.Put "InternetEncoding", 1310720
60.
	objContact.SetInfo 
61.
Wend
62.
WScript.Quit
Und die Passende CSV Datei:
01.
Muster;Max;Max@muster.de;Beschreibung
Vielen Dank schon mal

gruß h.c.
Mitglied: tacker
29.05.2008 um 16:30 Uhr
salü

probier ma folgende änderung, welche mir bei kurzem durchschauen sofort aufgefallen ist!

anstatt

01.
strContactName = strLast & ", " & strFirst
02.
strLast = User(0) 
03.
strFirst = User(1) 
stelle um auf..

01.
strLast = User(0) 
02.
strFirst = User(1) 
03.
strContactName = strLast & ", " & strFirst
bei deiner methode weiss er ja noch gar nicht wie die strings strlast und strfirst gesetzt sind, respektive nimmt leere...

somit sollte das script zumindest wieder durchrennen

gruss
Bitte warten ..
Mitglied: hagbardceline
29.05.2008 um 16:56 Uhr
Danke, das hatte ich nicht mehr bedacht, es funktioniert aber immer noch nicht, sprich es läuft durch aber er legt die Kontakte nicht an. Komisch, habe gedacht daran könnte es liegen.
Bitte warten ..
Mitglied: bastla
29.05.2008 um 17:02 Uhr
Hallo hagbardceline!

Die Angabe der OU (des LDAP-Pfades) sieht wirklich so aus?
01.
strOU = "Xerver/ou=Kontakttest,ou=MyBusiness,dc=X,dc=de" 
Zum Testen wäre es übrigens generell sinnvoll, die Zeile 23 auszukommentieren, damit das Script bei einem Fehler abbricht und Du aus der Fehlermeldung Rückschlüsse ziehen kannst.

Grüße
bastla
Bitte warten ..
Mitglied: hagbardceline
29.05.2008 um 17:33 Uhr
Xserver stimmt nicht und dc=X auch nicht, hab die Namen nur rausgenommen.

Jetz hab ich Zeile 23 auskommentiert und er sagt mir:

http://666kb.com/i/az2fy54psdom1fqw2.jpg

was wohl diese zeile wäre
01.
	objContact.SetInfo 
(btw, kann ich im Kommentar kein Bild direkt einbinden? Alles neu!)
Bitte warten ..
Mitglied: Biber
29.05.2008 um 18:03 Uhr
Moin hagbardceline,

ob es alle Probleme löst, weiß ich nicht, aber...
01.
 ...
02.
    ' #CHG# objContact.Put "givenName", strFirst 
03.
    ' #CHG# objContact.Put "sn", strLast 
04.
    ' wäre nur bei Kontakten richtig, 
05.
    ' die den gleichen Vor- und Nachnamen haben
06.
    objContact.Put "givenName", strLast 
07.
    objContact.Put "sn", strFirst
08.
    objContact.Put "description", strDesc
09.
    objContact.Put "mailnickname", strContactName
10.
  '#CHG# objContact.Put "mapirecipient", strMapirecip
11.
    objContact.Put "mapirecipient", FALSE
12.
  ' oder NICHTS setzen - false ist ja DEFAULT
13.
....
14.
...
Grüße
Biber
[Edit] 30.5.2008
Sorry, hab mich missverständlich ausgedrückt mit dem verdrehten Vor- und Nachnamen.
..wäre nur bei Kontakten richtig, die den gleichen Vor- und Nachnamen haben stimmt natürlich schon gar nicht... es wäre auch bei Millionen von Asiaten in der Speicherungsform oben im Beitrag vollkommen korrekt.
Aber bei dem geposteten Beispiel "Mustermann;Max" würde ich schon den Vornamen/Rufnamen "Max" in das Feld "givenName" speichern.
[/Êdit]
Bitte warten ..
Mitglied: bastla
29.05.2008 um 23:26 Uhr
Hallo hagbardceline!

Könnte, wie schon angenommen, am Komma liegen (siehe http://support.microsoft.com/?scid=kb%3Ben-us%3B883419&x=11&y=1 ... ) ...

Grüße
bastla
Bitte warten ..
Mitglied: hagbardceline
30.05.2008 um 09:30 Uhr
Danke Leute, lag am Komma (trotz SP2), habe jetz noch den Anzeigenamen mit Komma hinzugefügt. Hier das Fertige und funktionierende script. Jetz wüsst ich nur noch gern wie ich die Kontakte direkt in einen Verteiler einfüge?


Gruß, h.c.

EDIT: Habe noch
01.
objContact.MSExchHideFromAddressLists = TRUE
hinzugeügt, so werden die Kontakte nicht ins GAB übernommen.

EDIT2:Danke Biber, habe die Reihenfolge in der CSV nach vorname;nachname;email;beschreibung; geändert. Und die Felder Vo und Nachname im script vertauscht.

01.
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
02.
' Kontakt
03.
' Beschreibung
04.
'
05.
' Version: 1.1
06.
' Datum:   08.06.2005
07.
' Autor:   Jon-Claude Hick
08.
' Letzte Änderungen: 12.05.2006
09.
'
10.
' Jon-Claude Hick stellt dieses Skript ohne jede
11.
' Gewährleistung zur Verfügung.
12.
' Die Verwendung geschieht auf eigene Gefahr.
13.
'
14.
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
15.

16.
Option Explicit
17.
Dim objRootLDAP, objContainer, objContact, strOU, strdomainname
18.
Dim strContainer, strDNSDomain, FSO, file, User, line, strTargetAddress
19.
Dim strContactName, strEmail, strFirst, strLast, strMapirecip, strDesc
20.
Const ForReading = 1
21.
Const filename="G:\X-Sonstiges\Kontakte.csv"
22.

23.
on error resume next
24.

25.
' ------------------------------
26.
'please enter full LDAP path here
27.

28.
strOU = "Xerver/ou=Kontakttest,ou=MyBusiness,dc=X,dc=de"
29.
' ------------------------------
30.

31.
strMapirecip = "FALSE"
32.

33.
Set objRootLDAP = GetObject("LDAP://rootDSE")
34.
strdomainname = objRootLDAP.Get("DefaultNamingContext")
35.
Set objContainer = GetObject("LDAP://" & strOU)
36.

37.
set FSO=CreateObject("Scripting.Filesystemobject")
38.
Set File=FSO.OpenTextFile(filename, ForReading, false)
39.

40.
while not file.AtEndOfStream
41.
	line=file.Readline
42.
	User=Split(line,";")
43.
   	strFirst = User(0)
44.
   	strLast = User(1)
45.
   	strEmail = User(2)
46.
	strDesc = User(3)
47.
	strContactName = strLast & " " & strFirst
48.
	Set objContact = objContainer.Create("Contact",_
49.
   	"cn=" & strContactName)
50.
   	objContact.Put "Mail", strEmail
51.
   	objContact.Put "targetaddress", strEmail
52.
   	objContact.Put "givenName", strFirst
53.
   	objContact.Put "sn", strLast
54.
	objContact.Put "description", strDesc
55.
	objContact.Put "displayname", strLast & ", " & strFirst
56.
   	objContact.Put "mailnickname", strFirst & strLast
57.
   	objContact.Put "mapirecipient", strMapirecip
58.
	strTargetAddress = "SMTP:" & strEmail
59.
	objContact.Put "TargetAddress", strTargetAddress
60.
	objContact.Put "InternetEncoding", 1310720
61.
        objContact.MSExchHideFromAddressLists = TRUE
62.
	objContact.SetInfo
63.
Wend
64.
WScript.Quit
Bitte warten ..
Mitglied: hagbardceline
10.06.2008 um 16:10 Uhr
Ich komme einfach nicht dahinter wie ich einen Kontakt in eine Distribution List einfüge (diese ist in einer anderen/Standard OU)
Mehrere Versuche sind ins leere gelaufen, jemand einen Tipp? (Wie man die erste Zeile überspringt hab ich auch noch nicht rausgefunden :hmm: )

Hier das es eigentlich nur zum lesen gedacht aber ich frag mich woher die Variable member kommt..

http://windowsitpro.com/article/articleid/93884/how-can-i-use-a-script- ...

Und das verstehe ich nicht..

http://www.tech-geeks.org/geeklog/article.php?story=20040308171332896

gruß h.c.
Bitte warten ..
Mitglied: Biber
10.06.2008 um 16:56 Uhr
Moin hagbardceline,

vorab: im jetzigen Status der Forumssoftware werden wahrscheinlich nur die drei, die schon mal in diesem Beitrag gepostet haben, mitbekommen, dass Du eine neue Frage gestellt hast.
Mach lieber einen neuen Thread auf.

Zu Deiner Frage 1)
"member" ist in diesem Fall keine Variable, sondern ein Textparameter.
Damit gibst Du an, welches Detail-Info des Attributs "objGroup" Du haben willst.
Die Funktion GetEx() sollte immer für ein so genanntes Multivalued Attribute gerufen werden , also um z.B. ein Array abzuholen.
Dann kannst Du entweder den Index (0, 1, ..) bei mehrdimensionalen Objekten wie Resultsets oder den "Spaltennamen" mitgeben. Und eine "Spalte", eine Eigenschaft des Attributs "Group" ist "Member", eine andere ist "MemberOf".

zu 2) öhm... kannst Du die Frage etwas genauer formulieren?
Ist mir zu lang, um es auf Nachvollziehbarkeit zu prüfen.

Grüße
Biber
Bitte warten ..
Mitglied: hagbardceline
10.06.2008 um 18:04 Uhr
Jo danke für den Hinweis und die Tipps, ich mache morgen nochmal nen neuen Thread auf (aber ist das nicht etwas Spammig wenns jeder macht, sonne normale ansicht der neuesten Beiträge wäre doch Sinnvoller oder?)

Zu 1) Lese ich mir morgen durch, so grob hab ich es verstanden, vieleicht wirds mir morgen klare, ist schon spät..

Zu 2) Es geht mir darum:

01.
'//--------------------------
02.
'// Add to Group subroutine
03.
'//--------------------------
04.

05.
Sub Add2Group(Byval sDN)
06.

07.
Const ADS_PROPERTY_APPEND = 3
08.

09.
On Error Resume Next
10.

11.
'// Test if group is empty
12.
If IsEmpty(oGroup) Then
13.
Set oGroup = GetObject _
14.
("LDAP://cn=" & sGroup & ",ou=" & sOU1 & ",ou=" & sOU2 & ",ou=" & sOU3 & "," & sRoot)
15.
End If
16.

17.
'// Add user to group
18.
oGroup.PutEx ADS_PROPERTY_APPEND, _
19.
"member", Array(sDN)
20.
oGroup.SetInfo
21.
sDN = Nothing
22.

23.
'// Test if user is already member of group
24.
If err.number <> 0 Then
25.
msgbox "User " & sLogon & _
26.
" is already a member of " & sGroup, _
27.
,vbExclamation, "Add Bulk Users"
28.
Exit Sub
29.
End If 
Okay PutEx dürfe auch son Mutlivalue sein gell? Schau ich morgen noch mal..

Danke nochmal und Gruß,

h.c.
Bitte warten ..
Mitglied: Biber
10.06.2008 um 21:37 Uhr
Moin hagbardceline,

aber ist das nicht etwas Spammig wenns jeder macht,
sonne normale ansicht der neuesten Beiträge wäre doch Sinnvoller oder?
Hmmja, und wie es der Zufall will, habe ich genau diesen Wunsch am Sonntag auch noch mal im AFABS als Issue #537 eingetragen.
Aber als allererster hat es rony-x2 schon am Test-Tag der neuen Forumsversion am 23.5. angemerkt in diesem beliebten "Wartungsarbeiten heute abend"-Thread..

Na ja, und gegen spammige Beiträge gehe ich ja (manchmal relativ gerne) manuell vor. Wenn wir eine (Teil-)Frage hier beantworten können und ein Grüner Haken an einen Beitrag mit einem passenden Titel kommt, dann sehe ich es nicht als Spamm an.

Und was den geposteten Schnipsel betrifft... wenn Du jetzt weißt, dass es um Multivalue-Attribute geht, dann ist auch klar, dass dort eben nicht einfach ein Username als Inhalt des Attributes objgroup eingetragen werden darf, sondern in die (Teil-)Struktur "Member der Gruppe" eine Liste (=ein Array) bestehend aus einem Usernamen.

können wir aber auch morgen noch mal in Ruhe anschauen.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
CSV Import in Datenbank
Frage von newit1Batch & Shell2 Kommentare

Hallo Ich habe folgendes Problem: Ich lade mittels der unterstehenden Befehle eine CSV-Datei in eine Datenbank. Den Aufbau der ...

Datenbanken
Import CSV in MYSQL
gelöst Frage von schneerunzelDatenbanken3 Kommentare

Hallo zusammen, ich versuche gerade die Daten einer Vereinsverwaltung in eine neu zu überführen. Dabei tauchen einige Probleme auf. ...

Microsoft Office
Excel csv-Import Zeichensatz-Problem
gelöst Frage von thaefligerMicrosoft Office2 Kommentare

Hallo zusammen ich bekomme eine csv-Datei geliefert, in welcher die Daten mit irgend einem komischen Zeichensatz abgespeichert sind (kenne ...

Batch & Shell

Powershell Bulk Import CSV DHCPReservation

gelöst Frage von banane31Batch & Shell4 Kommentare

Hallo zusammen, ich verzweifele gerade an meinem neuen Windows Server 2016 DHCP Server und den Reservierungen. Im Netz habe ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 22 StundenInternet4 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 1 TagWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell22 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...

Debian
OpenSSH Login mit Public Key schlägt fehl, mit Passwort funktioniert
gelöst Frage von DKowalkeDebian19 Kommentare

Hallo zusammen, ich hatte hier schon nach einer Anleitung für einen SFTP Server mit Linux gefragt, habe dort auch ...

Windows Server
Client in die Domäne einbinden - Allgemeine Frage dazu
gelöst Frage von RalphTWindows Server19 Kommentare

Moin, ich habe 2 DCs in einer Hauptstelle und 2 DCs in einer Nebenstelle. Ich bringe in der Hauptstelle ...