Exchange 2010: Den ALIAS aller Postfächer per CMDLET ändern in ein Muster "6 Zeichen Nachnamen + 2 Zeichen Vornamen"?
Hallo,
im Zuge einer Migration möchte ich den ALIAS aller Postfächer ändern, bei "Max Mustermann" soll dann aus "MUSTERMANNMAX" eben "MUSTERMA" werden (ist bei uns eindeutig)
Hintergrund: Mit einem weiteren CMDLET will ich dann die Inhalte aller Postfächer in jeweils ein PST exportieren, welches den ALIAS als Namen tragen soll:
Oder kann man das gleich in diesem CMDELT hinbekommen?
Ich bin schon mal für jeden Tipp dankbar!
Schöne Grüße
Marcus
im Zuge einer Migration möchte ich den ALIAS aller Postfächer ändern, bei "Max Mustermann" soll dann aus "MUSTERMANNMAX" eben "MUSTERMA" werden (ist bei uns eindeutig)
Hintergrund: Mit einem weiteren CMDLET will ich dann die Inhalte aller Postfächer in jeweils ein PST exportieren, welches den ALIAS als Namen tragen soll:
(Get-Mailbox) | foreach {New-MailboxExportRequest -Mailbox $_.alias -FilePath "\\share\$_.pst"}
Oder kann man das gleich in diesem CMDELT hinbekommen?
Ich bin schon mal für jeden Tipp dankbar!
Schöne Grüße
Marcus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281814
Url: https://administrator.de/contentid/281814
Ausgedruckt am: 25.11.2024 um 15:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Marcus,
Für alle UserMailboxen ...
Ein umbenennen des Alias nur für den Export wäre aber nicht nötig das ließe sich oben auch direkt in den ersten Teil integrieren.
Ohne Alias umbenennen direkter Export mit gewünschtem Alias:
Das Script oben behandelt jetzt nur UserMailboxen, SharedMailboxes und RoomMaliboxes habe ich jetzt mal außen vor gelassen, da diese vermutlich nicht nach dem Schema umbenannte werden sollen, da sie ja meist keinen Vor- und Nachnamen haben. Aber das kannst du ja nach Bedarf mit dem Parameter -RecipientTypeDetails festlegen.
Die möglichen Werte sind:
Grüße Uwe
Für alle UserMailboxen ...
# Aliase ändern
(Get-Mailbox -RecipientTypeDetails UserMailbox) | %{
$u = Get-AdUser $_.SamAccountName
if ($u.Surname -ne $null -and $u.GivenName -ne $null ){
Set-Mailbox $_.Alias -Alias "$($u.Surname[0..5] -join '')$($u.Givenname[0..1] -join '')"
}
}
# Mailboxen exportieren
Get-Mailbox | %{$_ | New-MailboxExportRequest -FilePath "\\server\share\$($_.Alias).pst"}
Ohne Alias umbenennen direkter Export mit gewünschtem Alias:
(Get-Mailbox -RecipientTypeDetails UserMailbox) | %{
$u = Get-AdUser $_.SamAccountName
if ($u.Surname -ne $null -and $u.GivenName -ne $null ){
$alias = "$($u.Surname[0..5] -join '')$($u.Givenname[0..1] -join '')"
}else{$alias = $_.Alias}
New-MailboxExportRequest $_.Alias -FilePath "\\server\share\$($alias).pst"
}
Die möglichen Werte sind:
DiscoveryMailbox
EquipmentMailbox
LegacyMailbox
LinkedMailbox
RoomMailbox
SharedMailbox
UserMailbox
Kann ich hier zwar nicht nachvollziehen, aber wegen der Pipeline, setzen die Mailboxes mal in Klammern:
Das sollte helfen. Ich hatte noch etwas kleines geändert, vermutlich hast du es verpasst. Klappt hier sonst einwandfrei.
Was du wie angepasst hast kann ich leider nicht sehen ...
Grüße Uwe
p.s. statt ein anderes Attribut zu nehmen: Es gibt bei jedem Befehl den Parameter -whatif der einen nur anzeigt was passieren würde anstattes tatsächlich durchzuführen, zusätzlich mit dem Parameter -verbose wird dir alle nur protokolliert anstatt durchgeführt.
(Get-Mailbox -RecipientTypeDetails UserMailbox) | %{
Was du wie angepasst hast kann ich leider nicht sehen ...
Grüße Uwe
p.s. statt ein anderes Attribut zu nehmen: Es gibt bei jedem Befehl den Parameter -whatif der einen nur anzeigt was passieren würde anstattes tatsächlich durchzuführen, zusätzlich mit dem Parameter -verbose wird dir alle nur protokolliert anstatt durchgeführt.
Der String für den Pfad am Ende muss so lauten
Wenn du eine Eigenschaft eines Objekts innerhalb von doppelten Anführungszeichen ausgeben willst musst du die Evalution-Klammern benutzen $() sonst kann die Powershell nicht unterscheiden handelt es sich um einen String oder eine Variable.
"\\share\$($_.Alias).pst"