ike1971 0 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Hallo zusammen, ich möchte Kontakte die mir als CSV vorliegen ins AD importieren. (Telefonbuch, Email Adressen) Zuerst habe ich es per "new-mailcontact" probiert, aber das war eine Sackgasse, da bei 1/3 einfach keine Email Adresse hinterlegt ist. Also hab ich es mit "new-ADobject" umgesetzt, was bei vollständigen Datensätzen auch einwandfrei funktioniert. Fehlt allerdings ein Feld, bricht er den Import ab, anstatt das Feld einfach leer zu lassen. Gibts da eine Möglichkeit bei fehlenden Daten einfach nichts zu machen? (Oder ist meine Vorgehensweise bescheiden und ihr habt eine bessere Idee? Bin für alles offen ) So sieht die CSV aus.: ID;Firma;Email;Telefon;Fax;Vorname;Nachname;Anrede Max Mueller(Firma);mueller@firma.de;555123;555124;Max;Mueller;Herr Hotel Rose;Hotel Rose;;555322;555323;;; Stahlbau Held;Stahlbau Held;info@held.de;555282;;;Held;Herr Danke Import-CSV C:\kontakte.csv -Delimiter ";" | ForEach-Object {New-ADObject -Name $_.ID -Type "contact" -Path "OU=Kontakte,DC=dom,DC=local" -DisplayName $_.ID -OtherAttributes @{'postalCode' = $_.PLZ; 'company' = $_.Firma; 'department' = $_.Funktion; 'mail' = $_.EMail; 'wWWHomePage' = $_.Internetadresse; 'telephoneNumber' = $_.Telefon; 'homePhone' = $_.TelefonPrivat; 'facsimileTelephoneNumber' = $_.Fax; 'mobile' = $_.Mobil; 'title' = $_.Anrede; 'givenName' = $_.Vorname; 'sn' = $_.Nachname; 'streetAddress' = $_.Strasse; 'l' = $_.Ort;'co' = $_.Land}} Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Moin, in solchen Fällen arbeite ich gern direkt mit der Excel-Datei und erzeuge mir dort Batch-Kommandos. Dann musst du nicht mit Schleifen hantieren, sondern kannst bei Bedarf die einzelnen Kommandos noch korrigieren. [Excel: Admins unbekannter Liebling | faq-o-matic.net]https://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/ In deinem Fall könntest du aber auch einen csvde-Import machen. Für Kontaktobjekte geht das gut. Du müsstest dann noch zwei Spalten für den DN und die objectClass hinzufügen. [csvde zum Import und Export von AD-Daten nutzen | faq-o-matic.net]https://www.faq-o-matic.net/2003/10/25/csvde-zum-import-und-export-von-ad-daten-nutzen/ csvde hat mit leeren Feldern i.d.R. kein Problem. Gruß, Nils Zitieren Link zu diesem Kommentar
NorbertFe 2.061 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Ist halt die Frage, was man denn mit diesen Kontakten im AD erreichen will. Wenn die irgendwie im Adressbuch auftauchen sollen, ist Exchange Powershell und "new-Mailcontact" oder enable-Mailcontact sowieso notwendig, weil Exchange sonst nix anzeigt. Wenn das für andere Zwecke sein soll tuts evtl. auch ein csvde. Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Moin, joah, das ist korrekt. Wenn wir dann aber schon dabei sind, sollte man auch prüfen, ob solche Kontakte im AD wirklich gut aufgehoben sind. Das wirft Fragen nach Pflege und Berechtigungen auf. Sowas ist in einem separaten System meist viel besser aufgehoben. Wieder mal eine Frage der Anforderungen ... Um nicht lange mit dem Umstand herumzuhangeln, dass die PowerShell-Schleife bei leeren Feldern NULL-Daten übergibt und daran scheitert, wäre für den Erstimport csvde vielleicht einfacher. Wenn dann die Objekte bestehen, kann man sie nachträglich Mail-enablen, falls gewünscht. (Da laut TO mehrere der Kontakte keine Mailadresse haben, wäre die Anlage als Exchange-Mailkontakt allerdings ohnehin sinnlos bzw. eben nicht möglich.) Gruß, Nils Zitieren Link zu diesem Kommentar
NorbertFe 2.061 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Ja, müßte aber eigentlich auch mit New-adobject funktionieren. :) https://docs.microsoft.com/en-us/powershell/module/activedirectory/new-adobject?view=winserver2012-ps Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Moin, würde es auch. Man müsste "nur" die Logik der Schleife beim CSV-Import ändern, damit die leeren Werte nicht zum Abbruch führen. Kriegt man hin, aber für Nicht-PowerShell-Profis sind bei dem gewünschten Ergebnis manchmal andere Wege leichter zu beschreiten. Gruß, Nils Zitieren Link zu diesem Kommentar
NorbertFe 2.061 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 Man könnte natürlich auch einfach die CSV so anpassen, dass erstmal überall eine "fake email" drin steht. ;) Je nachdem wo die Prioritäten liegen. Das wäre dann ein ähnlich schneller Workaround wie deine Excel Option. :) Zitieren Link zu diesem Kommentar
speer 19 Geschrieben 21. November 2018 Melden Teilen Geschrieben 21. November 2018 (bearbeitet) Hi, solange die Daten nicht richtig aufbereitet sind, murkst man mit seinem Skript nur rum. An Deiner Stelle würde ich mir ein eigenen PSObject bauen und dieses entsprechend prüfen. Als Beispiel: $Daten = @() Import-CSV C:\kontakte.csv -Delimiter ";" | ForEach-Object { $array = New-Object PSCustomObject $array | Add-Member -type NoteProperty -Name Vorname -value $_.Vorname $array | Add-Member -type NoteProperty -Name Nachname -value $_.Nachname $array | Add-Member -type NoteProperty -Name Anrede -value $_.Anrede $Daten+=$array } # Ende foreach $Daten[X] Jetzt kannst du schön durch das Array ($Daten) durchiterieren. Ich bin kein Programmierer aber vom Ansatz hätte ich es so zumindest gemacht :) Obiger Code ist nur als Beispiel gedacht! Gruß Speer bearbeitet 21. November 2018 von speer Zitieren Link zu diesem Kommentar
ike1971 0 Geschrieben 29. November 2018 Autor Melden Teilen Geschrieben 29. November 2018 Danke euch allen, ich mache jetzt bevor ich die Attribute setze einfach eine Überprüfung ob die Variable vorhanden ist. Dauert zwar sehr lange aber funktioniert :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.