PowerShell w Exchange Online
Exchange Online jest usługą chmurową SaaS (Software as a service) platformy Microsoft 365. Oferuje swoim użytkownikom funkcjonalność serwera pocztowego Exchange. Obecnie jest jedną z najczęściej wybieranych usług chmurowych. Jak w przypadku wielu innych rozwiązań Microsoftu, w Exchange Online, mamy możliwość użycia narzędzia PowerShell. W poniższym tekście poznasz podstawy poruszania się po Exchange Online z pomocą komend. Omówimy także proste, przykładowe skrypty mogące mieć zastosowanie w środowisku produkcyjnym.
Podłączenie się do usługi Exchange Online za pomocą PowerShell
Zanim przystąpisz do jakiejkolwiek czynności, konieczne będzie zainstalowanie i zaimportowanie odpowiedniego modułu PowerShell oraz włączenie uruchamiania skryptów w systemie.
Włączenie wykonywania skryptów:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
W przypadku Exchange Online możesz zainstalować moduł za pomocą komendy:
Install-Module -Name ExchangeOnlineManagement
Następnie zaimportuj moduł ExchangeOnlineManagament:
Import-Module ExchangeOnlineManagement
Połącz się z Exchange:
Connect-ExchangeOnline
Pojawi się komunikat, w którym logujemy się za pomocą poświadczeń konta, którego będziemy używać (najczęściej konto z uprawnieniami administratora).
Jeżeli twoje konto jest zabezpieczone MFA, konieczna będzie także weryfikacja drugą metodą uwierzytelniania. W poniższym przypadku jest to numer telefonu:
Gdy pomyślnie uwierzytelnisz swoje konto, zostaniesz połączony z chmurą Exchange.
Więcej informacji na temat łączenia się Exchange Online:
Niezbędne uprawnienia
Aby podłączyć się do Exchange Online, użytkownik, którego użyjemy musi mieć ustawioną wartość true w parametrze „RemotePowerShellEnabled”. Możesz sprawdzić zawartość tego parametru dla konkretnego użytkownika komendą „Get-User”. Jest także możliwość ustawienia go na false lub true. Zabroni to lub zezwoli użytkownikowi na korzystanie z PowerShell’a.
#Sprawdzenie wartości RemotePowershellEnabled dla użytkownika user@contoso.com Get-User user@contoso.com | Select Name, RemotePowerShellEnabled #Ustawienie wartości RemotePowershellEnabled na true - zezwolenie użytkownikowi na użycie Powershella Set-User user@contoso.com -RemotePowerShellEnabled $true #Ustawienie wartości RemotePowershellEnabled na false - zabronienie użytkownikowi użycia Powershella Set-User user@contoso.com -RemotePowerShellEnabled $false
Domyślnie każdy użytkownik ma ustawioną wartość true – ma możliwość podłączenia się komendą „Connect-ExchangeOnline”. Ze względów bezpieczeństwa możesz to zablokować, lecz nie jest to koniecznością, ponieważ polecenia są ograniczone przez rolę przypisaną do konta. Role oraz ich możliwości sprawdzisz w panelu administracyjnym Microsoft 365. Wszelkie polecenia i skrypty zawarte w tym artykule testowane były kontem z przypisaną rolą Administratora Globalnego, która daje dostęp do niemalże wszystkich poleceń.
Get-Mailbox vs Get-EXOMailbox
„Get-Mailbox” - podstawowa komenda pozwalająca sprawdzić parametry skrzynki email. Od wersji modułu Exchange Online V2 (EXO V2) wprowadzono także komendę „Get-EXOMailbox”. „Get-Mailbox” zwraca wszystkie parametry skrzynki, „Get-EXOMailbox” natomiast tylko część (dodatkowo te, które wybierzemy). Dzięki temu „Get-EXOMailbox” jest znacznie wydajniejsze – na wyjściu jest mniejsza ilość danych. Jest to bardziej zauważalne, gdy działamy na dużej ilości skrzynek.
Każda skrzynka w Exchange składa się z wielu parametrów, które odpowiadają za jej ustawienia. Sprawdzisz je za pomocą „Get-Mailbox”:
#Wyświetlenie wszystkich parametrów skrzynki user@contoso.com #"Format-List" możemy zastąpić skrótem "FL" Get-Mailbox -Identity user@contoso.com | Format-List
Wynikiem polecenia są wszystkie parametry skrzynki user@contoso.com. Została wyświetlona duża ilość informacji. Co jeżeli interesuje Cię tylko kilka parametrów?
Możesz sprecyzować swoje polecenie:
#Export listy aliasów przypisanych do wszystkich skrzynek w tenancie #Za pomocą Get-Mailbox Get-Mailbox | Select UserPrincipalName, EmailAddresses | Export-Csv C:\getm.csv #Za pomocą Get-EXOMailbox Get-EXOMailbox | Select UserPrincipalName, EmailAddresses | Export-Csv C:\getEXOm.csv
Wynikiem jest lista wszystkich skrzynek mailowych oraz ich aliasów.
Wspomniałem wcześniej o większej wydajności „Get-EXOMailbox”. Porównajmy zatem „Get-Mailbox” oraz „Get-EXOMailbox”:
#Eksport do pliku CSV parametrów skrzynki user@contoso.com za pomocą Get-Mailbox Get-Mailbox user@contoso.com | Export-Csv C:\getm.csv #zwrócony plik CSV zajmuje 10KB #Eksport do pliku CSV parametrów skrzynki user@contoso.com za pomocą Get-EXOMailbox Get-EXOMailbox user@contoso.com | Export-Csv C:\exo.csv #zwrócony plik CSV zajmuje 2KB
W tym wypadku plik wyjściowy jest pięciokrotnie mniejszy przy użyciu nowszej wersji komendy, ponieważ komenda Get-ExoMailbox zwraca mniejszą ilość parametrów skrzynki Łatwo wykalkulować, jak wielka różnica jest w wypadku operacji na setkach lub tysiącach skrzynek.
Wszystkie możliwości komend „Get-Mailbox” oraz „Get-EXOMailbox” sprawdzisz w dokumentacji udostępnionej przez Microsoft:
https://learn.microsoft.com/en-us/powershell/module/exchange/get-mailbox?view=exchange-ps
https://learn.microsoft.com/en-us/powershell/module/exchange/get-exomailbox?view=exchange-ps
Set-Mailbox
Interesuje Cię wprowadzenie zmian w ustawieniach skrzynki? Użyj do tego komendy „Set-Mailbox”! Używając jej, możesz wprowadzić zmiany w parametrach skrzynek, które sprawdziłeś za pomocą „Get-Mailbox”. Jak w przypadku użycia innych „setterów” (komend z prefiksem „Set”, wprowadzających zmiany), należy zachować szczególną uwagę. Warto przetestować je przed użyciem w środowisku testowym. Usunięcie wszystkich aliasów w tenancie byłoby problematyczne 😊.
Na potrzeby testów przyjmijmy, że chcemy dodać do skrzynki user@contoso.com alias u@contoso.com:
#Dodanie do skrzynki user@contoso.com aliasu u@contoso.com #Dodanie aliasu do atrybutu EmailAdresses Set-Mailbox user@contoso.com -EmailAddresses @{add="u@contoso.com"}
Planujesz monitorować skrzynki mailowe za pomocą logów? To także skonfigurujesz za pomocą „Set-Mailbox”:
#Uruchomienie zbierania logów dla wszystkich użytkowników w tenancie #Get-Mailbox zwraca nam wszystkie skrzynki mailowe, filtrujemy je pod kontem skrzynek użytkowników (-Filter {RecipientTypeDetails -eq "UserMailbox"). #Za pomocą pipeline (znak "|") przesyłamy wynik Get-Users do polecenia Set-Mailbox #Set-Mailbox ustawia tym skrzynkom wartość true dla parametru "AuditEnabled" Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq "UserMailbox"} | Set-Mailbox -AuditEnabled $true
Od teraz działania na skrzynkach będą monitorowane. Możesz podejrzeć je w centrum administracyjnym Microsoft 365 lub za pomocą komendy „Search-MailboxAuditLog”.
Poniżej odnośnik do szczegółowych informacji na temat „Set-Mailbox”: https://learn.microsoft.com/en-us/powershell/module/exchange/set-mailbox?view=exchange-ps
Przykładowe zastosowania PowerShell w Exchange Online
W artykule wymienionych zostało kilka komend oraz skryptów, które mogą mieć zastosowanie w środowisku produkcyjnym. Przedstawienie przykładowego zadania oraz skryptu, który je rozwiąże najlepiej zobrazuje jak przydatnym narzędziem jest PowerShell. Jeżeli zarządzasz Exchange Online, możesz natknąć się na poniższe przykłady podczas codziennej pracy.
Firma zakupiła nową domenę - contoso.com, twoim zadaniem jest przypisanie wszystkim skrzynkom dodatkowego aliasu w tej domenie. Obecnie w twoim tenancie znajduje się około 500 skrzynek mailowych – w tym wypadku najszybszym rozwiązaniem będzie skrypt PowerShell.
#Łączenie z Exchange Online Connect-ExchangeOnline #Tworzenie zmiennej $mailboxes zawierającej wszystkie skrzynki $mailboxes = Get-EXOMailbox #Pętla Foreach wykona się dla każdej skrzynki w zmiennej $mailboxes Foreach($mailbox in $mailboxes){ #Tworzenie zmiennej $newalias z nowym aliasem dla aktualnie przetwarzanej przez pętlę skrzynki $newalias = "$($mailbox.alias)@contoso.com" #Dodanie nowego aliasu Set-Mailbox $mailbox –EmailAddresses @{Add=’$newalias’} }
Została utworzona skrzynka invoices@contoso.com, która miała być skrzynką współdzieloną. Niestety ktoś z działu IT popełnił błąd i stworzył ją jako skrzynkę użytkownika z przypisaną licencją. Twoim zadaniem jest zmiana typu skrzynki na „Shared”. Usunięcie i ponownie stworzenie nie wchodzi w grę – na skrzynkę zostało już wysłanych kilkadziesiąt faktur, które muszą zostać zachowane. W tym wypadku możesz bez problemu wykonać zadanie w centrum administracyjnym Exchange Online, lecz wykorzystajmy do tego komendy:
#Łączenie z Exchange Online Connect-ExchangeOnline #Ustawienie typu skrzynki na współdzieloną Set-Mailbox invoices@contoso.com -Type Shared #Sprawdzenie czy typ skrzynki został zmieniony na Shared - "RecipientTypeDetails" zawiera teraz wrtość "SharedMailbox" Get-EXOMailbox invoices@contoso.com | fl Name,RecipientTypeDetails
Twój przełożony poprosił o przygotowanie listy wszystkich skrzynek współdzielonych. Jak najszybciej wykonasz zadanie?
#Łączenie z Exchange Online Connect-ExchangeOnline #Get-EXOMailbox z filtrem pozwala na wybranie wszystkich skrzynek, których parametr "RecipientTypeDetails" zawiera "SharedMailbox" #Wybrane skrzynki są przesłane do polecenia Select - interesują nas tylko adres bez szczegółów, wybieramy więc tylko "PrimarySmtpAddress" #Adresy przesłane są do polecenia Export-Csv, które eksportuje je do pliku csv i zapisuje w wybranej lokalizacji Get-EXOMailbox -Filter{RecipientTypeDetails -eq "SharedMailbox"} | Select PrimarySmtpAddress | Export-Csv -Path c:\SharedMailboxes.csv
Twoim zadaniem jest sprawdzenie skrzynek, które mają uruchomioną opcję „Prześlij dalej” (forwarding). Posłuży do tego proste polecenie:
#Skrypt wyświetlający listę przekierowanych skrzynek #Łączymy się z ExchangeOnline Connect-ExchangeOnline #Get-Mailbox zwraca wszystkie skrzynki #Where ogranicza skrzynki tylko do tych, których pole "ForwardingAddress" nie jest puste #Następnie dzięki Select wyświetla się adres mailowy oraz skrzynka, na którą przekierowane są maile Get-Mailbox | Where {$_.ForwardingAddress -ne $Null} | Select PrimarySmtpAddress,ForwardingAddress
Istnieje wiele innych komend mających zastosowanie w Exchange Online. Artykuł skupia się na „Get-Mailbox” oraz „Set-Mailbox” – to ich użyjesz w większości przypadków. Jeżeli chcesz poszerzyć wiedzę o inne polecenia, to zachęcam do sprawdzenia dokumentacji udostępnionej przez Microsoft (https://learn.microsoft.com/en-us/powershell/module/exchange/?view=exchange-ps#powershell-v2-module). Znajdziesz tam wszystkie dostępne komendy wraz z ich opisem i składnią. Zawsze możesz także użyć komendy Get-Help 😊.
nasze
wsparcie.
się z nami
Firma IT, czyli firma informatyczna, zajmuje się szeroko pojętymi technologiami informacyjnymi. Obejmuje to między innymi:
- Projektowanie i tworzenie oprogramowania: Firma IT może tworzyć aplikacje na zamówienie dla innych firm lub produkty oprogramowania dla masowego rynku. W zależności od specjalizacji mogą to być aplikacje mobilne, aplikacje desktopowe, aplikacje webowe czy systemy wbudowane.
- Usługi konsultingowe: Firma IT często dostarcza ekspertów w celu doradztwa w zakresie wdrażania nowych technologii, optymalizacji procesów biznesowych czy też wyboru odpowiednich rozwiązań technologicznych.
- Rozwiązania chmurowe: Wiele firm IT specjalizuje się w wdrażaniu i zarządzaniu rozwiązaniami w chmurze, takimi jak przechowywanie danych, hosting aplikacji czy platformy do analizy danych.
- Bezpieczeństwo informatyczne: Ochrona przed cyberatakami, audyt bezpieczeństwa, wdrażanie polityk bezpieczeństwa oraz monitorowanie sieci to tylko niektóre z zadań firm IT w tej dziedzinie.
- Zarządzanie infrastrukturą IT: W tym zakresie firma może zajmować się zarządzaniem serwerami, bazami danych, sieciami czy urządzeniami końcowymi użytkowników.
- Wsparcie techniczne i serwis: Firma IT może dostarczać wsparcie dla swoich produktów lub ogólnie wsparcie IT dla innych firm, zarządzając ich technologią na co dzień.
- Szkolenia: Wielu dostawców technologii informacyjnych oferuje również szkolenia w zakresie korzystania z oprogramowania czy bezpiecznego korzystania z technologii.
- Rozwiązania hardware: Niektóre firmy IT mogą także zajmować się dostarczaniem i konfiguracją sprzętu komputerowego, serwerowego czy sieciowego.
W zależności od specjalizacji i wielkości, firma IT może oferować jedno, kilka lub wszystkie z powyższych rozwiązań. Ważne jest, aby przy wyborze dostawcy dokładnie zrozumieć zakres ich usług i dopasować je do indywidualnych potrzeb.
W Support Online od lat wspieramy firmy w
- kompleksowym wsparciu użytkowników (zarówno na miejscu jak również zdalnie),
- obsługujemy komputery, telefony, tablety oraz problemy sieciowe z nimi związane,
- specjalizujemy się w administracji serwerami: Windows, Linux/Unix,
- obsługujemy wirtualizatory takie jak: KVM, Hyper-V, VMWare czy Proxmox,
- obsługujemy serwisy chmurowe w szczególności rozwiązania: Azure, Microsoft 365 oraz AWS,
- monitorujemy serwery oraz urządzenia w sieci internetowej,
- konsultujemy rozwój, DRP oraz wspieramy stabliność przedsiębiorstwa w warstwie informatycznej,
Jeśli szukasz dobrej firmy informatycznej to myślmy, że Support Online to dobre miejsce dla rozwoju Twojego biznesu.
Warto skorzystać z firmy informatycznej (IT) taka jak Support Online gdy:
- Planujesz wdrażać nowe technologie lub oprogramowanie w swojej firmie.
- Potrzebujesz specjalistycznego doradztwa w zakresie technologii.
- Chcesz zoptymalizować istniejące procesy informatyczne.
- Zmagasz się z problemami bezpieczeństwa cyfrowego.
- Potrzebujesz wsparcia w zarządzaniu infrastrukturą IT.
- Brakuje Ci wewnętrznych zasobów lub kompetencji do realizacji pewnych projektów technologicznych.
Korzystanie z ekspertów zewnętrznych IT może przynieść korzyści w postaci oszczędności czasu, zasobów oraz zapewnienia wysokiej jakości rozwiązań.
Wynajęcie firmy informatycznej takiej jak Support Online w porównaniu z freelancerem IT oferuje kilka kluczowych korzyści:
- Wsparcie całego zespołu: Firma informatyczna IT dysponuje pełnym zespołem specjalistów od DevOps, Cyber Security Specialist po Helpdesk IT Specialist, którzy posiadają różnorodne umiejętności i doświadczenie, umożliwiając szybsze rozwiązanie problemów i realizację bardziej złożonych projektów.
- Wiarygodność i stabilność: Firmy IT mają ustaloną reputację i historię, co może przekładać się na większą pewność i stabilność usług.
- Utrzymanie i wsparcie: Firma informatyczna może oferować umowy serwisowe, gwarancje i wsparcie posprzedażowe, które mogą być trudniejsze do uzyskania od indywidualnego freelancera.
- Zasoby: Firmy mają dostęp do większej ilości zasobów, narzędzi i technologii, które mogą przyspieszyć i ulepszyć realizację projektu.
- Dłuższa dostępność: Ryzyko zniknięcia freelancera lub zmiany zawodu jest większe niż ryzyko likwidacji stabilnej firmy.
Jednakże warto zaznaczyć, że wybór pomiędzy firmą a freelancerem zależy od konkretnych potrzeb i sytuacji. Jeśli cenisz sobie spokój i szybką reakcję na niespodziewane problemy warto postawić na firmę IT taką jak Support Online.
Współpraca z firmą IT Support Online oferuje następujące zalety:
- Profesjonalny outsourcing IT: Firma gwarantuje wysoką jakość świadczonych usług w zakresie outsourcingu IT dla przedsiębiorstw różnej wielkości.
- Kompleksowe wsparcie informatyczne: IT Support Online dostarcza wszechstronne wsparcie informatyczne, które odpowiada na różne potrzeby przedsiębiorstw.
- Oszczędność czasu i pieniędzy: Dzięki wsparciu firmy, klient może skoncentrować się na swoich głównych działaniach biznesowych, jednocześnie redukując koszty związane z zarządzaniem technologią informacyjną.
- Obsługa różnorodnych firm: Firma specjalizuje się w obsłudze zarówno małych i średnich przedsiębiorstw, jak i dużych korporacji, co świadczy o jej elastyczności i zdolności dostosowywania się do różnorodnych wymagań klientów.
- Lider w obszarze outsourcingu IT: Firma jest uznawana za lidera w dziedzinie outsourcingu IT, zwłaszcza w regionie Poznania i Warszawy.
Współpracując z naszą firmą IT Support Online, przedsiębiorstwa mogą liczyć na wysoki standard obsługi oraz profesjonalizm na każdym etapie współpracy.