Come connettersi al servizio Exchange Online di Office 365 tramite PowerShell

Più spesso che non, Microsoft Office 365 e tutte le applicazioni incluse sono gestite tramite un browser web in un’interfaccia grafica per l’utente. Fondamentalmente, si utilizzano il Centro amministrativo di Office 365 e le interfacce web del Centro amministrativo di Exchange. Tuttavia, potresti aver bisogno di utilizzare l’interfaccia della riga di comando (CLI) per eseguire azioni di massa che si applicano a centinaia di account utente. Inoltre, potresti voler utilizzare i cmdlet di Exchange Online, che non sono disponibili nel Centro amministrativo.

Molti amministratori utilizzano PowerShell (fornito da Microsoft) per gestire Microsoft Exchange Server nell’interfaccia della riga di comando. Tuttavia, questi comandi standard per gli ambienti di Exchange Server in locale non funzionano per Exchange Online in esecuzione nel cloud di Microsoft 365. Per utilizzare Powershell con Office 365, è necessario installare appositi moduli PowerShell per connettersi a Office 365. Leggi questo post per scoprire i diversi metodi per connettersi a Exchange Online PowerShell.

Requisiti

Ci sono alcuni requisiti che devono essere soddisfatti per connettersi a Exchange Online PowerShell.

  • È necessario utilizzare PowerShell su Windows 7 SP1 o versioni più recenti per desktop Windows e Windows Server 2008 R2 SP1 o versioni più recenti per server Windows. Tieni presente che è necessario installare .NET Framework 4.5 o successivo oltre a installare una versione aggiornata di Windows Management Framework 3.0, 4.0 o 5.1.
  • È richiesta una connessione internet. La porta TCP 80 deve essere aperta per connettersi dalla tua macchina locale all’host di destinazione.
  • L’accesso a Exchange Online PowerShell deve essere abilitato per l’utente corrente (per impostazione predefinita, tale accesso è abilitato per gli amministratori).

È possibile abilitare manualmente l’accesso per connettersi a Exchange Online PowerShell per l’utente specifico con il comando:

Set-User -Identity [email protected] -RemotePowerShellEnabled $true

Principio di funzionamento

È possibile connettersi a Exchange Online PowerShell, ma questo processo è più complicato rispetto all’uso di PowerShell per la gestione di un server Exchange locale. Tuttavia, è possibile utilizzare la console integrata di PowerShell per gestire infrastrutture cloud remote. In questo caso, la console è chiamata PowerShell remoto o PowerShell Remoting. Il processo di avvio di una sessione di PowerShell remoto per Office 365 e Exchange Online è leggermente diverso. È necessario scaricare e installare componenti speciali prima di poter aprire una sessione remota di Office 365. Fortunatamente, i cmdlet necessari per avviare una sessione di PowerShell remoto di Exchange Online vengono scaricati automaticamente quando si crea una sessione di PowerShell remoto. Diversi set di cmdlet di PowerShell vengono utilizzati per gestire Microsoft Office 365 e Microsoft Exchange Online.

La principale motivazione dietro la connessione a Microsoft Exchange Online in PowerShell comporta quanto segue:

  • Creazione di una sessione remota su Exchange Online in PowerShell aperta sul proprio computer locale.
  • Fornitura di impostazioni di connessione, superamento dell’autenticazione.
  • Importazione dei cmdlet di PowerShell necessari per gestire Exchange Online in remoto.

Nel post di oggi sul blog, eseguiremo i cmdlet di PowerShell su Windows 10.

Configurazione manuale

Rivediamo prima il metodo manuale, per capire meglio il principio di configurazione.

  1. Apri Windows PowerShell. Puoi farlo con almeno due metodi.
    1. Clicca su Start, digita cmd, fai clic con il tasto destro sull’elemento Prompt dei comandi e seleziona Esegui come amministratore nel menu contestuale.
    2. Vai su Start > Windows PowerShell. Fai clic con il tasto destro su Windows PowerShell e seleziona Esegui come amministratore per assicurarti di poter eseguire comandi PowerShell senza restrizioni.
  2. Abilita l’esecuzione degli script (è meglio eseguire questo comando all’inizio della preparazione di PowerShell per gestire Exchange Online e Office 365), altrimenti otterrai un errore in futuro quando eseguirai il comando Import-PSSession:

    Import-PSSession: Impossibile caricare i file poiché l’esecuzione degli script è disabilitata su questo sistema. Fornire un certificato valido con cui firmare i file.

  3. Per eseguire gli script, è necessario impostare la policy di esecuzione su RemoteSigned.

    Set-ExecutionPolicy RemoteSigned

  4. Premere Y per confermare la modifica della policy se richiesto. È anche possibile utilizzare il comando Set-ExecutionPolicy Unrestricted per utilizzare la policy Unrestricted.

    Per impostazione predefinita, la modalità della policy di esecuzione è Restricted.

  5. Esegui il comando in PowerShell per ottenere le credenziali e inserisci il tuo nome utente/password amministratore nella finestra di popup per accedere a Exchange Online. L’utente deve avere le autorizzazioni amministrative globali in Office 365.

    $Credential=Get-Credential
    Le credenziali inserite saranno salvate nella variabile e utilizzate nel comando successivo come $Credential.

  6. Devi creare una sessione remota di PowerShell con il cmdlet New-PSSession e eseguire il seguente comando:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection

    Nota che in questo comando è impostato l’URL di destinazione del server Exchange Online in esecuzione nel cloud che deve accettare la richiesta. Dopo l’esecuzione del comando, i server cloud di Microsoft Office 365 ti forniranno accesso al server virtuale Exchange Online appropriato associato al tuo account.

  7. I cmdlet PowerShell di Exchange Online devono essere importati nella sessione corrente con il comando:

    Import-PSSession $Session

  8. Puoi vedere la barra di avanzamento durante la ricezione dei comandi.
  9. Dopo aver eseguito con successo il comando, vedrai il seguente messaggio.
    Nota:
    Se si utilizza MFA per il proprio account, i cmdlet standard spiegati sopra non funzioneranno. Se si desidera connettersi a Exchange Online in PowerShell utilizzando MFA, eseguire il seguente comando:

    Connect-EXOPSSession -UserPrincipalName IL_TUO_UPN

    Dove IL_TUO_UPN (nome utente principale) è il nome dell’account Office 365 che si sta utilizzando. Potrebbe essere necessario installare il modulo di PowerShell remoto di Exchange Online di Microsoft.

     Tieni presente che utilizzando questo modulo, la sessione termina dopo un’ora, il che potrebbe essere scomodo per l’esecuzione di script lunghi. Considera l’utilizzo di indirizzi IP attendibili (cioè gli indirizzi IP della tua organizzazione) per bypassare MFA quando ci si connette dalla rete della propria azienda a Exchange Online PowerShell. MFA (Multi-Factor-Authentication) è il metodo avanzato di autenticazione che aggiunge un secondo livello di sicurezza. Dopo aver inserito una password, il codice di conferma viene inviato al cellulare dell’utente e l’utente deve inserire il codice di conferma per verificare l’account e accedere ai servizi cloud di Office 365.

  10. Una volta connesso a Office 365 e Exchange Online, puoi gestire il tuo ambiente cloud di Office 365. Verifichiamo di essere connessi a Exchange Online correttamente e elenchiamo le caselle di posta degli utenti, ad esempio.

    Get-Mailbox

    Puoi elencare tutti i cmdlet disponibili per PowerShell di Exchange Online con il seguente comando:


    Get-Command -Module tmp*

    I nomi dei cmdlet di PowerShell di Exchange Online non vengono convertiti.

  11. Quando termini il tuo lavoro con Exchange 365, disconnetti la sessione. Questa è la pratica consigliata.

    Remove-PSSession $Session

    Purtroppo, non vengono visualizzati messaggi dopo l’esecuzione di questo comando. Puoi verificare se la sessione è disconnessa eseguendo il comando Get-MailBox. Se la sessione è disconnessa, riceverai l’errore che spiega che non puoi eseguire i cmdlet di Exchange Online dopo la disconnessione.

Perché dovresti disconnettere la sessione? Beh, semplicemente perché il numero di sessioni attive simultanee che possono essere aperte contemporaneamente è limitato a tre. Se apri tre sessioni di Exchange Online PowerShell contemporaneamente e non le disconnetti quando non sono in uso, dovrai aspettare che una di queste sessioni scada prima di poter ricollegarti a Exchange Online PowerShell da una nuova console di PowerShell.

Configurazione automatica

Ora che sai il principio di come connettersi a Exchange Online PowerShell manualmente, puoi utilizzare il metodo automatico. Il vantaggio di questo metodo è il minor numero di comandi che dovrai inserire.

  1. Scarica lo script dal sito web di Microsoft. Il nome dello script è ConnectExchangeOnlinePowerShell.ps1 in questo caso.
  2. Vai alla directory dove si trova lo script; nel nostro esempio, lo script è salvato in C:\temp_win\.
  3. Prima di eseguire lo script, modifica la policy di esecuzione dello script (allo stesso modo mostrato nel primo metodo), altrimenti otterrai l’errore:

    Il file C:\temp_win\ConnectExchangeOnlinePowerShell.ps1 non è firmato digitalmente. Non è possibile eseguire questo script nel sistema attuale.

    Puoi applicare la policy di esecuzione Ignora per evitare questo problema:


    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

  4. Digita Y per confermare il cambio della politica di esecuzione.
  5. Dopodiché, puoi eseguire lo script. Se non utilizzi MFA, esegui lo script senza argomenti aggiuntivi:

    .\ConnectExchangeOnlinePowerShell.ps1

    Se nel tuo ambiente Office 365 viene utilizzato MFA (Multi-Factor Authentication), prova il comando:


    .\ConnectExchangeOnlinePowerShell.ps1 -MFA

  6. Ora che ti sei collegato con successo a Exchange Online, puoi gestire gli account utente, le loro caselle di posta, ecc. Ad esempio, puoi elencare le caselle di posta dei tuoi utenti:

    Get-Mailbox

    Questo script può essere utilizzato per pianificare e automatizzare compiti. Ad esempio, puoi connetterti a Exchange Online senza inserire le credenziali nella finestra interattiva come mostrato sopra. Puoi inserire il tuo nome utente e la tua password nella riga di comando come opzioni di comando durante l’esecuzione dello script:


    ./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_password

    Tieni presente che inserire le password come testo normale nella riga di comando potrebbe non essere sicuro.

  7. Quando hai finito di lavorare con Exchange Online in PowerShell, non dimenticare di terminare la sessione:

    ./ConnectExchangeOnlinePowerShell.ps1 -Disconnect

Metodo Alternativo

Consideriamo un altro metodo che può essere utilizzato per connettersi a Exchange Online PowerShell. Questo metodo può essere considerato una modifica del primo metodo.

  1. Crea un nuovo profilo per PowerShell con la funzione:

    New-item -type file -force $profile

  2. Modifica il file di configurazione del profilo nell’editor di testo per aggiungere la funzione intitolata Connect-EXOnline:

    notepad $profile

  3. Aggiungi il seguente contenuto al file di configurazione del profilo di PowerShell e cambia [email protected] con il nome del tuo account, quindi salva il file di testo.

    Funzione Connect-EXOnline
    {
    $credentials = Get-Credential -Credential [email protected]
    Scrivi-Output “Recupero dei cmdlet di Exchange Online”
    $Session = New-PSSession -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -ConfigurationName Microsoft.Exchange -Credential $credentials `
    -Autenticazione Base -PermettiReindirizzamento
    Importa-PSSession $Session
    }

  4. Chiudi la finestra di PowerShell attuale e apri una nuova finestra di PowerShell come Amministratore. Esegui il comando per connetterti a Exchange Online PowerShell:

    Connect-ExOnline
    Inserisci la tua password nella finestra di popup.

  5. Quando hai finito di lavorare con Exchange Online PowerShell, termina la sessione con il comando:

    Get-PSSession | Remove-PSSession

Conclusion

Exchange Online PowerShell è un’ottima alternativa all’interfaccia web del Centro di amministrazione di Exchange. Con Office 365 PowerShell e Exchange Online PowerShell, è possibile eseguire operazioni e azioni in blocco con più oggetti utilizzando un singolo comando o script. L’articolo di blog di oggi ha coperto come connettersi a Exchange Online PowerShell utilizzando tre metodi, uno dei quali è automatizzato. Il principio di funzionamento di ciascun metodo è simile e consiste in tre passaggi principali: creare una sessione remota di PowerShell, autenticarsi e importare i cmdlet di Exchange Online PowerShell.

Un’importante raccomandazione è quella di disconnettere la sessione remota di PowerShell quando si finisce di lavorare con Exchange Online PowerShell per evitare una situazione in cui tutte le sessioni sono occupate e l’apertura di una nuova sessione remota di Exchange Online PowerShell non è possibile. Avere Exchange Server nel cloud è una soluzione affidabile, ma anche in questo caso è consigliabile eseguire un backup del server Exchange per proteggere i dati da cancellazioni accidentali e altri disastri.

Source:
https://www.nakivo.com/blog/how-to-connect-office-365-exchange-online-powershell/