xaero1982
Goto Top

Echange 2013 Shell - CSV Import von Kontakten

Moin Zusammen,

ich versuche nun schon gefühlte Stunden eine CSV Datei mit Kontaktadressen im Exchange 2013 zu importieren.

Ich habe es nun mit Kommaseparierten CSV-Dateien versucht, a la Anzeigename,Vorname,Nachname,Emailadresse oder mit Spaltenweisen CSV-Dateien.

Immer bekomme ich die selbe Fehlermeldung:

"Der Paramter "Name" kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von "Name": "Die Eigenschaft ist zu lang. die maximale Länge beträgt 64, die Länge des bereitgestellten Wers ist 145(Variabel)."

"
[PS] D:\Import>Import-Csv testcontact.csv | ForEach { New-MailContact -Name "$_,Anzeigename" -DisplayName "$_.Anzeigenam
e" -Firstname "$_.Vorname" -LastName "$_.Nachname" -ExternalEmailAddress "$_.EMail" -OrganizationalUnit "Domäne.Local/
OU/Kontakte" -Alias "$_,Lastname" }

Wenn ich den Namen weg lasse und einfach manuell eintrage, wozu mich die PS dann auffordert sagte er mir halt das der Firstname zu lang sei.

Letztlich hab ich es wie hier: http://www.oxfordsbsguy.com/2015/05/06/exchange-powershell-how-to-bulk- ...

Aber eben immer die gleiche Fehlermeldung.

Jemand noch eine Idee wie ich das importiert bekomme?

Danke und Grüße

Content-Key: 283174

Url: https://administrator.de/contentid/283174

Printed on: April 25, 2024 at 12:04 o'clock

Mitglied: 114757
114757 Sep 17, 2015 updated at 15:35:31 (UTC)
Goto Top
Moin,
"Der Paramter "Name" kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von "Name": "Die Eigenschaft ist zu lang. die maximale Länge beträgt 64, die Länge des bereitgestellten Wers ist 145(Variabel)."
steht doch klar was die Ursache ist, dein Alias/Name des Kontakts ist zu lang.
Und woher hast du das hier ?
-Alias "$_,Lastname"
Da ist erstens das Komma falsch, zweitens kann man innerhalb von Anführungszeichen keine Eigenschaften eines Objekts so abrufen sondern nur so "$($_.Lastname)" und drittens woher soll diese kommen ? Hast du in deiner CSV eine Spalte Lastname ? Du hast doch vorne die Spalte Nachname ??

Wenn ein Name zu lang ist kann man diesen auf 64 Zeichen begrenzen
-Name $_.Nachname[0..63]
Gruß jodel32
Member: Xaero1982
Xaero1982 Sep 17, 2015 updated at 15:38:10 (UTC)
Goto Top
Hi Jodel,

der Name ist natürlich nicht zu lang. Genau das ist ja das Problem.
Wenn ich den Namen manuell eingebe - so wie er in der CSV steht, dann geht's bis zur nächsten Fehlermeldung.

Ja, du hast Recht ... das , is falsch, aber so weit ist er nicht mal gekommen ;)

Also ich kann doch, wenn ich nicht irre einen Wert aus der CSV auch an mehreren Stellen verwenden oder? Ja es muss Nachname heißen ... hab ich nicht angepasst, aber wie gesagt bis zu diesem Punkt komme ich nicht mal...

Der Hase muss woanders begraben liegen...

Edit: Wenn ich die Anführungszeichen weg lasse kommt: "Der Eigenschaftswert ist ungültig. Dieser Wert darf keine führenden oder nachstehenden Leerzeichen enthalten."
Jetzt sag mir bitte nicht: Steht doch da ... ja, aber in der CSV sind keine Leerzeichen!!!

Grüße
Mitglied: 114757
114757 Sep 17, 2015 updated at 15:40:35 (UTC)
Goto Top
Also ich kann doch, wenn ich nicht irre einen Wert aus der CSV auch an mehreren Stellen verwenden oder?
Ja kannst du.

Das hier geht problemlos:
Import-csv 'C:\kontakte.csv' | %{New-MailContact -Name $_.Anzeigename -DisplayName $_.Anzeigename -FirstName $_.Vorname -LastName $_.Nachname  -ExternalEmailAddress $_.Email -OrganizationalUnit 'Domäne.Local/OU/Kontakte'}  
In diesem Beispiel gehe ich davon aus das der Anzeigename eindeutig ist.
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 15:40:55 (UTC)
Goto Top
Zitat von @114757:

Also ich kann doch, wenn ich nicht irre einen Wert aus der CSV auch an mehreren Stellen verwenden oder?
Ja kannst du.

Das hier geht problemlos:
> Import-csv 'C:\kontakte.csv' | %{New-MailContact -Name $_.Anzeigename -DisplayName $_.Anzeigename -FirstName $_.Vorname -LastName $_.Nachname  -ExternalEmailAddress $_.Email -OrganizationalUnit 'Domäne.Local/OU/Kontakte'}  
> 

Da bekomme ich: "Das Arguemtn kann nicht an den Parameter "Name" gebunden werden, da es sich um eine leere Zeichenfolge handelt."

Das ist natürlich käse ... ist nicht leer.
Mitglied: 114757
114757 Sep 17, 2015 updated at 15:47:57 (UTC)
Goto Top
Zitat von @Xaero1982:
Da bekomme ich: "Das Arguemtn kann nicht an den Parameter "Name" gebunden werden, da es sich um eine leere Zeichenfolge handelt."

Das ist natürlich käse ... ist nicht leer.
Das muss aber an deinen Daten liegen, wenn dort der Anzeigename leer ist kann das so natürlich mit meinem o.g. Schnippsel nicht laufen.

Poste doch mal bitte die ersten 5 Zeilen aus deiner CSV inkl Überschriften. Hier geht das ja problemlos...

Sind die Daten wirklich mit Komma getrennt und nicht mit Semikolon ?

Welches Format hat die CSV zufällig UTF-8 Zeichenkodierung?

Bitte nutze Codetags <code> Quellcode </code>.
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 15:50:48 (UTC)
Goto Top
Ehm, jodel, nichts für Ungut, aber ich werde hier keine Kontakte posten und alle anzupassen bringt nix - da kann ich dir auch nur einen Posten.

Wie gesagt habe ich es auf zwei Arten versucht, nein drei:

CSV 1:
Kopf: Anzeigename,Email,Vorname,Nachname
Inhalt: Max Mustermann,Max@Mustermann.de,Max,Mustermann

CSV 2:
Kopf: "Anzeigename","Email","Vorname","Nachname"
Inhalt: "Max Mustermann",Max@Mustermann.de,"Max","Mustermann"

=> bei beiden alles in einer Spalte

CSV 3: 4 Spalten
Kopf: Anzeigename | Email | Vorname | Nachname
Inhalt: Max Mustermann | Max@Mustermann.de | Max | Mustermann

Wo les ist die Codierung aus?
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 16:02:45 (UTC)
Goto Top
Nun gibt es neue Fehlermeldung:
Keine gültige SMTP Adresse. Der Domänenname darf keine Leerzeichen enthalten und benötigt ein Präfix und ein Suffix.

Eh ja max@mustermann.de sieht ganz so aus ... nur für die PS nicht ...
Mitglied: 114757
114757 Sep 17, 2015 updated at 16:46:12 (UTC)
Goto Top
Zur Info wenn man andere Delimiter als das Komma benutzt muss man diese bei Import-CSV mit dem Parameter -delimiter angeben, falls du das nicht schon getan hast.
Die Kodierung gibt man mit dem Parameter -Encoding UTF8 bei import-csv an.
Wo les ist die Codierung aus?
Öffne das Teil mit Notepad und geh auf Speichern unter dann steht es unten in der Auswahlbox.

Wurde die Shell schon mal neu gestartet oder die Kiste ? Am Code kann es definitiv nicht liegen, da muss entweder an der Kiste was nicht stimmen, die Shell hat sich weggehängt oder die Quelle hat einen weg. Ich erzähl hier ja nichts vom Pferd ..

ACHTUNG Dateien aus direkt gespeichert aus Excel haben manchmal Probleme in der Powershell, erstelle sie also mal manuell in Notepad, nur um das auszuschließen !
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 16:46:11 (UTC)
Goto Top
Wenn ich die mitm Notepad öffne sind da ; als Delimiter drin...

Codierung ist Ansi..

Die Shell wurde neu gestartet, ja.
Der Code ist denke ich auch in Ordnung. Ich versuchs noch mal mit der Angabe des delimiters....

Danke dir.
Mitglied: 114757
114757 Sep 17, 2015 updated at 16:52:13 (UTC)
Goto Top
Zitat von @Xaero1982:

Wenn ich die mitm Notepad öffne sind da ; als Delimiter drin...
Mit Semikolon muss zwingend der Delimiter angegeben werden !! Sonst bekommst du genau das Verhalten präsentiert was du gerade erlebst, dann sind mir die Fehlermeldungen alle klar face-smile ...

Die Amis(von der Anleitung) brauchen das nicht angeben weil bei denen das Komma per Default der Delimiter für eine CSV ist, im Gegensatz zu uns Alemannen bei denen das laut Ländereinstellungen das Semikolon ist.
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 16:58:50 (UTC)
Goto Top
Ok getan und der Fehler bleibt weiterhin...

Die Adresse '@{ANZEIGENAME=Max Mustermann; EMAIL=max.mustermann@mustermann.com; VORNAME=Max; NACHNAME=Mustermann}.EMail'  
ist ungültig: Die Adresse "@{ANZEIGENAME=Max Mustermann; EMAIL=max.mustermann@mustermann.com; VORNAME=Max;  
NACHNAME=Mustermann}.EMail" ist keine gültige SMTP-Adresse. Der Domänenname darf keine Leerzeichen enthalten und benötigt  
ein Präfix und ein Suffix. Beispiel: beispiel.com.
    + CategoryInfo          : NotSpecified: (:) [New-MailContact], DataValidationException
    + FullyQualifiedErrorId : F05DA954,Microsoft.Exchange.Management.RecipientTasks.NewMailContact
    + PSComputerName        : Exchg-mail.domäne.local
Mitglied: 114757
114757 Sep 17, 2015 at 17:01:33 (UTC)
Goto Top
Bitte erstell die Datei mal ohne Excel pur mit Notepad. Siehe Hinweis zu Excel-Files oben.
Mitglied: 114757
Solution 114757 Sep 17, 2015 updated at 17:21:47 (UTC)
Goto Top
Und schreibe den Code alternativ mal als Zweizeiler:
$csv = Import-csv 'C:\kontakte.csv' -Delimiter ";" -Encoding Default  
$csv | %{New-MailContact -Name $_.Anzeigename -DisplayName $_.Anzeigename -FirstName $_.Vorname -LastName $_.Nachname  -ExternalEmailAddress $_.Email -OrganizationalUnit 'Domäne.Local/OU/Kontakte'}  
Man ist das eine Geburt hier für so ne simple Sch ... face-wink

Guckst du auch hier:
AD New Object - Contact Powershell
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 17:14:41 (UTC)
Goto Top
Das mit der neuen Datei war auch meine Idee, die ich auch umgesetzt habe ... mit dem gleichen Ergebnis ;( Da sind keine Leerzeichen. Echt zum Mäuse melken.

Ich werde es jetzt noch mal komplett manuell neu machen und jeden Buchstaben abtippen face-smile
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 17:22:25 (UTC)
Goto Top
Nu hats geklappt mit dem Zweizeiler und der csv die ich ursprünglich erstellt habe.

Ich danke dir vielmals für deine Mühen!!!

Danke!

Grüße
Mitglied: 114757
114757 Sep 17, 2015 updated at 17:38:03 (UTC)
Goto Top
Zitat von @Xaero1982:

Nu hats geklappt mit dem Zweizeiler und der csv die ich ursprünglich erstellt habe.
Das scheint echt ein Bug zu sein, denn das habe ich schon mal erlebt, bei den meisten läuft der Einzeiler, aber vereinzelt nicht, hab ich noch nicht rausgefunden woran das liegt, vermutlich kleine PS oder .NET Versionsunterschiede, keine Ahnung ... egal Hauptsache das es jetzt bei dir läuft.

Du kannst es auch mal mit einem Klammernpaar rund um import-csv bei der Nutzung des Einzeilers probieren das hilft meistens auch in diesem Fall.

Gruß und schönen Abend face-smile
Member: Xaero1982
Xaero1982 Sep 17, 2015 at 18:27:45 (UTC)
Goto Top
Danke, ich werds mal versuchen ... muss gleich noch mal aufm anderen Server den gleichen Spaß machen ...

Grüße und dito!