Connetti Office 365 Exchange Online con PowerShell: una guida passo passo
Gestire Microsoft 365 con tutte le applicazioni utilizzando una GUI in un browser web può essere comodo, ma solo fino a un certo punto. Le due interfacce più utilizzate dai professionisti IT sono Exchange Admin Center e Office 365 Admin Center. Tuttavia, quando è necessario gestire centinaia di account Microsoft 365 in un’organizzazione, l’interfaccia della riga di comando (CLI) può essere una soluzione più efficiente. È possibile utilizzarla per applicare i comandi di Exchange Online non disponibili in Admin Center.
In qualità di amministratore, è possibile gestire Microsoft Exchange Server tramite l’interfaccia della riga di comando in PowerShell di Microsoft. Il problema è che i normali cmdlet utilizzabili in un ambiente Exchange Server on-premise non sono adatti a Exchange Online basato su cloud. È necessario installare i moduli Exchange Online Powershell per abilitare i cmdlet PowerShell in Office 365. In questo post spieghiamo i vari modi per connettere Exchange Online a PowerShell. L’utilizzo dei cmdlet in Exchange Online aiuta a semplificare la gestione, consentendo così di risparmiare tempo e fatica.
Preparazione dell’ambiente
Requisiti di sistema
Per connettere Exchange Online a Powershell, assicurati che il tuo sistema soddisfi i seguenti requisiti:
- Windows 7 SP1 o versioni desktop di Windows più recenti e Windows Server 2008 R2 SP1 o versioni server di Windows più recenti. Oltre a Windows Management Framework 3.0, 4.0 o 5.1, è obbligatorio che sia installato .NET Framework 4.5 o una versione successiva.
- Connessione Internet: aprire la porta TCP 80 per stabilire una connessione tra il computer locale e l’host di destinazione.
- L’utente corrente con Exchange Online PowerShell ha l’accesso abilitato. Gli account amministratori dispongono di questo accesso per impostazione predefinita.
È possibile abilitare l’accesso per connettersi a Exchange Online PowerShell per un account specifico con il seguente cmdlet:
Set-User -Identity user@domain.com -RemotePowerShellEnabled $true
Installazione del modulo PowerShell di Exchange Online
L’installazione del modulo PowerShell di Exchange Online è necessaria perché comprende cmdlet e consente quindi la gestione di Exchange per un tenant. In questa guida installeremo il modulo PowerShell di Exchange Online V2.
Tuttavia, è consigliabile verificare se il modulo Exchange Online è già installato sul computer client. A tal fine, eseguire il seguente cmdlet:
Get-Module -ListAvailable -Name ExchangeOnlineManagement
Se il modulo non è presente, procedere con l’installazione. È possibile installare il modulo PowerShell di Exchange Online con un unico comando PowerShell. Per avviare il processo, esegui Windows PowerShell come amministratore, quindi esegui il seguente cmdlet:
#Install Exchange Online Management Module
Install-Module -Name ExchangeOnlineManagement -Force
Nel caso in cui il sistema richieda di confermare l’installazione da un repository non attendibile, premi Y per procedere.
Se il modulo Exchange Online PowerShell non è presente nel sistema, viene visualizzato il seguente messaggio di errore:
Connect-ExchangeOnline: Il termine “Connect-ExchangeOnline” non è riconosciuto come nome di un cmdlet, una funzione, un file di script o un programma eseguibile.
È possibile aggiornare il modulo con questo cmdlet:
Update-Module ExchangeOnlineManagement
Configurazione della connessione
In questa guida vengono illustrati i due metodi principali utilizzati per connettere PowerShell a Exchange Online: impostazione manuale e automatica.
Impostazione manuale
Iniziamo con il metodo manuale per comprendere meglio il processo di configurazione:
- Apri Windows PowerShell e scegli una delle seguenti opzioni per procedere:
- Premi Avvia, digita cmd, quindi fai clic con il pulsante destro del mouse su Prompt dei comandi . Nel menu contestuale, seleziona Esegui come amministratore.
- OPPURE vai su Avvia > Windows PowerShell. Fai clic con il pulsante destro del mouse su Windows PowerShell, quindi seleziona Esegui come amministratore nel menu contestuale. L’esecuzione di PowerShell in modalità di amministrazione consente di eseguire cmdlet senza limitazioni.
- Gli script devono essere abilitati per utilizzare correttamente PowerShell. Per eseguire gli script, è necessario impostare il criterio su RemoteSigned. Eseguire questo comando per impostare il criterio di esecuzione:
Set-ExecutionPolicy RemoteSignedSi consiglia di eseguire questo cmdlet subito dopo aver avviato la configurazione di PowerShell per la gestione di Exchange Online e Microsoft 365. In caso contrario, i tentativi successivi di eseguire il comando
Import-PSSessionprodurranno il seguente errore:Import-PSSession : Impossibile caricare i file poiché l’esecuzione degli script è stata disabilitata su questo sistema. Fornire un certificato valido con cui firmare i file.
- Nel caso in cui il sistema richieda una conferma, premere Y per confermare la modifica del criterio. Inoltre, è possibile utilizzare il Unrestricted con questo cmdlet:
Set-ExecutionPolicy UnrestrictedPer impostazione predefinita, la modalità del criterio di esecuzione è Restricted.
- È necessario creare un oggetto di credenziali e fornire il nome utente e la password di amministratore nella finestra popup per abilitare l’accesso a Exchange Online. L’utente che ottiene l’accesso deve disporre delle autorizzazioni di amministratore globale di Microsoft 365.
$Credential=Get-Credential - Il sistema salva quindi le credenziali fornite come variabile $Credential da utilizzare nel comando seguente.
- Utilizzare il cmdlet New-PSSession per creare una sessione PowerShell remota. Eseguire quanto segue:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirectionNota: In questo cmdlet, impostiamo l’URL di destinazione del server cloud Exchange Online, che deve accettare la richiesta. Dopo aver eseguito il comando, i server cloud Microsoft 365 ti danno accesso al server virtuale Exchange Online associato al tuo attuale account Microsoft 365.
- Devi importare i cmdlet di Exchange Online PowerShell nella sessione corrente. Ecco il comando da utilizzare:
Import-PSSession $SessionDurante il processo di importazione, è possibile visualizzare la barra di avanzamento.
- Il seguente messaggio viene visualizzato dopo che il comando è stato completato con successo:

NOTA: Con l’autenticazione a più fattori (MFA) utilizzata per un account Microsoft 365, i cmdlet standard menzionati in precedenza non funzionano. Per connettere PowerShell a Exchange Online con MFA abilitato, eseguire quanto segue:
Connect-EXOPSSession -UserPrincipalName YOUR_UPNIn questo cmdlet, YOUR_UPN sta per nome utente principale, ovvero il nome dell’account Microsoft 365 che stai utilizzando. Potrebbe essere necessario installare un modulo diverso qui: Microsoft Modulo PowerShell remoto di Exchange Online.
Ricordare che questo modulo potrebbe non essere adatto all’esecuzione di script che richiedono molto tempo, poiché la sessione termina dopo un’ora di utilizzo. Inoltre, considera l’utilizzo di Indirizzi IP attendibili (ovvero gli indirizzi IP della tua organizzazione). Questo può aiutarti a bypassare l’autenticazione a più fattori quando ti connetti a Exchange Online PowerShell dalla rete della tua organizzazione.
- Dopo aver impostato la connessione a Microsoft 365 e Exchange Online, puoi iniziare a gestire il tuo ambiente cloud Office 365. È possibile eseguire un cmdlet per verificare se la connessione è attiva. Ad esempio, provare a visualizzare l’elenco delle cassette postali disponibili con questo comando:
Get-MailboxIl cmdlet successivo fornisce l’elenco dei comandi PowerShell disponibili per Exchange Online:
Get-Command -Module tmp* - Una volta terminato il lavoro con Exchange, chiudere la sessione. Questa pratica è consigliata sia per motivi di sicurezza che di ottimizzazione delle prestazioni. Ecco il cmdlet:
Remove-PSSession $SessionNOTA: Dopo l’esecuzione di questo comando non verrà visualizzato alcun messaggio. Per verificare se la sessione è stata rimossa correttamente, è possibile utilizzare lo stesso comando
Get-MailBox. Se la sessione è stata disconnessa, verrà visualizzato un errore che indica che non è possibile eseguire i cmdlet di Exchange Online.
Il numero di sessioni che è possibile aprire contemporaneamente è limitato. È possibile eseguire tre sessioni contemporaneamente e, se non si disconnette nessuna di esse, sarà necessario attendere la scadenza della sessione prima di connettersi a Exchange Online PowerShell con una nuova sessione da un’altra console PowerShell.
Configurazione automatizzata
Oltre all’approccio manuale, è possibile connettersi a PowerShell ed Exchange Online utilizzando le funzionalità di automazione di PowerShell. L’automazione riduce il numero di comandi da utilizzare, accelerando così il processo di configurazione.
Procedere come segue:
- Scarica lo script. Nel nostro esempio, il file di script si chiama ConnectExchangeOnlinePowerShell.ps1
- Individuare il file di script nella directory dopo la scarica. Lo script è disponibile all’indirizzo C:temp_win.
- Prima di eseguire lo script, impostare i criteri di esecuzione dello script su RemoteSigned utilizzando questo cmdlet:
Set-ExecutionPolicy RemoteSignedCiò consente di evitare il seguente errore:
Il file C:temp_winConnectExchangeOnlinePowerShell.ps1 non è firmato digitalmente. Non è possibile eseguire questo script sul sistema corrente.
Il Bypass criterio di esecuzione applicato consente inoltre di evitare questo problema. Ecco il cmdlet obbligatorio:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass - Conferma le modifiche nel criterio di esecuzione digitando Y.
- Ora puoi procedere con lo script. Se l’autenticazione a più fattori (MFA) non è abilitata per il tuo account Microsoft 365, lo script non richiederà argomenti aggiuntivi:
.ConnectExchangeOnlinePowerShell.ps1Se l’autenticazione a più fattori (MFA) è abilitata nel tuo ambiente Microsoft 365, utilizza il comando come segue:
.ConnectExchangeOnlinePowerShell.ps1 -MFA - Dopo aver impostato correttamente la connessione tra Exchange Online e PowerShell, puoi iniziare a utilizzare i cmdlet per gestire account utente, cassette postali e altri elementi, nonché flussi di lavoro. Ad esempio, con questo cmdlet è possibile ottenere l’elenco delle cassette postali disponibili:
Get-MailboxInoltre, è possibile utilizzare lo script per pianificare e automatizzare ulteriormente i flussi di lavoro. Ad esempio, connettersi a Exchange Online senza fornire credenziali. Lo script consente di aggiungere login e password come opzioni di esecuzione:
./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_passwordSi noti che fornire le password come testo normale nella riga di comando dello script può rappresentare un rischio per la sicurezza in caso di violazione dei dati.
- Il limite di non più di tre sessioni attive rimane invariato, quindi è consigliabile terminare la sessione dopo aver terminato il lavoro con Exchange Online PowerShell. Il cmdlet per terminare la sessione è il seguente:
./ConnectExchangeOnlinePowerShell.ps1 -Disconnect
Come gestire Exchange Online tramite PowerShell su MacOS
Esistono diversi modi per installare PowerShell su MacOS. Il metodo più comodo e semplice consiste nel scaricare il client direttamente da Microsoft . PowerShell supporta le CPU Apple Silicon nella versione 7.2 o successive.
Tieni presente che è necessario un Mac con almeno macOS11 Big Sur. Dopo aver installato il pacchetto PowerShell su un dispositivo di questo tipo, utilizza l’approccio di configurazione manuale o automatica descritto sopra per connettere PowerShell a Exchange Online.
Utilizzo di PowerShell con Exchange Online
Con i cmdlet di PowerShell è possibile ottimizzare il tempo e lo sforzo dedicati alla gestione di Exchange Online.
Alcuni dei cmdlet di base hanno il seguente aspetto:
New-Mailbox– per creare una nuova cassetta postale utenteSet-Mailbox– per modificare le impostazioni di una cassetta postale esistenteGet-Mailbox– a visualizzare informazioni sulle cassette postali disponibili nell’ambienteRemove-Mailbox– a eliminare una cassetta postale da Exchange Online
Per visualizzare l’elenco dei cmdlet PowerShell disponibili, utilizzare questo comando:
Get-command -Module ExchangeOnlineManagement
Infine, controllare questo esempio di script. Lo script consente di ottenere tutte le cassette postali da Exchange Online:
#Import PowerShell module for Exchange Online
Import-Module ExchangeOnlineManagement
#Connect to Exchange Online
Connect-ExchangeOnline -Credential (Get-Credential) -ShowBanner:$False
#Get All Mailboxes
Get-EXOMailbox | Format-table UserPrincipalName,DisplayName
#Disconnect Exchange Online
Disconnect-ExchangeOnline -Confirm:$False
Conclusione
Il collegamento di Exchange Online a PowerShell consente di gestire le caselle postali Exchange in modo rapido e comodo. Inoltre, è possibile utilizzare script per automatizzare azioni, modifiche e regolazioni per più account contemporaneamente, aumentando l’efficienza operativa.
Dato che Microsoft non offre strumenti di backup nativi per Exchange Online, Microsoft Teams, OneDrive e SharePoint Online, assicurati di utilizzare una soluzione di backup dedicata per prevenire la perdita di dati nel cloud. NAKIVO Backup & Replication è una soluzione universale per la protezione dei dati che consente di inviare backup dei dati di Microsoft 365 a diverse destinazioni di archiviazione, inclusi i cloud pubblici.