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

Frage Microsoft Windows Server

Mitglied: hagbardceline

hagbardceline (Level 1) - Jetzt verbinden

29.05.2008, aktualisiert 10.06.2008, 5655 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
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 ...

VB for Applications
Import von csv Dateien
Frage von KurinoKiVB for Applications6 Kommentare

Hallo, ich verwende bereits folgendes Skript für den Import meiner csv Dateien. Bei dem Import sollten die Spalten A, ...

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

Datenbanken
MySQL Csv Datei Import
gelöst Frage von bytetixDatenbanken2 Kommentare

Hi zusammen, also vorab, ich bin eig. kein SQL progger, versuche mich aber gerade an einer eigentlich kleinen Sache. ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 21 StundenBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 23 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows 10
Windows 10 GPO Powershell Skript Registry bearbeiten
Frage von potshockWindows 1010 Kommentare

Hi Admins, Gegeben ist ein Windows 2012 R2 Server an welchen ich Gpos für Windows 10 Clients bereitstelle. U.a. ...

Microsoft
Erfahrungen mit Webcam over RDP gesucht
Frage von DerWoWussteMicrosoft10 Kommentare

Moin Kollegen. Bekanntlich kann man Webcams nur mit Drittanbietersoftware in RDP reinschleifen. Was nutzt Ihr dazu? Wie stabil funktioniert ...