Office 365 / Microsoft 365: przekierowanie poczty użytkowników z poziomu modułu PowerShell

Jak przekierować u wszystkich użytkowników poczty Office 365 ich obecne skrzynki na nowe adresy mailowe? Pomoże nam PowerShell oraz moduł do obsługi Exchange Online. Jego użycie ma za zadanie automatyzować i wykonywać operacje masowo. Poniżej znajdziecie sprawdzony sposób jak ustawić przekierowanie skrzynki z poziomu PowerShell’a.

Zacznijmy od przygotowania listy obecnych skrzynek wraz z odpowiadającymi im przekierowaniami. Najprościej będzie nam przygotować odpowiedni plik CSV, zawierający dwie kolumny: UserPrincipalName (nazwę skrzynki w Office 365), ForwardAdress (adres na który ma być ustawione przekierowanie.
PowerShell lubi pliki specyficzne typy CSV co nie znaczy że nie radzi sobie z innym. Pliki powinny mieć dane rozdzielane przecinkami, a zawartość powinna być zawarta cudzysłowie. UWAGA: takie go formatu nie obsługuje w zapisie Excell. Poniżej przykład zawartości pliku CSV otwartego w notatniku:

Mając gotową listę spróbujmy ją odczytać w PowerShell’u.

$users = import-csv 'c:\data\usersforwardlist.csv'
$users | format-table -autosize

Mamy listę podstawioną pod zmienną, teraz należy odpowiednio przygotować warunek użycia polecenia Set-MailBox. Jeżeli mielibyśmy ustawić z ręki przesyłanie wiadomości dla jednej skrzynki nasze polecenie wyglądało by tak:

Set-MailBox -Identity admin@sprawdzone.it -ForwardingSmtpAddress admin@zaufane.it -DeliveryToMailboxAndForward $true

Parametr -Identity to nazwa skrzynki w Office 365, parametr -ForwardingSmtpAddress to skrzynka na którą będziemy przekazywać nasze wiadomości. Ostatnim parametrem jest -DeliverToMailboxAndForward, odpowiada on za przesłanie wiadomości dalej i pozostawienie jej w skrzynce. Opcjonalnie możemy użyć parametru -Force.

Teraz poskładajmy nasze elementy w całość. Gotowe polecenie do masowego ustawienia przekierowania skrzynek u użytkowników ExchangeOnline znajdziecie poniżej. Pamiętajcie o tym aby najpierw połączyć się z Office365 z użyciem odpowiedniego modułu!

$users = import-csv 'c:\data\usersforwardlist.csv'

foreach ($user in $users)
{
    Set-Mailbox -Identity $user.UserPrincipalName –ForwardingSmtpAddress $User.ForwardAdress -DeliverToMailboxAndForward $true -force
 
}