Jump to content

CSV Import bei Variable ohne Wert - Error


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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}}
Link zu diesem Kommentar

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

 

Link zu diesem Kommentar

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

 

Link zu diesem Kommentar

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 von speer
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...