Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 5615 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Powershell Workflow, CSV Stapelverarbeitung Problem (6)

Frage von Rippchen zum Thema Batch & Shell ...

VB for Applications
gelöst Excel VBA .csv Import in Tabelle x, ab Spalte y

Frage von drimrim zum Thema VB for Applications ...

VB for Applications
gelöst Wie mittels VBA beim Import von CSV dateien das Format aller Zellen auf "Zahl" ändern? (2)

Frage von Glibber4 zum Thema VB for Applications ...

Windows Server
Powershell Import-CSV Komma ausschreiben plus New-ADUser Pipen (3)

Frage von Freakazoid89 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...