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

gelöst VBS - Kontakte im ADS anlegen

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

17.05.2007, aktualisiert 28.08.2007, 11100 Aufrufe, 13 Kommentare

Guten Mittag zusammen,

ich habe heute eine Textdatei bekommen, in der lauter Kontakte drin stehen die ich im Exchange - Globales Adressbuch veröffentlicht werden müssen. Bei den Kontaken handelt es sich um externe Adressen. Nun könnte ich per Hand anlegen, jedoch sind es ca. 200 Stück. Praktikannten haben wir leider im Moment keine da.

Wie kann ich nun per VBS Script einen Kontakt anlegen, die E-Mailadresse als Hauptadresse markieren und Vor- & Nachnamen angeben. In welche OU die Kontakte erstellt werden sollen, soll vorher abgefragt werden.

Aufbau einer Textdatei ist sicher auch von nöten:
01.
müller tab christoph tab ch.mueller@seinedomain.de
02.
....
System: Windows 2003 EE + Exchange 2003 EE => ServicePack 2
Im vorraus vielen Dank & und einen schönen Männertag!
Update:
17.05.2007 12:09 Uhr
Also jetzt habe ich nach Stunden doch noch ein kl. VBScript gefunden:
01.
Set ou = GetObject("LDAP://ou=Benutzer,dc=firma,dc=de")
02.

03.
Set mailcontact = ou.Create("contact", "cn=Mail-Contact")
04.
mailContact.mailNickName = "pfoeckeler-extern"
05.
mailContact.displayName = "Föckeler, Philipp (Extern)"
06.
mailContact.targetAddress = "philipp.foeckeler@cerrotorre.de"
07.
mailcontact.SetInfo
Der Kontakt wird erzeugt. Jedoch wird nicht die angegebene E-Mailadresse genommen. Es wurde ein Exchange - Postfach angelegt mit der Exchange-Domäne.


Gruß
Dani
Mitglied: bastla
17.05.2007 um 12:15 Uhr
Hallo Dani!

Vielleicht kannst Du damit etwas anfangen:
http://www.msxfaq.net/code/makecontact.htm
Create a Contact in Active Directory

Grüße
bastla

[Edit] @Dani: Sorry, hatte Dein Edit noch nicht gesehen ... [/Edit]
Bitte warten ..
Mitglied: Dani
17.05.2007 um 12:27 Uhr
Hallo bastla!

Vielen Dank für die Links. Den 1. Link kenne ich schon, hat mir aber nichts gebracht. Den Inhalt vom 2. Link ist gleich wie mein Update. Dank dir trotzdemm...noch ne Idee??
Hier habe ich ein Link gefunden, aber der Code ist einfach zu hoch für mich:
http://www.msexchange.org/articles/Migrating-Contacts-Distribution-List ...


Gruß
Dani
Bitte warten ..
Mitglied: bastla
17.05.2007 um 12:29 Uhr
Nachtrag:

Auffällig ist, dass in dem Beispiel bei dem ersten von mir angeführten Link ein Objekt " ;user", nicht " ;contact", erstellt wird. Allerdings habe ich keine Ahnung, ob das hier weiterhilft ...

Grüße
bastla
Bitte warten ..
Mitglied: Dani
17.05.2007 um 13:42 Uhr
Hi!
Ne....leider nicht. Also ich hab's fast fertig. Ich brauche legendlich noch das Kommando, um unter "E-Mail Adressen" der Kontakteigenschaft die E-Mailadresse hinzuzufügen und als "Hauptadresse zu setzen.

Wie stelle ich es am Besten mit dem Auslesen der einzelnen Daten?? Datei öffen ist kein Thema, aber das auftrennen nach dem TAB macht mir Probleme. Funktioniert das auch mit der split Funktion?!


Gruß
Dani
Bitte warten ..
Mitglied: bastla
17.05.2007 um 13:55 Uhr
Hallo Dani!

Ohne verfügbaren Exchange-Server bin ich leider Trockenschwimmer und damit keine wirkliche Hilfe ...

Was das Aufteilen angeht:
01.
C = Split(Zeile, vbTab) 
sollte gehen ...

Grüße
bastla
Bitte warten ..
Mitglied: Dani
17.05.2007 um 14:03 Uhr
Hallo bastla!
Danke...aber eben hat sich etwas neues ergeben. Und zwar wurde aus der Textdatei eine Exceltabelle. Sprich ich müsste nur noch die Zellen einer jedener Zeile auslesen. Jedoch habe ich das mit VBScript noch nie gemacht.

Aufbau Exceltabelle:
vorname |nachname | e-mailadresse | beschreibung


Gruß & ein fettes Danke
Dani
Bitte warten ..
Mitglied: bastla
17.05.2007 um 14:23 Uhr
Hallo Dani!

Die unsportliche Variante (vor allem, wenn es ein einmaliger Vorgang sein sollte) wäre ein Speichern der Excel-Datei als ".csv", aber an einem Feiertag darf's schon auch einmal ein Script sein:
01.
Set XL = WScript.CreateObject("Excel.Application")
02.
XL.Workbooks.Open "D:\Kontaktdaten.xls"
03.
i = 1 'Zeilennummer der ersten Datenzeile
04.
Do While XL.Worksheets(1).Cells(i,1).Value <> ""
05.
	Vorname = XL.Worksheets(1).Cells(i,1).Value
06.
	Zuname = XL.Worksheets(1).Cells(i,2).Value
07.
	email = XL.Worksheets(1).Cells(i,3).Value
08.
	Beschr = XL.Worksheets(1).Cells(i,4).Value
09.

10.
	WScript.Echo Vorname & ", " & Zuname & ", " & email & ", " & Beschr
11.

12.
	i = i + 1
13.
Loop
14.
XL.ActiveWorkbook.Saved = True
15.
XL.Application.Quit
Die "WScript.Echo"-Zeile dient natürlich nur der Demonstration - im Prinzip kannst Du dort gleich das Erstellen des Kontaktes durchführen.

Grüße
bastla

[Edit] Natürlich würde es mit einem "With XL.Worksheets(1)"-Block schöner aussehen, aber man muss es ja nicht gleich übertreiben ... [/Edit]
Bitte warten ..
Mitglied: Dani
17.05.2007 um 14:33 Uhr
Dank dir nochmal! Ja ich weiß, aber es kommt von oben runter. Vielleicht kennst du das Spiel.
So einfach kann es manchmal sein....Funktioniert so einwandfrei. Wenn das Script fertig ist, poste ich es natürlich gerne!


Gruß
Dani
Bitte warten ..
Mitglied: bastla
17.05.2007 um 14:44 Uhr
Hallo Dani!

Noch eine Idee zum Eintragen der Mailadresse (aus dem etwas längeren Code bei http://www.msexchange.org/articles/Migrating-Contacts-Distribution-List ... abgeleitet):
Anstelle der Zeile mailContact.targetAddress = "philipp.foeckeler@cerrotorre.de" Deines Beispieles oben könntest Du noch
01.
Set objRecip = mailContact
02.
objRecip.MailEnable "SMTP:" & "philipp.foeckeler@cerrotorre.de"
versuchen.

Grüße
bastla
Bitte warten ..
Mitglied: Dani
17.05.2007 um 15:13 Uhr
So,
also bastla das war ein Volltreffer! Einfach genial von dir...Ich habe das Script auch schon durchsucht, aber nichts gefunden. So, jetzt hab ich auch Feierabend... Also Danke nochmal & einen schönen Vater-Tag (Männertag).
Das Script folgt Heute oder Morgen (versprochen)!! *gg*


Gruß
Dani
Bitte warten ..
Mitglied: Dani
17.05.2007 um 15:48 Uhr
Jetzt habe ich noch eine kl. Zusatzaufgabe: Wenn nun ein Kontakt schon exstiert, bricht das Script automatisch ab und zeigt mir eine Meldung. Wie kann ich das am Besten realisieren, dass er dann den Datensatz überspringt und den nächsten macht?


Gruß
Dani
Bitte warten ..
Mitglied: bastla
17.05.2007 um 16:05 Uhr
Hallo Dani!

Könnte so gehen: Nach dem Einlesen der Zeile aus Excel (und nach dem Set ou=...)
01.
emailExists = False
02.
For Each adcontact In ou
03.
	If LCase(CStr(adcontact.mail)) = LCase(CStr(email)) Then
04.
		emailExists = True
05.
		Exit For
06.
	End If
07.
Next
08.
If Not emailExists Then
09.
	'anlegen: Set mailcontact = ou.Create(...
10.
	
11.
End If
Grüße
bastla
Bitte warten ..
Mitglied: Dani
17.05.2007 um 17:22 Uhr
Hi bastla!
So, jetzt klappts ohne Probleme! Vielen Dank....Wie versprochen, hier die Version 0.4:
01.
'Allgemeine Informationen / Hinweise / ChangeLog
02.
'##########################################################################
03.
'Autor:	Dani
04.
'Aufagbe:	Aus einer Exceltabelle im Exchange externe Kontakt erstellen
05.
'
06.
'Version:
07.
'0.1 - Namensgebung einheitlich dargestellt
08.
'0.2 - Dialogbox zur Abfrage der Exceltabelle eingebaut
09.
'0.3 - Überprüft, ob Kontakt schon vorhanden ist
10.
'0.4 - In der Abfrage, ob die E-Mailadresse schon AD vorhanden ist, war
11.
'      die Abfrage falsch.
12.
'
13.
'
14.
'Variablen
15.
'##########################################################################
16.
Dim objobjExcel, objOpenDialog, objOU, objContact, objRecip
17.
Dim strVorname, strNachname, strEmail, strDesc
18.
'
19.
'
20.
' Dialogbox - Auswahl der Exceltabelle, die eingelesen werden soll
21.
'##########################################################################
22.
do
23.
Set objOpenDialog = CreateObject("SAFRCFileDlg.FileOpen")
24.
intReturn = objOpenDialog.OpenFileOpenDlg
25.
'
26.
If intReturn Then
27.
'
28.
Else
29.
WScript.Echo "Script wird beendet!"
30.
WScript.Quit
31.
End If
32.
Loop While objOpenDialog.FileName = "" 
33.
'
34.
'
35.
'Die entsprechende Datei wird geöffent
36.
'##########################################################################
37.
Set objExcel = WScript.CreateObject("Excel.Application")
38.
objExcel.Workbooks.Open objOpenDialog.FileName
39.
'
40.
'Zeilennummer der ersten Datenzeile
41.
i = 2 
42.
Do While objExcel.Worksheets(1).Cells(i,3).Value <> ""
43.
strVorname 	= objExcel.Worksheets(1).Cells(i,1).Value
44.
strNachname = objExcel.Worksheets(1).Cells(i,2).Value
45.
strEmail 	= objExcel.Worksheets(1).Cells(i,3).Value
46.
strDesc 	= objExcel.Worksheets(1).Cells(i,4).Value
47.
'	
48.
'	
49.
' Organisationseinheit, in der ide Kontake erzeugt werden sollen
50.
Set objOu = GetObject("LDAP://ou=Kontakte,dc=familie-wydler,dc=local")
51.
	
52.

53.
'Überprüfen, ob eine Kontakt schon vorhanden ist und setzt dem entsprechend die Variable
54.
' True - E-Mailadresse existiert bereits
55.
' False - E-Mailadresse nicht vorhanden
56.
emailExists = False
57.
For Each adcontact In objOu
58.
If LCase(CStr(adcontact.targetAddress)) = LCase(CStr("SMTP:"& strEmail)) Then
59.
emailExists = True
60.
Exit For
61.
End If
62.
Next
63.
'
64.
'Erzeugt die einzelnen Kontakte
65.
If Not emailExists Then
66.
'	
67.
'Erzeugt die einzelnen Kontakte
68.
Set objContact = objOu.Create("contact", "cn="& strVorname &" "& strNachname)	
69.
objContact.mailNickName = strVorname &" "& strNachname
70.
objContact.displayName = strVorname &" "& strNachname
71.
objContact.targetAddress = strEmail
72.
objContact.givenName = strVorname 
73.
objContact.sn = strNachname 
74.
'
75.
'Setzt nur die Beschreibung, wenn das Excelfeld nicht leer ist
76.
If strDesc <> "" Then
77.
objContact.description= strDesc
78.
End If
79.
'	
80.
'Hinterlegt im Reiter "E-Mail Adressen" der Benutzereigenschaften die E-Mailadresse
81.
Set objRecip = objContact
82.
objRecip.MailEnable "SMTP:" & strEmail
83.
'
84.
objContact.SetInfo
85.
Else
86.
WScript.echo "Doppelter Kontakt - "& strVorname &", "& strNachname &"!"
87.
End If
88.
'	
89.
'Nächste Excelzeile
90.
i = i + 1
91.
Loop
92.
'
93.
'Setzt das "gespeichert" - Flag. Somit entfällt die Abfrage beim Beenden
94.
objExcel.ActiveWorkbook.Saved = True
95.
'
96.
'Exceltabelle schließen / beenden
97.
objExcel.Application.Quit
98.
'
99.
'
100.
'Script beenden
101.
'##########################################################################
102.
WScript.Echo "Kontakte erfolgreich angelegt!"
103.
WScript.Quit
Bei Fehler bitte ich euch, sag mir Bescheid! Danke...


Gruß
Dani
Bitte warten ..
Ähnliche Inhalte
Microsoft

Microsoft Kontakt für Produktaktivierung

Frage von certifiedit.netMicrosoft4 Kommentare

Guten Abend, kann jemand auf die schnelle eine funktionierende Microsoft Telefonnummer bzw eine reagierende Emailadresse zur (re-)Aktivierung einer Office ...

Notebook & Zubehör

LAN Buchse, ein Kontakt fehlt?

gelöst Frage von McLionNotebook & Zubehör10 Kommentare

Hallo, es geht um das Samsung NP530 Notebook. Ein Kollege von mir hat das Notebook gepackt, als das LAN-Kabel ...

Outlook & Mail

Outlook 2013 Mime pro Kontakt

gelöst Frage von escape123Outlook & Mail1 Kommentar

Hallo, ist es in Outlook möglich das man die Auswahl für die Verschlüsselung/Signierung pro Kontakt hinterlegen kann oder geht ...

Outlook & Mail

Outlook Kontakt speichern keine Berechtigung

gelöst Frage von xbast1xOutlook & Mail2 Kommentare

Hallo zusammen, ein MA hat das Problem, dass er einen Kontakt, welcher als Anhang an ihn gesendet wurde abspeichern ...

Neue Wissensbeiträge
Linux Desktop

Warum Linux in einer vernetzten Welt einfach keinen Komfort bietet!

Tipp von Snowbird vor 1 StundeLinux Desktop1 Kommentar

Ein interessanter Einblick warum Linux nichts für Geräteübergreifende Arbeit ist :)

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von Lochkartenstanzer vor 13 StundenHumor (lol)11 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...

Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 16 StundenWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Viren und Trojaner

Staatstrojaner soll auch per Einbruch installiert werden können

Information von transocean vor 2 TagenViren und Trojaner4 Kommentare

Moin, Bundesinnenminister Horst Seehofer will dem Verfassungsschutz Wohnungseinbrüche erlauben, um den geplanten Staatstrojaner zu installieren. Gruß Uwe

Heiß diskutierte Inhalte
Hyper-V
Bei Neuaufbau auf Core-Server setzen?
gelöst Frage von dertowaHyper-V32 Kommentare

Hallo zusammen, ich habe vor einigen Monaten die Verantwortung für eine EDV-Landschaft übernommen die seit Jahren von einem Dienstleister ...

Router & Routing
VPN Verbindung zur Fritzbox über Speedport
gelöst Frage von SchwabenlandRouter & Routing13 Kommentare

Hallo! Ich bin gerade im Urlaub an der Nordsee :-) In unserem Ferienhaus haben wir WLAN, das durch einen ...

Netzwerkmanagement
Zentrales Switch-Management
Frage von joergNetzwerkmanagement11 Kommentare

Hallo zusammen, ich bin auf der Suche nach einem Management für Switche. Wir haben eine heterogene Struktur und jede ...

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von LochkartenstanzerHumor (lol)11 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...