Benutzer mit den meisten Antworten
CSV Datei auslesen E-Mail Adresse hinzufügen

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.
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}}
- Als Antwort markiert Florian Rösch 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".
- Bearbeitet Denniver ReiningMVP, Moderator Freitag, 26. Oktober 2012 10:35
-
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
-
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". -
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. -
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!- Bearbeitet Peter Kriegel Montag, 29. Oktober 2012 08:07
-
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-MailboxA positional parameter cannot be found that accepts argument '$null'.
+ CategoryInfo : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Set-Mailbox -
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!
- Bearbeitet Peter Kriegel Montag, 29. Oktober 2012 08:28
-
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}}
- Als Antwort markiert Florian Rösch Montag, 29. Oktober 2012 10:26