none
CSV Datei auslesen E-Mail Adresse hinzufügen RRS feed

  • Frage

  • Hallo zusammen,

    ich beschäftige mich seit neuem mit der Powershell und möchte folgendes umsetzen:

    In einer CSV Datei habe ich folgendes ausgelesen:

    "DisplayName", "PrimäreSmtpAddress", nun möchte ich gerne die SMTP Adresse den Benutzern als weitere SMTP Adresse zur Verfügung stellen. Mein Ansatz sieht folgendermaßen aus:

    import-csv C:\powershell\test.csv |  forEach {Set-Mailbox $_.Displayname -EMailAddresses $_.NewAddress

    Das funktioniert auch soweit, nur leider werden dadurch alle bestehenden E-Mail Adresse gelöscht und die aus der csv als Primäre Adresse eingetragen. Das sollte natürlich nicht sein. Mit Hilfe von google und Co bin ich nun auf folgendes hier aus dem Forum gestoßen:

    Mit $_.proxyAddresses +="SMTP"+$_.newaddress fügt man einen E-Mail Adresse hinzu ohne die bestehende zu löschen.

    Leider funktioniert: forEach {Set-Mailbox $_.Displayname -EMailAddresses $c.proxyaddresses+="SMTP:"+$_.newadress} nicht.

    Wo habe ich hier ein fehler drin? Vielen Dank schon mal für die Hilfe.

    Freitag, 26. Oktober 2012 08:31

Antworten

  • Danke für all die Denkanstöße, habe es nun auch gelöst. Hier meine Lösung:

    $mail | ForEach {Set-Mailbox $_.name -EMailAddresses @{Add="X500:"+$_.mail}}

    Montag, 29. Oktober 2012 10:26

Alle Antworten

  • Auf den ersten Blick hast du zumindest schon mal einen Vertipper bei: "$c.proxyaddresses".  Das sollte $_.proxyaddresses heissen.

    Grundsätzlich ist es übrigens immer eine  gute Idee Fehlermeldungen zu posten.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".



    Freitag, 26. Oktober 2012 10:19
    Moderator
  • Vielen Dank für den Hinweis. Habe ich korrigiert, hier die Fehlermeldung:

    $Contact | forEach {Set-Mailbox $_.Displayname -EMailAddresses $_.proxyaddresses+="SMTP:"+$_.ne
    waddress}
    A positional parameter cannot be found that accepts argument '+=SMTP:+@{DisplayName=Test Test; PrimarySmtpAddress=conta
    ct.test@Domain.de}.newaddress'.
        + CategoryInfo          : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Set-Mailbox
    
    A positional parameter cannot be found that accepts argument '+=SMTP:+@{DisplayName=Netmail Archive; PrimarySmtpAddress
    =contact.netmail@Domain.de}.newaddress'.
        + CategoryInfo          : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
        + FullyQualifiedErrorId : PositionalParameterNotFound,Set-Mailbox

    Freitag, 26. Oktober 2012 12:00
  • Schau mal hier, so sollte es gehen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Freitag, 26. Oktober 2012 12:13
    Moderator
  • Vielen Dank für die Denkanstöße, leider komme ich nicht weiter. Ich
    habe mir den Link von Denniver angeschaut und mal genau an die Anleitung
    gehalten, leider funktioniert das Skript mit Exchange 2010 irgendwie
    nicht. Was mache ich falsch?

    Meine CSV sieht folgendermaßen aus:

    name;mail

    test test;X500:test@domain.de

    test test2;X500:test2@domain.de

    Mein Powershell Befehl lautet:

    $mail | foreach-Object{$name=$_.Name $proxy = $_.mail -split ';' Set-mailbox -identiy $name -EmailAdresses @{add=$proxy}}
    

    Hieraus ergibt sich folgende Fehlermeldung:

    Unexpected token 'proxy' in expression or statement.
    At line:1 char:44
    + $mail | foreach-Object{$name=$_.Name $proxy <<<<  = $_.mail -split ';' Set-mailbox -identiy $name -EmailAdresses @{ad
    d=$proxy}}
        + CategoryInfo          : ParserError: (proxy:String) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : UnexpectedToken
    Vielen Dank nochmal.
    Montag, 29. Oktober 2012 07:01
  • Da müsstes du deine Fehlermeldung richtig lesen! Der Fehler tritt bei Char 44 auf!
    Das zeigt auf das erste $Proxy !

    $mail | foreach-Object{$name=$_.Name $proxy = $_.mail -split

    Das bedeutet wenn man seinen code in eine Zeile schreibt MUSS, man diesen durch semicolons trennen!
    Das Semikolon trennt in der PowerShell einen Befehl von einem anderen, wenn man dies in eine Zeile schreibt!
    Oder man schreibt den code in mehrere Zeilen, wie in dem Beispiel!

    Ich kann das nicht testen aber; Probier mal folgendes:

    $mail | foreach-Object{$name=$_.Name ; $proxy = $_.mail -split ';' ; Set-mailbox -identiy $name -EmailAdresses @{add=$proxy}}


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!


    Montag, 29. Oktober 2012 08:06
  • Dankeschön, nun bekomme ich folgende Fehlermeldung:

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

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

    Montag, 29. Oktober 2012 08:13
  • Dein $Proxy ist warscheinlich leer, da dein Code von dem Beispiel abweicht ! (Abtippen will gelernt sein ;-) )
    Ersetze $_.mail gegen $_.ProxyAddresses !

    $mail | foreach-Object{$name=$_.Name ; $proxy = $_.ProxyAddresses -split ';' ; Set-mailbox -identiy $name -EmailAdresses @{add=$proxy}}


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Montag, 29. Oktober 2012 08:27
  • Danke für all die Denkanstöße, habe es nun auch gelöst. Hier meine Lösung:

    $mail | ForEach {Set-Mailbox $_.name -EMailAddresses @{Add="X500:"+$_.mail}}

    Montag, 29. Oktober 2012 10:26