Il mondo Microsoft Azure è piuttosto complesso ed ampio. Talvolta non tutte le opzioni sono disponibili nelle interfacce ed è necessario fare ricorso alla Command Line di PowerShell per poter effettuare query o impartire comandi che vanno più in profondità, oppure aggregano svariate tipologie di dati. Il problema principale in questo caso è che Azure di Microsoft 365 (l’ex Office 365) è un sistema Cloud, non locale. Quindi sono necessari alcuni passaggi per integrare, nella PowerShell del proprio computer, le estensioni per accedere ad Azure. Vediamo in questa piccola guida passo-passo come fare.
Per prima cosa dobbiamo verificare la nostra versione di Powershell. Attiviamo da Start Powershell con diritti di Amministratore (tasto destro sulla icona Powershell, avvia come amministratore). Quindi scriveremo (o copia incolla dal comando sottostante):
$PSVersionTable.PSVersion
Il risultato deve essere una versione uguale o superire alla 5.1 che è presente per default nella versione di Windows 10. Se è soddisfatto installiamo il primo modulo
Install-Module -Name ExchangeOnlineManagement
A questo punto lo dobbiamo attivare attraverso l’importazione
Import-Module ExchangeOnlineManagement
A seconda della situazioni potrebbe verificarsi un errore di importazione dovuto alla mancanza di diritti. Per sapere se possiamo importare i moduli dobbiamo dare il comando:
Get-ExecutionPolicy
Se ottenete come valore “Restricted” dobbiamo re-impostare la policy, con il comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Se ridiamo il comando Get-ExecutionPolicy dovremo ottenere il valore RemoteSigned. A questo punto possiamo ri-lanciare il comando di Import-Module che vedete poche righe sopra. Dovremo poter essere in grado di collegarsi al nostro Exchange di Microsoft 365.
Connect-ExchangeOnline
Ci verrà chiesto di collegarci (si apre una pop-up con la possibilità di fornire le credenziali del vostro Microsoft Account). Ottenuto il collegamento verrà scaricato il necessario per effettuare le Query in remoto, lo vedrete in modo chiaro da uno specchietto riepilogativo dei comandi all’interno della PowerShell medesima. Al termine infatti potremo ad esempio estrarre tutte gli account con un semplice
Get-Mailbox
Che ci ritornerà l’elenco delle mailbox attive all’interno del nostro Exchange su Azure.
Se desideriamo “spingere” possiamo effettuare, ma questo chiaramente fa parte del mondo PowerShell, una concatenazione di query. Per esempio vogliamo ottenere un comodo file CSV (comma separate value) per avere l’elenco completo degli indirizzi email, quindi non solo le caselle, ma anche gli Alias, le caselle condivise ed eventuali Alias di queste ultime, oltre ai Gruppi. Comando che produce un risultato che effettivamente in Exchange Online non è presente. Qui prendo ad esempio l’ottimo articolo di Ali Tajran che spiega in modo dettagliato quanto esposto nello “snippet” powershell che allego di seguito.
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={$_.EmailAddresses | Where-Object {$_.PrefixString -ceq "smtp"} | ForEach-Object {$_.SmtpAddress}}} | Sort-Object DisplayName | Export-CSV "C:\temp\ListMail.csv" -NoTypeInformation
Conclusioni
Abbiamo visto come sia possibile “portare” all’interno della Powershell del nostro computer Windows, i moduli che estendono le funzionalità presenti in Azure, in questo caso quelle di Exchange Online di Microsoft 365.