Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Maraun

Massenimport von Kontakte in Exchange 2010

Empfohlene Beiträge

Hi zusammen,

 

ich habe ein fertiges Excelfile + Skript für den Massenimport (+5000 Kontakte) für unser AD/Exchange, jedoch bekomme ich immer folgenden Fehler:

 

A positional parameter cannot be found that accepts argument "$null".

 

Import-Csv “d:\xyz\xyz.csv” | ForEach {New-MailContact -Firstname $_.FirstName -LastName $_.LastName -DisplayName $_.DisplayName -WindowsEmailAddress $_.WindowsEmailAddress -Company $_.Company -OrganizationalUnit “OU”}

So sieht mein Excelfile aus:
image.png.864c26426d718ff849cde49aff125025.png

 

Die OU ist der DN aus dem Attribute Editor kopiert.

Alle Felder sind ausgefüllt.
Kann mir jemand vielleicht helfen, da ich den Fehler einfach nicht finde.

 

Viele Grüße

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Sind externe Kontake von unserer neuen Mutterfirma.

Also der Vorgang als solcher ist abgesichert und erfordert.

 

Die Quelldatei, die ich bekommen habe, hat folgende Felder:

Fistname, Lastname, Displayname, ExternalEmailAddress, Company

 

Mein Skript sieht jetzt so aus:

Import-Csv “xyz.txt” | ForEach {New-MailContact -DisplayName $_.Name -Firstname $_.FirstName -LastName $_.LastName -ExternalEmailAddress $_.ExternalEmailAddress -Company $_.Company -OrganizationalUnit “DN der OU”}

 

Die Fehlermeldung des Exchange 2010 SP3:

Cannot bind argument to parameter "ExternalEmailAddress" because it is null

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Evtl. musst du das ganze splitten, je nachdem welche Daten gesetzt sind.

Ungeprüft:

$contact = New-MailContact -DisplayName $_.Name
if($_.FirstName){Set-MailContact $contact -FirstName $_.Firstname }
...

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hmm verstehe ich nicht ganz.

Meine CSV hat mittlerweile nur 3 Spalten (nicht ausblendet, alles überflüssige gelöscht):

Displayname WindowsEmailAddress Company

 

Mein Script:

Import-Csv “xyz.txt” | ForEach {New-MailContact -DisplayName $_.Name -WindowsEmailAddress $_.ExternalEmailAddress -OrganizationalUnit “OU”}

Die Fehlermeldung:


A positional parameter cannot be found that accepts argument '$null'.
    + CategoryInfo          : InvalidArgument: (:) [New-MailContact], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,New-MailContact

Der hat einfach ein Problem mit der Mailadresse.
Aber ein manuelles Befehl, also nicht aus der CSV heraus, geht.
New-MailContact -Name "xyz" -externalEmailAddress xyz@xyz.com -OrganizationalUnit “OU” wird erfolgreich erstellt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hi,

 

bei dir geht es laufend durcheinander, was den Aufbau deiner CSV und des Befehls betrifft. Nur die Bezeichnungen (Felder) der CSV können im Befehl verwendet werden und keine anderen... Also bring Ordnung rein.

 

Beispiel:

Du kannst nicht $_.ExternalEmailAddress verwenden, wenn in der CSV das Feld "WindowsEmailAddress" heißt.

 

Falls deine CSV wie zuletzt von dir beschrieben aussieht... also folgende kommagetrennte Angaben:

 

Displayname,WindowsEmailAddress,Company

 

Dann kann dein Befehl auch nur so aussehen:

 

Import-Csv .\test.csv | % { New-MailContact -Name $_.DisplayName -ExternalEmailAddress $_.WindowsEmailAddress -OrganizationalUnit "domain.local/OU/..." -whatif }

 

Hinweise:

Die Parameter -Name sowie -ExternalEmailAddress sind erforderlich (mandatory), alle anderen optional.

Name wird automatisch auch Displayname, wenn Displayname nicht extra angegeben wird.

Der Parameter "-whatif" dient zum Testen, damit man nicht gleich live Tausende evtl. falscher Objekte erzeugt). Nach Test/Prüfung dann einfach weglassen.

Ach ja, -Company kann man mit New-MailContact nicht setzen, sondern nur mit Set-Contact.

 

Nachtrag: Aus alter Faulheit habe ich % für ForEach genommen.

bearbeitet von massaraksch

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Vielen Dank für die Hilfe und Sorry für die Verwirrung.

Letzlich hab ich es chaotisch beschrieben, aber richtig gemacht und auch hingekriegt. Mein Problem war die kommagetrennte CSV, die falsch erstellt hatte.

Die CSv sah schon richtig aus.

Allerdings habe ich den Import jetzt ohne Firstname Lastname gemacht.

Hat jemand eventuell einen Tipp, wie ich nachträglich aus der CSV in die bestehenden Mail-Kontakte die Vor- und Nachnamen importieren kann?
Get-mailcontact / Set-mailcontact?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hi,

 

Set-MailContact kann leider kein Firstname/Lastname/Company setzen.

Hint:

man set-mailcontact -det

zeigt dir den möglichen Parametersatz an.

 

Vor/Nachname usw. geht nur mit set-contact, z.B. so:

Import-Csv .\test.csv | % { Set-Contact $_.WindowsEmailAddress -FirstName $_.FirstName -LastName $_.LastName -WhatIf }

PS: Ich gehe von der CSV-Beschreibung in deinem allerersten Posting aus...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×