Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Zusätzliche E-Mail Adresse zu einer bestehenden via Powershell hinzufügen

Frage Microsoft Exchange Server

Mitglied: gelbeseiten

gelbeseiten (Level 1) - Jetzt verbinden

16.05.2014, aktualisiert 20:07 Uhr, 3694 Aufrufe, 13 Kommentare

Hallo,

wir ändern demnächst undere E-Mail- und Web-Domäne. Ich möchte für einen bestimmten Zeitraum beide E-Mail Adressen auf einem Postfach behalten.
Wir haben ca. 150 Postfächer, bei denen das geändert werden muss.
Ich habe bisher folgendes Script, um die set as reply address zu setzen:

get-mailbox -database Exchange_DB| select Name,PrimarySMTPAddress | export-csv c:\temp\mbx_primarysmtp.csv -Encoding Unicode -Delimiter ";"
dann setze ich manuel via notepad und find and replace die richtige Adresse ein

Vorher:
TYPE Selected.Microsoft.Exchange.Data.Directory.Management.Mailbox
"Name";"PrimarySmtpAddress"
Ben1; ben1@alte-domaene.de
Ben2; Ben2@alte-domaene.de
Ben3; Ben3@alte-domaene.de
Ben4; Ben4@alte-domaene.de
etc.

TYPE Selected.Microsoft.Exchange.Data.Directory.Management.Mailbox
"Name";"PrimarySmtpAddress"
Ben1; ben1@neu-domaene.de
Ben2; Ben2@neu-domaene.de
Ben3; Ben3@neu-domaene.de
Ben4; Ben4@neu-domaene.de
etc.

Dann lese ich die csv Datei wieder ein:

Import-Csv c:\temp\mbx_primarysmtp.csv -Delimiter ";" | foreach-object {set-mailbox $_.Name -EmailAddresses $_.PrimarySMTPAddress -EmailAddressPolicyEnabled $False}

und lasse mir das Resultat wieder ausgeben:
Get-mailbox -database Exchange_DB | select Name,PrimarySMTPAddress,secondarysmtpaddress

Name PrimarySmtpAddress
------------------
ben1 ben1@neu-domaene.de
ben2 ben2@neu-domaene.de
ben3 ben3@neu-domaene.de
ben4 ben4@neu-domaene.de

Das läuft auch alles wunderbar!
Nur, wollen wir übergangsweise die alte E-Mail Adresse behalten.
So dass im Resultat jenes herauskommen muss:

Name PrimarySmtpAddress Secondarysmtpaddress
-------- ------------ ------------------
ben1 ben1@neu-domaene.de ben1@alte-domaene.de
ben2 ben2@neu-domaene.de ben2@alte-domaene.de
ben3 ben3@neu-domaene.de ben3@alte-domaene.de
ben4 ben4@neu-domaene.de ben4@alte-domaene.de

Hat da jemand einen Lösungsansatz? Oder gar eine Lösung?

Danke!

Gruß
Volkmar
Mitglied: Dani
16.05.2014 um 20:39 Uhr
Guten Abend Volkmar,
dafür gibt es eigentlich die E-Mailaddress-Policy. Dort einfach die zweite Domain hinzufügen und die Sache ist erledigt. Setzt natürlich vorraus, dass du ein einheitliches Namensschema hast, was bei 150 Postfächern sicher gegeben ist.


Grüße,
Dani
Bitte warten ..
Mitglied: gelbeseiten
16.05.2014, aktualisiert 17.05.2014
Hi Dani!

Danke für Deine Antwort,
Ja, wir haben auch Policies im Einsatz, kann das aber ich nicht einsetzen, da wir verschiede Datenbanken haben und es eben nur auf eine Datenbank anwendung finden darf. Ist etwas kompliziert es hier zu schreiben.
Da wäre mir mit einem Powershellscript eher geholfen =(

danke!
Gruß
Volkmar
Bitte warten ..
Mitglied: colinardo
16.05.2014, aktualisiert 17.05.2014
Hallo Volkmar,
z.B. so
01.
$mailboxes = Get-mailbox -database Exchange_DB 
02.
$mailboxes | %{set-mailbox $_.Name -EmailAddresses @{add="$($_.PrimarySmtpAddress.local)@altedomain.com"} -EmailAddressPolicyEnabled $False}
Das Script nimmt den Prefix der neuen primären Mailadresse und baut mit dem alten Domänennamen die alte Adresse zusammen, welche dann dem Postfach mit einer Hashtable und dem Keyword "add" dem Postfach hinzugefügt wird.

siehe auch: http://www.mikepfeiffer.net/2011/12/how-to-add-exchange-proxy-addresses ...

Grüße Uwe
Bitte warten ..
Mitglied: gelbeseiten
17.05.2014 um 10:30 Uhr
Hi Uwe,

danke für deine Hilfe!

Ich habe vergessen zu sagen, dass wir einen Exchange 2007 SP3 Version: 08.03.0342.000 haben, da gibt es so einige Möglichkeiten noch nicht =(

Ich bekomme Fehlermeldungen bei Ausführen des Scripts.
=(

So wie ich die Seite verstehe, ist es für einen Exchange 2010.

Danke!
Gruß
Volkmar
Bitte warten ..
Mitglied: colinardo
17.05.2014, aktualisiert 18.05.2014
OK, dann mach es halt so:
(Wenn die Mailboxen schon die neue Primäre Adresse enthalten)
01.
$mailboxes = Get-mailbox -database Exchange_DB  
02.
$mailboxes | %{set-mailbox $_.Name -EmailAddresses ("smtp:$($_.PrimarySmtpAddress.toString())","smtp:$($_.PrimarySmtpAddress.local)@altedomain.de")}
-edit- upgedated ...

Grüße Uwe
Bitte warten ..
Mitglied: gelbeseiten
17.05.2014 um 12:38 Uhr
Hi Uwe,

danke für Deine Hilfe!

Ich habe das Script so angepasst, aber irgendwas mache ich falsch, oder ich bin zu d..f! =)

Import-Csv c:\temp\mbx_primary-Secondary.csv -Delimiter ";" | foreach-object {set-mailbox $_.Name -EmailAddresses $_.PrimarySMTPAddress, $_.SecondarySMTPAddress -EmailAddressPolicyEnabled $False}

Die CSV Datei sieht so aus:
#TYPE Selected.Microsoft.Exchange.Data.Directory.Management.Mailbox
"Name";"PrimarySmtpAddress";"secondarySMTPAddress"
"ben3";"ben3@neue-domaene.de";"ben3@alte-domaene.de"
"ben1";"ben1@neue-domaene.de";"ben1@alte-domaene.de"
"ben4";"ben4@neue-domaene.de";"ben4@alte-domaene.de"
"ben2";"ben2@neue-domaene.de";"ben2@alte-domaene.de "


Letztendlich kommt diese Fehlermeldung in der Powershell und in den Eigenschaften des Benutzers befindet sich die alte E-Mail Adresse „@alte-domaene.de“

Set-Mailbox : Cannot convert '
ben3@alte-domaene.de' to the type 'Microsoft.Exchange.Data.ProxyAddressCollection
' required by parameter 'EmailAddresses'. Cannot perform this operation with th
e address '
ben3@alte-domaene.de' because it is invalid: The address '
ben3@alte-domaene.de ' is not a valid SMTP address, so a prefix must be specified.
At C:\Scripts\SMTP-Aenderung\SMTP-cmdlet.ps1:19 char:114

Import-Csv c:\temp\mbx_primary-Secondary.csv -Delimiter ";" | foreach-object

{set-mailbox $_.Name -EmailAddresses <<<< $_.PrimarySMTPAddress, $_.SecondaryS
MTPAddress -EmailAddressPolicyEnabled $False}
+ CategoryInfo : InvalidArgument: ( [Set-Mailbox], ParameterBin
dingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.Exchange.Managem
ent.RecipientTasks.SetMailbox

Hast Du noch eine Idee, was das Problem sein kann?
Ich müsste ja eigentlich auch mit zwei csv Dateien arbeiten, denn alle E-Mail Adressen in der csv Datei nach und nach eintragen, das dauert dann doch etwas lange, da könnte ich die Adressen wahrscheinlich auch manuell schneller ändern =(

Wahrscheinlich bin ich wirklich zu d..f =)

Danke Dir!
Bitte warten ..
Mitglied: colinardo
17.05.2014, aktualisiert um 15:09 Uhr
du hast die Klammern um die Mailadressen im Parameter -EMailAddresses vergessen. Habe es dir oben nochmal abgeändert (Nutzung einer calculated property) dann musst du nicht den Umweg über die CSV-Dateien gehen...
Bitte warten ..
Mitglied: gelbeseiten
18.05.2014, aktualisiert um 16:13 Uhr
Hi Uwe,

danke Dir nochmals!

Aber, bekomme ich das nicht hin, jetzt bekomme ich diese Meldung, weiß aber nicht, wo das "=" fehlt:
01.
$mailboxes = Get-mailbox -database Exchange_DB 
02.
$mailboxes | select Name,PrimarySmtpAddress,@{Name="SecondaryEmailAddress";e{"$($_.PrimarySmtpAddress.local)@alte-domaend.de"}} | %{set-Mailbox $_.Name -EmailAddresses ($_.PrimarySmtpAddress,$_.SecondarySmtpAddress) -EmailAddressPolicyEnabled $false} 
03.
 
04.
Missing '=' operator after key in hash literal. 
05.
At C:\Scripts\SMTP-Aenderung\SMTP-Secondary.ps1:2 char:78 
06.
+ $mailboxes | select Name,PrimarySmtpAddress,@{Name="SecondaryEmailAddress";e{ 
07.
 <<<< "$($_.PrimarySmtpAddress.local)@alte-domaene.de"}} | %{set-Mailbox $_.Name 
08.
-EmailAddresses ($_.PrimarySmtpAddress,$_.SecondarySmtpAddress) -EmailAddressPo 
09.
licyEnabled $false} 
10.
    + CategoryInfo          : ParserError: (:) [], ParseException 
11.
    + FullyQualifiedErrorId : MissingEqualsInHashLiteral 
12.
 
13.
 
14.
 
15.
Hier habe ich nach dem "e" das "=" Zeichen gesetzt: 
16.
  
17.
$mailboxes = Get-mailbox -database Echange_DB 
18.
$mailboxes | select Name,PrimarySmtpAddress,@{Name="SecondaryEmailAddress";e={"$($_.PrimarySmtpAddress.local)@alte-domaene.de"}} | %{set-Mailbox $_.Name -EmailAddresses ($_.PrimarySmtpAddress,$_.SecondarySmtpAddress) -EmailAddressPolicyEnabled $false} 
19.
 
20.
 
21.
und ich bekam dann diese Meldung: 
22.
 
23.
Set-Mailbox : Cannot bind parameter 'EmailAddresses'. Cannot convert the "ben3@ 
24.
neu-domaene.de" value of type "Microsoft.Exchange.Data.SmtpAddress" to type " 
25.
Microsoft.Exchange.Data.ProxyAddress". 
26.
At C:\Scripts\SMTP-Aenderung\SMTP-Secondary.ps1:2 char:167 
27.
+ $mailboxes | select Name,PrimarySmtpAddress,@{Name="SecondaryEmailAddress";e= 
28.
{"$($_.PrimarySmtpAddress.local)@alte-domaene.de"}} | %{set-Mailbox $_.Name -Emai 
29.
lAddresses <<<<  ($_.PrimarySmtpAddress,$_.SecondarySmtpAddress) -EmailAddressP 
30.
olicyEnabled $false} 
31.
    + CategoryInfo          : InvalidArgument: (:) [Set-Mailbox], ParameterBin 
32.
   dingException 
33.
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Exchang 
34.
   e.Management.RecipientTasks.SetMailbox 
35.
 
36.
Set-Mailbox : Cannot bind parameter 'EmailAddresses'. Cannot convert the "ben1@ 
37.
neu-domaen.de" value of type "Microsoft.Exchange.Data.SmtpAddress" to type " 
38.
Microsoft.Exchange.Data.ProxyAddress". 
39.
At C:\Scripts\SMTP-Aenderung\SMTP-Secondary.ps1:2 char:167 
40.
+ $mailboxes | select Name,PrimarySmtpAddress,@{Name="SecondaryEmailAddress";e= 
41.
{"$($_.PrimarySmtpAddress.local)@alte-domaene.de"}} | %{set-Mailbox $_.Name -Emai 
42.
lAddresses <<<<  ($_.PrimarySmtpAddress,$_.SecondarySmtpAddress) -EmailAddressP 
43.
olicyEnabled $false} 
44.
    + CategoryInfo          : InvalidArgument: (:) [Set-Mailbox], ParameterBin 
45.
   dingException 
46.
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Exchang 
47.
   e.Management.RecipientTasks.SetMailbox
Danke Dir nochmals!

Gruß
Volkmar
Bitte warten ..
Mitglied: colinardo
18.05.2014, aktualisiert um 16:45 Uhr
OK, das Gleichheitszeichen hatte ich vergessen, dann lässt sich der Exchange 2007 doch etwas bitten ... das hier sollte dort auf jeden Fall funktionieren, gerade auf einen Exchange 2007 in einer VM getestet:
01.
$mailboxes = Get-mailbox -database Exchange_DB 
02.
foreach($mailbox in $mailboxes){ 
03.
	$EmailAddresses = $mailbox.EmailAddresses 
04.
	$EmailAddresses += "smtp:$($mailbox.PrimarySmtpAddress.local)@altedomain.com" 
05.
	set-Mailbox $mailbox.Name -EmailAddresses $EmailAddresses -EmailAddressPolicyEnabled $false 
06.
}
und folgendes geht auch auf einem Exchange 2007:
01.
$mailboxes = Get-mailbox -database Exchange_DB  
02.
$mailboxes | %{set-mailbox $_.Name -EmailAddresses ("smtp:$($_.PrimarySmtpAddress.toString())","smtp:$($_.PrimarySmtpAddress.local)@altedomain.de") -EmailAddressPolicyEnabled $false}
Grüße Uwe
Bitte warten ..
Mitglied: gelbeseiten
18.05.2014 um 16:31 Uhr
Danke für Deinen Aufwand =)
Und das bei sei einem guten Wetter! =)

Ich habe Dein Script so kopiert und nur die Domaene angepasst und bekomme dann diese Meldung.

Unexpected token 'EmailAddresses' in expression or statement.
At C:\Scripts\SMTP-Aenderung\SMTP-Secondary.ps1:2 char:90

foreach($mailbox in $mailboxes){$EmailAddresses = $mailbox.EmailAddresses $Em

ailAddresses <<<< += ($mailbox.PrimarySmtpAddress.local + "@alte-domaene.de") Se
t-Mailbox $mailbox.Name -EmailAddresses $EmailAddresses -EmailAddressPolicyEnab
led $false}
+ CategoryInfo : ParserError: (EmailAddresses:String) [], ParseEx
ception
+ FullyQualifiedErrorId : UnexpectedToken

Wenn Du in der Nähe wärst würde ich Dich auf ein Bier einladen =)

Gruß
Volkmar
Bitte warten ..
Mitglied: colinardo
18.05.2014, aktualisiert um 16:34 Uhr
sorry, aber die Fehler müssen leider bei Dir liegen denn hier geht es einwandfrei ... mach mal ein Update deiner Powershell...
Bitte warten ..
Mitglied: gelbeseiten
18.05.2014 um 16:47 Uhr
Kannst recht haben, ist habe die Powershell 2.0 drauf, ich versuche mal die 3.0 zu installieren, danke!
Ich melde mich!
Bitte warten ..
Mitglied: gelbeseiten
18.05.2014 um 17:04 Uhr
So, aktualsiert
Jetzt bekomme ich diese Meldung:

Name : ConsoleHost
Version : 3.0
InstanceId : b24c46a7-e84d-46b3-b8b3-d1ca7eabefd7
UI : System.Management.Automation.Internal.Host.InternalHostUserI
nterface
CurrentCulture : de-DE
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace


[PS] C:\Scripts\SMTP-Aenderung>.\SMTP-Secondary.ps1
At C:\Scripts\SMTP-Aenderung\SMTP-Secondary.ps1:2 char:75

foreach($mailbox in $mailboxes){$EmailAddresses = $mailbox.EmailAddresses

$Email ...

~~~~~~
Unexpected token '$EmailAddresses' in expression or statement.
At C:\Scripts\SMTP-Aenderung\SMTP-Secondary.ps1:2 char:149

... alte-domaene.de") Set-Mailbox $mailbox.Name -EmailAddresses $EmailAddresses

-EmailA ...

~~~~~~~~~~~

Unexpected token 'Set-Mailbox' in expression or statement.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken


Ich glaube, ich werde Montag alles zufuß machen, zu erst die neue Adresse per Powershell setzen und die alte noch nachtragen =(

Danke Dir, dir einen schönen Sonntag noch!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 10
E-Mail-Adresse bzw. Konto bei Windows 10 ändern (7)

Frage von Schwedenbitter zum Thema Windows 10 ...

E-Mail
gelöst Absender E-Mail Adresse ändern in Lotus Notes (Domino Server) (2)

Frage von Hendrik2586 zum Thema E-Mail ...

Outlook & Mail
gelöst E-Mail versenden mit PowerShell (6)

Frage von 112Timo zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...