Magic Quadrant™ per la gestione degli accessi privilegiati 2025: Netwrix riconosciuta per il quarto anno consecutivo. Scarica il report.

Piattaforma
Centro risorseBlog
Connettersi a Exchange Online PowerShell

Connettersi a Exchange Online PowerShell

Mar 31, 2025

Exchange Online PowerShell consente un'amministrazione sicura e automatizzata degli ambienti di posta Microsoft 365. Utilizzando il modulo EXO V2 con autenticazione moderna e MFA, gli amministratori possono gestire caselle di posta, permessi, reportistica e migrazioni su larga scala. Le opzioni basate su certificati e identità gestite supportano l'automazione, mentre le migliori pratiche come RBAC, TLS e gestione delle sessioni rafforzano la sicurezza e la conformità.

Introduzione a Exchange Online PowerShell

Exchange Online PowerShell è un'interfaccia di gestione a riga di comando per amministrare e automatizzare compiti in Exchange Online, che fa parte di Microsoft 365. Permette agli amministratori di gestire le caselle di posta degli utenti, configurare le impostazioni organizzative e eseguire operazioni in blocco in modo efficiente tramite scripting. Ecco alcuni vantaggi dell'utilizzo di PowerShell per la gestione di Exchange Online:

  • Scrivi script per automatizzare compiti ripetitivi, come la creazione di caselle di posta e l'assegnazione dei permessi.
  • Gestisci oggetti in blocco, come aggiornare o modificare più account utente, caselle di posta o gruppi in una sola esecuzione, nonché esportare e importare dati tramite file CSV.
  • Connettiti da remoto a Exchange Online da qualsiasi dispositivo supportato ed esegui compiti amministrativi in modo sicuro tramite sessioni crittografate.
  • Ottieni reportistica avanzata e auditing. Ad esempio, genera report personalizzati in formati CSV, Excel o HTML, e puoi audit mailbox access e azioni amministrative con filtri precisi.
  • Accesso a impostazioni nascoste o avanzate che non sono esposte nell'interfaccia web EAC.

Guida rapida all'auditing delle caselle di posta di Exchange Online

Scopri di più

Prerequisiti per la connessione a Exchange Online PowerShell

Per connetterti a Exchange Online PowerShell, devi soddisfare prerequisiti specifici.

Requisiti di sistema

  • Sistema Operativo: Windows 10, Windows 11 o Windows Server 2016/2019/2022
  • Windows PowerShell 5.1 o versione successiva
  • .NET Framework 4.7.2 o successivo

Requisiti di rete

  • Assicurati che il traffico HTTPS in uscita (TCP 443) sia consentito
  • È necessario abilitare TLS 1.2
  • Accesso a Internet e capacità di connettersi a outlook.office365.com, login.microsoftonline.com e graph.microsoft.com

Modulo richiesto

  • Modulo di gestione di Exchange Online

Requisiti di autenticazione

  • Per Microsoft Entra ID, l'account dovrebbe avere i permessi necessari, come:
  • Amministratore Globale
  • Amministratore di Exchange
  • Gli account con MFA attivato richiedono il modulo PowerShell di Exchange Online per l'autenticazione moderna

Permessi Richiesti

Il tuo account dovrebbe avere i ruoli RBAC (Role-Based Access Control) appropriati:

  • Gestione dell'organizzazione
  • Gestione dei destinatari

Come connettersi a Exchange Online PowerShell

I diversi metodi per connettersi a Exchange Online PowerShell sono:

Connect-ExchangeOnline Module (Metodo Moderno)

Puoi connetterti a Exchange Online utilizzando il modulo di gestione Exchange Online (EXO V2). Questo metodo è consigliato per le attività di amministrazione e gestione quotidiane. Supporta l'autenticazione moderna (OAuth) e MFA.

Azure Cloud Shell (Connessione basata su browser)

Questo metodo consente agli amministratori di utilizzare Exchange Online PowerShell direttamente dall'Azure Portal senza richiedere un'installazione locale. Exchange Online PowerShell è accessibile da qualsiasi dispositivo con un browser e dispone di moduli e strumenti preinstallati. Questo metodo è consigliato per gli amministratori che preferiscono gestire tramite browser o hanno un accesso limitato agli strumenti PowerShell localmente. Il percorso di accesso è: Azure Portal > Cloud Shell > PowerShell.

Exchange Online Remote PowerShell (Deprecated)

Questo metodo legacy che utilizza Remote PowerShell (protocollo WSMan) per connettersi a Exchange Online PowerShell. È deprecato e non è consigliato per nuovi deployment, ma può essere utilizzato per script legacy o sistemi che non supportano il più recente Exchange Online Management Module. Questo metodo non supporta MFA.

Utilizzando Service Principal (Autenticazione basata su certificato)

Questo metodo consente l'amministrazione non presidiata o basata su script tramite Service Principal Accounts e autenticazione basata su certificati. È raccomandato per l'automazione, le CI/CD Pipelines e i processi in background. Come prerequisito, richiede: registrazione dell'app Azure AD e configurazione del certificato.

Confronto dei Metodi di Connessione

Metodo

Ideale per

Supporta MFA

Supporta l'automazione

Connect-ExchangeOnline (EXO V2 Module)

Compiti amministrativi quotidiani

Azure Cloud Shell

Accesso rapido al browser

No

Remote PowerShell (WSMan)

Script legacy

No

Service Principal (Autenticazione con Certificato)

Automazione, CI/CD

No

Comprendere l'Autenticazione Moderna e i suoi Vantaggi

L'autenticazione moderna è un metodo di Identity Management che utilizza OAuth 2.0 e la libreria di autenticazione di Active Directory (ADAL) o la libreria di autenticazione Microsoft (MSAL) per accessi sicuri. Sostituisce i metodi di autenticazione tradizionali come l'autenticazione di base.

L'autenticazione moderna è il metodo consigliato e sicuro per connettersi a Exchange Online PowerShell poiché offre i seguenti vantaggi:

  • Migliora la sicurezza poiché utilizza OAuth 2.0 per l'autenticazione basata su token anziché trasmettere direttamente le credenziali.
  • Consente l'uso di MFA, aggiungendo un ulteriore strato di sicurezza.
  • Consente agli amministratori di applicare politiche basate sulla conformità del dispositivo, sulla localizzazione o sul livello di rischio, il che aiuta a limitare l'accesso alle risorse di Exchange Online in base a condizioni definite.
  • Integrazione senza soluzione di continuità con Microsoft Entra ID e fornitori di identità di terze parti, con supporto per il single sign-on (SSO).

Microsoft sta deprecando l'autenticazione di base, quindi la migrazione all'autenticazione moderna è fondamentale.

Requisiti per la connessione a Exchange Online PowerShell con o senza MFA

Ecco i requisiti per connettersi a Exchange Online PowerShell con o senza MFA.

Senza MFA (Autenticazione di base – Metodo legacy deprecato)

L'account Microsoft Entra ID non deve avere MFA abilitatoL'autenticazione di base deve essere ancora consentita (se non bloccata a livello di organizzazione)

Con MFA (Modern Authentication)

L'account Microsoft Entra ID deve avere la MFA configurataOAuth 2.0 deve essere supportato (predefinito in Exchange Online)

Guida passo dopo passo per la connessione

Ecco i passaggi principali per connettersi a Exchange Online PowerShell:

  1. Installare il modulo PowerShell di Exchange Online.
  2. Connettiti a Exchange Online utilizzando il cmdlet Connect-ExchangeOnline. Fornisci le tue credenziali di amministratore di Microsoft 365 Exchange quando richiesto.
  3. Una volta connessi all'ambiente Exchange Online, è possibile utilizzare i cmdlet disponibili nel modulo PowerShell di Exchange Online per gestire le impostazioni e gli oggetti di Exchange Online come caselle di posta, contatti e calendari.

Installa il modulo di gestione di Exchange Online

Il modulo Exchange Online Management può essere installato su sistemi Windows, Mac e Linux. Apri PowerShell come amministratore ed esegui il seguente comando per installare l'ultimo modulo Exchange Online Management:

Install-Module -Name ExchangeOnlineManagement -Force

Esegui il seguente cmdlet per verificare che il modulo Exchange Online Management sia installato:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Se installato correttamente, dovrebbe visualizzare i dettagli del modulo.

Il modulo PowerShell di Exchange Online utilizza l'autenticazione moderna per connettersi a tutti gli ambienti PowerShell relativi a Exchange.

Aggiorna il modulo

Per aggiornare il modulo esistente di Exchange Online Management, utilizzare il seguente cmdlet:

Update-Module ExchangeOnlineManagement

Importa il modulo

Carica il modulo nella tua sessione PowerShell utilizzando il seguente cmdlet:

Import-Module ExchangeOnlineManagement

Imposta la Policy di Esecuzione

Quando ci si connette a Exchange Online PowerShell, la policy di esecuzione impostata per PowerShell determina come gli script vengono eseguiti sul sistema. RemoteSigned è la policy raccomandata poiché garantisce che:

  • Gli script creati localmente possono essere eseguiti senza richiedere una firma digitale
  • Gli script scaricati da internet devono essere firmati da un editore affidabile

Utilizza il seguente cmdlet per impostare la policy di esecuzione su RemoteSigned:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Connetti utilizzando l'autenticazione di base (Deprecata)

Microsoft ha disabilitato permanentemente l'autenticazione di base per Exchange Online a partire da ottobre 2022. È stata sostituita dall'autenticazione moderna (OAuth 2.0).

Connettersi utilizzando l'Autenticazione Moderna

L'autenticazione moderna (OAuth 2.0) è il metodo consigliato e sicuro per connettersi a Exchange Online PowerShell. I diversi metodi di connessione sono:

Metodo


Autenticazione interattiva (prompt GUI)

Questo è il metodo di connessione predefinito per la maggior parte dei tenant, come i tenant commerciali standard di Microsoft 365. Utilizza questo cmdlet per connetterti utilizzando l'autenticazione moderna: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com Sostituisci admin@yourdomain.com con il tuo account amministratore di Exchange Online. Si aprirà una finestra di accesso; completa il processo di login, inclusa l'autenticazione a più fattori (MFA) se richiesta.

Autenticazione con Codice Dispositivo (Per Ambienti Senza GUI)

Se stai lavorando in un ambiente non-GUI, usa il parametro -Device: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -Device Copia il Codice Dispositivo fornito.Apri https://microsoft.com/devicelogin in un browser.Inserisci il Codice Dispositivo.Autenticati con il tuo account e completa l'MFA (se richiesto).

Connettiti con autenticazione basata su certificato (Non interattiva)

Per l'automazione o gli script non sorvegliati: Connect-ExchangeOnline -CertificateThumbprint “<CertificateThumbprint>” -AppId “<AppId>” -Organization “<YourTenant>” Sostituire: “<CertificateThumbprint>” con l'impronta digitale del vostro certificato, “<AppId>” con l'ID dell'app Microsoft Entra, “<YourTenant>” con il vostro dominio (come yourdomain.onmicrosoft.com).

Esempi di connessione per diversi ambienti Exchange Online (GCC, GCC High, DoD)

Gli ambienti Exchange Online diversi richiedono specifici URI di connessione e configurazioni quando si utilizza l'autenticazione moderna. Esempi di questi ambienti sono:

Metodo

Informazioni sulla connessione

Microsoft 365 GCC (Government Community Cloud)

Caso d'uso: clienti del governo degli Stati Uniti (GCC) Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com Sostituire admin@contoso.onmicrosoft.com con il proprio account amministratore di Exchange Online. Si aprirà una finestra di accesso; completare il processo di login, inclusa l'autenticazione a più fattori (MFA), se richiesta.

Microsoft 365 GCC High

Caso d'uso: clienti del governo degli Stati Uniti con requisiti di alta sicurezza Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovGCCHigh -ExchangeEnvironmentName – Specifica esplicitamente l'ambiente GCC High

Microsoft 365 DoD (Department of Defense)

Caso d'uso: Riservato ai tenant del Dipartimento della Difesa degli Stati Uniti (DoD) Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovDoD -ExchangeEnvironmentName: Imposta esplicitamente l'ambiente all'ambiente Office 365 US Government DoD

Utilizzando l'Autenticazione Multi-Fattore

Processo di connessione passo dopo passo con MFA abilitato

Connessione con Managed Identities

Utilizzare Managed Identities per connettersi a Exchange Online PowerShell consente un'autenticazione sicura e senza password in Microsoft Entra.

Cosa sono le Managed Identities?

Le identità gestite consentono alle risorse di Microsoft Entra di autenticarsi ai servizi supportati senza memorizzare le credenziali negli script o nel codice. Exchange Online supporta questa funzionalità per gli script non presidiati utilizzando Azure Automation o scenari simili.

Identità gestite assegnate dal sistema vs. Identità gestite assegnate dall'utente

Funzionalità

Assegnato dal sistema

Assegnato dall'utente

Legato a una risorsa

Collegato a una singola risorsa Microsoft Entra (come VM, Logic App). Viene eliminato quando la risorsa viene eliminata.

Può essere condiviso tra più risorse

Ambito di gestione

Gestito automaticamente per la sua risorsa

Gestito in modo indipendente e riutilizzabile

Caso d'uso

Adatto per scenari con una singola risorsa

Ideale per l'uso condiviso o multi-risorsa

Connettersi a Exchange Online PowerShell Utilizzando Managed Identities

Prerequisiti

  • Assicurati che la tua risorsa Azure (ad esempio, VM, Function App, App Service) abbia abilitato un'identità gestita assegnata dal sistema o dall'utente.
  • Assegna all'Identity Management il ruolo Microsoft Entra ID necessario per Exchange Online. Ad esempio:
  • Amministratore di Exchange
  • Global Reader o Global Administrator (se sono necessari permessi più ampi).
  • Installa e importa il modulo PowerShell di Exchange Online.

Come connettersi

Usa Connect-ExchangeOnline con il parametro -ManagedIdentity.

  • Esempio per un'identità gestita assegnata dal sistema:

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com

  • Esempio di un'identità gestita assegnata all'utente:
      # Specify the Client ID of the User-Assigned Managed Identity

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com -ManagedIdentityAccountId <UserAssignedManagedIdentityClientIdValue>
      

Per scenari non presidiati, come compiti di automazione o pipeline CI/CD:

  • Conservare lo script in una posizione sicura, come Azure Automation, Azure DevOps o una VM con Managed Identity abilitata.
  • Utilizza Managed Identities per autenticarti, evitando la necessità di gestire esplicitamente le credenziali.

Esempio di script:

      # Connect to Exchange Online

Connect-ExchangeOnline -ManagedIdentity

# Example Exchange Online commands

Get-Mailbox -RecipientTypeDetails UserMailbox | Select-Object DisplayName, PrimarySmtpAddress

# Disconnect the session

Disconnect-ExchangeOnline -Confirm:$false
      

Consulta l'articolo Use Azure managed identities to connect to Exchange Online PowerShell article di Microsoft per ulteriori informazioni.

Tutorial di Windows PowerShell Scripting (PDF) per Principianti

Scopri di più

Sintassi e Parametri Comuni di Connessione

Syntax

Il cmdlet Connect-ExchangeOnline ha la seguente sintassi:

Connect-ExchangeOnline

[[-ConnectionUri] <String>]

[[-AzureADAuthorizationEndpointUri] <String>]

[[-ExchangeEnvironmentName] <ExchangeEnvironment>]

[[-PSSessionOption] <PSSessionOption>]

[[-DelegatedOrganization] <String>]

[[-Prefix] <String>]

[[-CommandName] <String[]>]

[[-FormatTypeName] <String[]>]

[-AccessToken <String>]

[-AppId <String>]

[-BypassMailboxAnchoring]

[-Certificate <X509Certificate2>]

[-CertificateFilePath <String>]

[-CertificatePassword <SecureString>]

[-CertificateThumbprint <String>]

[-Credential <PSCredential>]

[-Device]

[-EnableErrorReporting]

[-InlineCredential]

[-LoadCmdletHelp]

[-LogDirectoryPath <String>]

[-LogLevel <LogLevel>]

[-ManagedIdentity]

[-ManagedIdentityAccountId <String>]

[-Organization <String>]

[-PageSize <UInt32>]

[-ShowBanner]

[-ShowProgress <Boolean>]

[-SigningCertificate <X509Certificate2>]

[-SkipLoadingCmdletHelp]

[-SkipLoadingFormatData]

[-TrackPerformance <Boolean>]

[-UseMultithreading <Boolean>]

[-UserPrincipalName <String>]

[-UseRPSSession]

[<CommonParameters>]

Parametri Comuni

Alcuni parametri di base sono:

Parametro

Descrizione

-UserPrincipalName

Specifica l'account che desideri utilizzare per connetterti a Exchange Online PowerShell. Questo parametro ti permette di evitare di inserire un nome utente nel prompt delle credenziali di autenticazione moderna.

-Credential

Specifica il nome utente e la password utilizzati per connettersi a Exchange Online PowerShell

-DelegatedOrganization

Specifica l'organizzazione cliente che desideri gestire quando agisci come amministratore delegato

-ConnectionUri

Specifica il punto di connessione di Exchange Online (utilizzato in ambienti specializzati come i tenant GCC o Cina)

-CertificateThumbprint

Si connette utilizzando un certificato anziché username/password. Un valore valido è il valore dell'impronta digitale del certificato.

-AppId

Utilizzato con -CertificateThumbprint per specificare un ID applicazione Microsoft Entra

-AccessToken

Specifica un token di accesso OAuth 2.0 per l'autenticazione

-Organizzazione

Specifica l'organizzazione quando ti connetti utilizzando CBA o identità gestita

Alcuni parametri opzionali sono:

Parametro

Descrizione

-ShowProgress

Specifica se mostrare o nascondere la barra di avanzamento dei cmdlet importati quando ti connetti. I valori validi sono $true e $false.

-SkipLoadingFormatData

Velocizza le connessioni saltando il caricamento dei file di formattazione e dei dati di tipo

-InlineCredential

Passa direttamente le credenziali nella riga di comando per evitare richieste quando ci si connette a Exchange Online PowerShell

-LogDirectoryPath

Specifica la posizione del file di registro

-LogLevel

Specifica il livello di registrazione. I valori validi sono Default e All.

-ConnectionTimeout

Specifica il valore di timeout (in secondi) per il tentativo di connessione

-Dispositivo

Di solito utilizzato su computer senza browser web. Non è necessario specificare un valore con questo interruttore.

-ManagedIdentity

Specifica che stai utilizzando un'identità gestita per connetterti. Non è necessario specificare un valore con questo interruttore.

Parametri specifici per connessioni in ambienti ad alta sicurezza:

Per ambienti GCC

Parametro

Descrizione

-ConnectionUri

Specifica l'endpoint per i tenant GCC

-EntraIDAuthorizationEndpointUri

Specifica il punto di terminazione dell'autorizzazione per GCC

-ExchangeEnvironmentName

Specifica esplicitamente l'ambiente GCC High

Per ambienti DoD

Parametro

Descrizione

-ConnectionUri

Punti all'endpoint specifico del DoD

-ExchangeEnvironmentName

Imposta esplicitamente l'ambiente su DoD

Automazione delle Connessioni

Autenticazione solo app per script non sorvegliati

L'autenticazione basata su certificati (CBA) o l'autenticazione solo app supporta scenari di script e automazione non presidiati utilizzando app Microsoft Entra e certificati autofirmati.

L'autenticazione solo app consente a servizi, script o lavori in background di accedere in modo sicuro alle API e alle risorse senza la necessità di interazione da parte dell'utente. Questo è ideale per scenari di automazione come compiti pianificati, sincronizzazione dati o elaborazione backend.

Passaggi per configurare l'autenticazione solo app

  1. Vai al tuo provider di identità, come Microsoft Entra ID, e registra l'app. Poi annota il Client ID, Tenant ID e genera un Client Secret o carica un certificato.
  2. Assegna i permessi API richiesti. Dovresti concedere permessi API di Applicazione invece di permessi API Delegati.
  3. Crea e configura un certificato X.509 autofirmato. Questo viene utilizzato per autenticare la tua applicazione contro Microsoft Entra ID, quando si richiede il token di accesso solo per l'app.
  4. Registra il certificato con la tua applicazione. Questo ti permetterà di utilizzare la chiave privata (file .pfx) o l'impronta digitale per l'autenticazione.
  5. Per assegnare i ruoli RBAC appropriati all'applicazione, utilizza uno qualsiasi dei ruoli predefiniti supportati in Microsoft Entra.

Ora puoi connetterti a Exchange Online PowerShell utilizzando i cmdlet forniti nella sezione Connect Using Modern Authentication.

Consulta l'articolo di Microsoft sull'autenticazione App-only per script non sorvegliati in Exchange Online PowerShell e Security & Compliance PowerShell per ulteriori informazioni.

Esempio di script PowerShell per l'autenticazione non presidiata

      $TenantId = “your-tenant-id”

$ClientId = “your-client-id”

$ClientSecret = “your-client-secret”

$Resource = “https://graph.microsoft.com/”

# Get token

$Body = @{

grant_type = “client_credentials”

client_id = $ClientId

client_secret = $ClientSecret

scope = “$Resource/.default”

}

$TokenResponse = Invoke-RestMethod -Uri “https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token” -Method Post -Body $Body

$AccessToken = $TokenResponse.access_token

Write-Output “Access Token: $AccessToken”
      

Connessione con Certificati

L'utilizzo di certificati per l'automazione offre un ulteriore strato di sicurezza rispetto ai segreti client. I certificati sono ideali per l'autenticazione solo app in script o lavori in background, poiché evitano di memorizzare segreti sensibili in testo semplice.

Guida passo dopo passo all'uso dei certificati per l'automazione

  1. Genera un certificato autofirmato. Puoi utilizzare strumenti come PowerShell, OpenSSL o qualsiasi altro strumento di gestione dei certificati per generarli.

Ecco come puoi generarla utilizzando PowerShell:

      # Generate a self-signed certificate

$cert = New-SelfSignedCertificate -DnsName “yourapp.domain.com” -CertStoreLocation “Cert:\CurrentUser\My” -KeyExportPolicy Exportable

# Export the certificate and private key as a PFX file

$certPath = “C:\path\to\certificate.pfx”

$certPassword = ConvertTo-SecureString -String “yourpassword” -Force -AsPlainText

Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
      
  • Registra l'applicazione con il tuo provider di identità, come Microsoft Entra ID. Devi anche caricare la chiave pubblica del certificato. Per farlo:
  • Vai alla sezione di registrazione dell'app.
  • Aggiungi una credenziale chiave utilizzando il file .crt (chiave pubblica).
  • Prendi nota dell'App ID e del Tenant ID.
  • L'applicazione utilizzerà la chiave privata per firmare un JWT per l'autenticazione solo app.

Migliori pratiche di sicurezza per connessioni basate su certificati

  • Conservare i certificati in una posizione sicura, come Azure Key Vault. Evitare di scrivere in modo fisso percorsi o chiavi negli script.
  • Utilizzate certificati con un breve periodo di validità. Ruotate i certificati prima che scadano.
  • Revoca immediatamente i certificati compromessi o inutilizzati.
  • Limitare l'accesso all'app e alle sue risorse utilizzando il principle of least privilege, e definire ambiti API precisi.
  • Registra l'utilizzo dei certificati per scopi di auditing.
  • Monitorare l'autenticazione delle app per rilevare accessi non autorizzati.
  • Utilizza la crittografia per proteggere i file di chiavi private, come i .pfx.
  • Proteggi le chiavi private con password complesse.
  • Richiedere MFA per la gestione delle configurazioni delle app. Questo può comportare l'applicazione della MFA per gli amministratori.

Gestione delle sessioni e disconnessione

Gestire e terminare correttamente le sessioni di Exchange Online PowerShell è fondamentale per mantenere la sicurezza, ottimizzare l'utilizzo delle risorse e prevenire l'esaurimento delle sessioni. Ecco alcune delle migliori pratiche che dovresti seguire.

Best Practices per la gestione delle sessioni di Exchange Online PowerShell

  • Utilizza il modulo di gestione Exchange Online (EXO V2) per un'autenticazione moderna e una maggiore sicurezza.
  • Accedi con un account che dispone solo dei permessi necessari per i tuoi compiti, come ruoli quali Exchange Admin e Security Admin.
  • Exchange Online ha un limite massimo di sessioni (3 sessioni contemporanee per utente). Assicurati di chiudere le sessioni dopo aver completato i compiti per evitare di raggiungere questo limite.
  • Siate consapevoli del timeout predefinito per le sessioni di Exchange Online (solitamente 15 minuti di inattività). Se i timeout per inattività sono frequenti, ottimizzate gli script per l'efficienza.
  • Esegui script in una singola sessione quando possibile. Evita di lasciare le sessioni inattive per lunghi periodi.

Migliori pratiche per terminare le sessioni di Exchange Online PowerShell

  • Disconnetti sempre la tua sessione quando hai terminato. Chiudere semplicemente la finestra di PowerShell senza disconnettersi può lasciare sessioni orfane. Disconnettiti sempre in modo esplicito.
  • Il cmdlet Remove-PSSession non pulisce completamente le sessioni di Exchange Online. Preferisci sempre:

Disconnect-ExchangeOnline -Confirm:$false

  • Se sospetti che delle sessioni orfane stiano consumando risorse, terminale utilizzando:

Get-PSSession | Remove-PSSession

  • Se una sessione scade, riconnettiti esplicitamente invece di presumere che la sessione sia ancora valida.

Abilita o disabilita l'accesso a Exchange Online PowerShell per un utente

È necessario disporre di privilegi amministrativi sufficienti, come il ruolo di Global Administrator o Exchange Administrator, per abilitare o disabilitare l'accesso degli utenti a Exchange Online PowerShell. Inoltre, è richiesta anche l'appartenenza ai gruppi di ruoli Organization Management o Recipient Management.

Disabilitare l'accesso a PowerShell influisce solo sulla capacità dell'utente di connettersi a Exchange Online PowerShell. Non influisce sul loro accesso ad altri servizi come il Microsoft 365 Admin Center.

Disabilita l'accesso per un utente

Quando si disabilita l'accesso a PowerShell, l'utente non sarà in grado di connettersi a Exchange Online PowerShell utilizzando le proprie credenziali. Ecco il cmdlet per disabilitare l'accesso:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $false

Abilita l'accesso per un utente

Quando si abilita l'accesso a PowerShell, l'utente può connettersi a Exchange Online PowerShell. Ecco il cmdlet per abilitare l'accesso:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $true

Controlla lo stato di accesso PowerShell di un utente

Per verificare se a un utente è abilitato o disabilitato l'accesso a PowerShell, utilizzare il seguente comando:

Get-User -Identity “<UserPrincipalName>” | Format-List EXOModuleEnabled

Per ottenere tutti gli utenti che non hanno accesso a Exchange Online PowerShell, utilizzare il seguente cmdlet:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $false’

Per ottenere tutti gli utenti che hanno accesso a Exchange Online PowerShell, utilizzare il seguente cmdlet:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $true’

Disconnettersi da Exchange Online

Se stai utilizzando Exchange Online PowerShell V2 (EXO V2):

Se ti sei connesso con il cmdlet Connect-ExchangeOnline, puoi disconnetterti utilizzando il seguente comando:

Disconnect-ExchangeOnline -Confirm:$false

Il parametro -Confirm è opzionale e viene utilizzato per sopprimere i prompt di conferma. Per impostazione predefinita, alcuni cmdlet potrebbero richiedere una conferma prima di procedere con un'azione (come disconnettere una sessione).

$false indica che non si desidera ricevere richieste di conferma. Questo consente al comando di eseguirsi automaticamente senza chiederti se sei sicuro di voler disconnettere.

Se stai utilizzando il modulo PowerShell di Exchange Online più datato:

Se stavi utilizzando la vecchia sessione remota di PowerShell (ad esempio, connettendoti con New-PSSession), puoi disconnetterti rimuovendo la sessione come segue:

Remove-PSSession $Session

In questo caso, $Session è la variabile dove hai memorizzato il tuo oggetto sessione PowerShell quando ti sei connesso per la prima volta.

Problemi di connessione comuni e risoluzione dei problemi

Quando si lavora con Exchange Online PowerShell, si possono incontrare problemi di connessione. Vediamo questi problemi e le loro soluzioni.

Modulo non installato o obsoleto

Si notano errori come:

  • Il termine 'Connect-ExchangeOnline' non è riconosciuto.
  • Il modulo 'ExchangeOnlineManagement' non è installato.

Soluzione:

Il modulo di gestione di Exchange Online (EXO V2) dovrebbe essere installato e aggiornato. Utilizza questo cmdlet per verificare che il modulo sia installato correttamente:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Credenziali errate o problemi di autenticazione

Potresti incontrare problemi come:

  • C'è un errore di autenticazione
  • Le richieste di MFA non vanno a buon fine

Soluzione:

  • Utilizza l'autenticazione moderna con le credenziali corrette.
  • Assicurati che il tuo account supporti MFA e che tu non sia bloccato.
  • Cancellare tutte le credenziali memorizzate nella cache.
  • Se il tuo account ha delle policy di accesso condizionale, verifica che consentano l'accesso a Exchange Online.

Esaurimento del limite di sessione

Troppe sessioni aperte ti impediscono di connetterti e potresti ricevere un errore:

  • Numero massimo di sessioni contemporanee superato.

Soluzione:

  • Disconnetti le sessioni inattive.
  • Assicurati di disconnetterti correttamente dopo ogni sessione.
  • Monitora le sessioni attive.

Proxy o Firewall che blocca la connessione

La connessione si blocca o fallisce a causa di una restrizione del proxy o del firewall, e si riceve questo errore:

  • Impossibile connettersi al server remoto.

Soluzione:

  • Assicurati che le impostazioni del proxy siano configurate correttamente:
  • Consenti gli endpoint di Exchange Online PowerShell attraverso il firewall:
  • *.outlook.office365.com
  • *.office365.com
  • *.microsoftonline.com
  • Testare la connettività con:

Test-NetConnection outlook.office365.com -Port 443

Versione TLS obsoleta

Potresti incontrare questo errore:

  • La connessione di base è stata chiusa: Si è verificato un errore imprevisto durante l'invio.

Soluzione:

  • Assicurati che il tuo sistema supporti TLS 1.2.
  • Controlla la tua versione di .NET (si raccomanda la versione 4.6.2 o successive).

Permessi mancanti

Si verificano errori come:

  • Accesso Negato. Non hai i permessi sufficienti.

Soluzione:

  • Il tuo account deve avere assegnato il ruolo di Exchange Administrator o un ruolo appropriato.

Versione di PowerShell non corretta

Potresti riscontrare errori di compatibilità se stai utilizzando una versione di PowerShell non supportata.

Soluzione:

  • Assicurati di utilizzare PowerShell 5.1 o versioni successive:
  • Per PowerShell Core (7.x), assicurarsi che il modulo EXO V2 sia compatibile.

Blocco account o account disabilitato

Si verificano errori come:

  • Il tuo account è stato bloccato o disabilitato.

Soluzione:

  • Verifica lo stato dell'account in Microsoft 365 Admin Center.
  • Sblocca l'account o reimposta la password se necessario.

Problemi di risoluzione DNS

Si verifica il seguente errore:

  • Il nome remoto non è stato possibile risolverlo.

Soluzione:

  • Verifica la risoluzione DNS per gli endpoint di Exchange Online.
  • Utilizza server DNS pubblici (ad esempio, 8.8.8.8 o 1.1.1.1) se la risoluzione DNS non riesce.

Errori relativi ai conflitti del modulo PowerShell

I conflitti di modulo in PowerShell possono causare vari errori, come cmdlet non riconosciuti, funzionalità sovrapposte o incongruenze di versione.

Potresti ricevere errori come:

  • Il termine ‘<cmdlet>’ non è riconosciuto.
  • Il cmdlet è disponibile in più moduli.
  • Riferimento cmdlet ambiguo.

Soluzione:

  • Controlla tutti i moduli attualmente caricati e le loro versioni utilizzando questo cmdlet:

Get-Module -ListAvailable

  • Se un cmdlet sta causando un conflitto, scopri a quale modulo appartiene il cmdlet:

Get-Command <Cmdlet-Name>

  • Importa esplicitamente il modulo richiesto e forza la versione corretta del modulo:

Import-Module -Name ExchangeOnlineManagement -RequiredVersion 2.x.x -Force

  • Se viene caricato un modulo obsoleto o in conflitto, rimuoverlo utilizzando:

Remove-Module -Name <Module-Name>

  • Se sono installate più versioni di un modulo, disinstalla le versioni più vecchie utilizzando:

Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 1.x.x

Errori di connessione REST API

Per gestire gli errori di connessione REST API in PowerShell, è necessario diagnosticare e risolvere problemi relativi all'autenticazione, alla connettività di rete o alle richieste configurate in modo errato.

Problema

Soluzione

Problemi di autenticazione Errore: Fallimenti nell'autenticazione o credenziali non valide.

Assicurati di utilizzare le credenziali corrette e l'autenticazione moderna (OAuth). Verifica che il tuo account abbia i permessi sufficienti (ad esempio, ruolo di Amministratore Exchange o simile). Utilizza il Modello di Applicazione Sicura o l'autenticazione basata su certificati se accedi tramite programmazione.

Problemi di Endpoint o Modulo Errore: Impossibile connettersi all'endpoint richiesto.

Verificate di utilizzare il modulo corretto di Exchange Online PowerShell V2 (ExchangeOnlineManagement). Aggiornate il modulo alla versione più recente: Controllate la connettività all'endpoint REST di Exchange Online utilizzando il seguente cmdlet. Dovrebbe risolvere e essere raggiungibile:
https://outlook.office365.com/powershell-liveid

Connettività di rete Errore: Timeout o errori di connessione rifiutata.

Gli endpoint richiesti non dovrebbero essere bloccati da firewall o proxy. Questi includono: *.office365.com *.microsoftonline.com Testare la connettività internetSe si è dietro un proxy aziendale, assicurarsi che il proxy sia configurato correttamente per PowerShell.

Scadenza Token Errore: scadenza del token di autenticazione durante la sessione.

Utilizza Connect-ExchangeOnline con una sessione persistente, come mostrato di seguito: Connect-ExchangeOnline -UserPrincipalName <tua-email-amministratore> -ShowProgress $true Aggiorna la tua sessione se il token scade utilizzando il seguente cmdlet: Disconnect-ExchangeOnline Connect-ExchangeOnline

Problemi del protocollo TLS/SSL Errore: errori TLS durante la connessione.

Assicurati che TLS 1.2 sia abilitato

Interruzioni del servizio Errore: Servizio non disponibile o connettività intermittente.

Controlla il Microsoft 365 Service Health Dashboard per eventuali problemi in corso.

Errori HTTP Questi errori si verificano quando il server restituisce un codice di stato HTTP che indica un fallimento. Codici Comuni: 400 Bad Request: La richiesta è malformata (ad esempio, JSON o parametri non validi)401 Unauthorized: Credenziali di autenticazione non valide o mancanti403 Forbidden: L'accesso è negato anche se l'autenticazione è corretta404 Not Found: L'endpoint o la risorsa richiesta non esiste500 Internal Server Error: Un problema sul server API

Assicurati che il payload e gli header rispettino i requisiti della documentazione API. Verifica le chiavi API, i token o altre credenziali. Assicurati che il tuo account abbia i diritti di accesso alla risorsa richiesta. Utilizza log o uno strumento come Postman per controllare i dati grezzi della richiesta/risposta.

Errori SSL/TLS Le connessioni sicure (HTTPS) possono fallire a causa di problemi con i certificati.

Assicurati che il certificato SSL del server sia valido e affidabile. Per i test locali, puoi ignorare la validazione SSL, ma evita ciò in produzione. Assicurati che le tue librerie client (ad esempio, Python requests, Node.js https) siano aggiornate per supportare le versioni moderne di TLS.

Errori di timeout Si verificano quando il server API non risponde entro il lasso di tempo previsto.

Modificate il parametro di timeout nel vostro client API per aumentare le impostazioni di timeout.Evitate di inviare payload eccessivamente grandi o query lente.Contattate il fornitore dell'API se i timeout sono frequenti poiché potrebbero esserci problemi di carico del server.

Limitazione della frequenza e quote Le API spesso hanno limiti di utilizzo, che possono portare a errori quando superati. Errore: HTTP 429 Too Many Requests

Controlla i limiti di frequenza. Consulta la documentazione API per i limiti delle richieste. Implementa il Throttling per distribuire le richieste in modo da rispettare i limiti di frequenza. Contatta il fornitore dell'API per richiedere quote più elevate.

Cmdlet PowerShell principali per Exchange Online

Per ottenere un elenco di tutti i cmdlet di PowerShell di Exchange Online disponibili, utilizzare il seguente cmdlet:

Get-command -Module ExchangeOnlineManagement

Ecco una rapida panoramica dei principali cmdlet di Exchange Online, tra cui Get-Mailbox, Get-EXOMailboxStatistics, e altri, per gestire efficacemente caselle di posta, utenti e relative configurazioni.

Get-Mailbox

Questo cmdlet recupera informazioni sulle caselle di posta in Exchange Online. È possibile visualizzare anche caselle di posta specifiche, come caselle di posta utente, caselle di posta condivise, ecc.

Sintassi

Get-Mailbox [-Identity] <String> [-RecipientTypeDetails <RecipientTypeDetails>] [altri parametri]

Esempi di Utilizzo Comune

  • Ottenere tutte le caselle di posta:

Get-Mailbox -ResultSize Unlimited

  • Ottenere tutte le caselle di posta condivise:

Get-Mailbox -RecipientTypeDetails SharedMailbox

  • Filtra le caselle di posta per dominio:

Get-Mailbox -Filter “EmailAddress -like ‘*@domain.com'”

Get-EXOMailboxStatistics

Questo cmdlet recupera statistiche dettagliate sulle caselle di posta in Exchange Online, fornendo informazioni come la dimensione della casella di posta, il conteggio degli elementi e l'ultimo accesso.

Sintassi

Get-EXOMailboxStatistics [-Identity] <String>

Esempi di Utilizzo Comune

  • Ottenere le statistiche della casella di posta per un utente:

Get-EXOMailboxStatistics -Identity user@domain.com

  • Recupera le dimensioni di tutte le caselle di posta:

Get-EXOMailboxStatistics | Select DisplayName, ItemCount, TotalItemSize

  • Ottieni caselle di posta con dimensioni superiori a una specifica soglia:

Get-EXOMailboxStatistics | Where-Object { $_.TotalItemSize -gt 10GB }

Get-MailboxStatistics

Questo cmdlet è simile a Get-EXOMailboxStatistics ma funziona con ambienti Exchange on-premises o ibridi. Fornisce dettagli sulla dimensione della casella di posta e sul conteggio degli elementi.

Sintassi

Get-MailboxStatistics [-Identity] <String>

Esempi di Utilizzo Comune

  • Ottenere statistiche per un utente specifico:

Get-MailboxStatistics -Identity “user@domain.com”

  • Ottenere le dimensioni di tutte le caselle di posta e gli ultimi orari di accesso:

Get-MailboxStatistics | Select DisplayName, LastLogonTime, TotalItemSize

Get-MailboxPermission

Questo cmdlet recupera i permessi assegnati a una casella di posta, inclusi gli accessi delegati.

Sintassi

Get-MailboxPermission [-Identity] <String>

Esempi di Utilizzo Comune

  • Visualizza tutti i permessi per una casella di posta:

Get-MailboxPermission -Identity user@domain.com

  • Filtro per permessi non predefiniti:

Get-MailboxPermission -Identity “user@domain.com” | Where-Object { $_.IsInherited -eq $false }

Set-Mailbox

Questo cmdlet modifica le impostazioni della casella di posta, come i limiti di quota, l'inoltro e l'attivazione delle funzionalità.

Syntax

Set-Mailbox [-Identity] <String> [-Parameters]

Esempi di Utilizzo Comune

  • Abilita l'inoltro della casella di posta:

Set-Mailbox -Identity “user@domain.com” -ForwardingSMTPAddress “forwardto@domain.com” -DeliverToMailboxAndForward $true

  • Modifica quota casella di posta:

Set-Mailbox -Identity “user@domain.com” -ProhibitSendQuota 50GB

New-Mailbox

Questo cmdlet crea una nuova casella di posta per un utente in Exchange Online. Questo cmdlet può essere utilizzato per vari scenari, inclusa la creazione di caselle di posta per utenti singoli, caselle di posta condivise e caselle di posta risorse come caselle di posta per stanze o attrezzature.

Sintassi

New-Mailbox -Name <Name> -MicrosoftOnlineServicesID <UserPrincipalName> -Password (ConvertTo-SecureString -String “<Password>” -AsPlainText -Force)

Esempi di Utilizzo Comune

  • Crea una casella di posta elettronica per l'utente:

New-Mailbox -Name “John Doe” -MicrosoftOnlineServicesID “johndoe@domain.com” -Password (ConvertTo-SecureString -String “P@ssw0rd!” -AsPlainText -Force)

  • Crea una casella di posta condivisa:

New-Mailbox -Shared -Name “Support Team” -MicrosoftOnlineServicesID “support@domain.com”

  • Crea una casella di posta per la sala:

New-Mailbox -Room -Name “Sala Conferenze 1” -MicrosoftOnlineServicesID conference1@domain.com

  • Crea una casella di posta condivisa per un team:

New-Mailbox -Shared -Name “HR Team” -MicrosoftOnlineServicesID “hr@domain.com” -Alias “HRTeam”

Remove-Mailbox

Questo cmdlet elimina una casella di posta da Exchange Online. Questa azione può essere applicata a vari tipi di caselle di posta, inclusi caselle di posta utente, caselle di posta condivise e caselle di posta risorse (come caselle di posta per stanze o attrezzature).

Sintassi

Remove-Mailbox -Identity <MailboxIdentity>

Esempi di Utilizzo Comune

  • Elimina una casella di posta elettronica dell'utente (eliminazione temporanea, rendendola recuperabile entro il periodo di conservazione):

Remove-Mailbox -Identity “johndoe@domain.com”

  • Elimina definitivamente una casella di posta (elimina senza fornire un periodo di conservazione):

Remove-Mailbox -Identity “johndoe@domain.com” -Permanent

  • Elimina solo una cassetta postale di archivio (lascia intatta la cassetta postale principale per l'utente specificato):

Remove-Mailbox -Identity “johndoe@domain.com” -Archive

Get-MailTrafficSummaryReport

Questo cmdlet recupera un riepilogo del traffico di posta per la tua organizzazione (disponibile negli ambienti Microsoft 365).

Sintassi

Get-MailTrafficSummaryReport [-StartDate] <DateTime> [-EndDate] <DateTime>

Esempio di utilizzo comune

  • Ottieni il traffico di posta degli ultimi 7 giorni:
      $StartDate = (Get-Date).AddDays(-7)

$EndDate = Get-Date

Get-MailTrafficSummaryReport -StartDate $StartDate -EndDate $EndDate
      

Search-Mailbox

Questo cmdlet cerca contenuti specifici in una casella di posta o in più caselle di posta.

Syntax

Search-Mailbox [-Identity] <String> [-SearchQuery <Query>] [-TargetMailbox <String>]

Esempi di Utilizzo Comune

  • Cerca email contenenti una parola chiave specifica:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Subject:’Invoice'”

  • Copia i risultati della ricerca in un'altra casella di posta:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Keyword” -TargetMailbox “admin@domain.com” -TargetFolder “RisultatiRicerca”

Get-MailboxAutoReplyConfiguration

Questo cmdlet recupera le impostazioni di risposta automatica (fuori sede) per una casella di posta.

Syntax

Get-MailboxAutoReplyConfiguration [-Identity] <String>

Esempio di Utilizzo Comune

  • Ottieni le impostazioni di risposta automatica per un utente specifico:

Get-MailboxAutoReplyConfiguration -Identity “user@domain.com”

Get-Recipient

Questo cmdlet recupera tutti i destinatari (caselle di posta, gruppi, contatti, ecc.).

Sintassi

Get-Recipient [-Filter] <String>

Esempi di Utilizzo Comune

  • Ottieni tutti i destinatari:

Get-Recipient

  • Filtra per tipi specifici di destinatari:

Get-Recipient -RecipientTypeDetails MailUser

Filtri Cmdlet

Utilizza i filtri per restringere i risultati in base ad attributi specifici.

Syntax

I filtri sono racchiusi tra { } e utilizzano una struttura proprietà operatore valore:

-Filter {Property -Operator ‘Value’}

Esempio

Get-Mailbox -Filter {DisplayName -like “*Test*”}

Operatori Comuni

  • -eq: Uguale
  • -ne: Non uguale
  • -like: Corrispondenza con carattere jolly (* per zero o più caratteri)
  • -notlike: Negazione di -like
  • -gt: Maggiore di
  • -lt: Meno di

Esempi di utilizzo dei filtri con i Cmdlet

  • Recupera caselle di posta per un dominio specifico

Get-Mailbox -Filter {EmailAddresses -like ‘*@example.com’}

  • Trova caselle di posta create dopo una data specifica

Get-Mailbox -Filter {WhenCreated -gt ‘2023-01-01’}

  • Ottenere caselle di posta con specifici modelli di nome visualizzato

Get-Mailbox -Filter {DisplayName -like ‘*Test*’}

  • Ottenere caselle di posta disabilitate

Get-Mailbox -Filter {AccountDisabled -eq $true}

Esempi di combinazione di condizioni multiple

Puoi combinare i filtri utilizzando operatori logici come -and e -or.

  • Ottieni utenti con UPN specifico e Nome visualizzato

Get-Mailbox -Filter {UserPrincipalName -like ‘*@example.com’ -and DisplayName -like ‘*John*’}

  • Trova caselle di posta abilitate ma oltre una soglia di dimensione

Get-Mailbox -Filter {AccountDisabled -eq $false -and ProhibitSendQuota -gt 10GB}

Esempi di filtraggio con Pipeline

I filtri possono anche essere combinati con Where-Object per un filtraggio avanzato.

  • Filtra caselle di posta per attributo personalizzato

Get-Mailbox | Where-Object { $_.CustomAttribute1 -eq ‘Value1’ }

  • Ottieni caselle di posta attive collegate negli ultimi 30 giorni

Get-MailboxStatistics | Where-Object { $_.LastLogonTime -gt (Get-Date).AddDays(-30) }

Configurazioni avanzate

  • Utilizza Select-Object per affinare l'output e mostrare solo le proprietà pertinenti.

Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress

  • Esporta i risultati in CSV per la creazione di report.

Get-Mailbox | Export-Csv -Path “Mailboxes.csv” -NoTypeInformation

  • Il limite predefinito è di 1000 risultati; utilizzare -ResultSize Unlimited per recuperare tutti gli elementi.

Esegui la migrazione a Exchange Online utilizzando PowerShell

La migrazione a Exchange Online tramite PowerShell comporta diversi passaggi, tra cui la preparazione dell'ambiente on-premises, la configurazione dei punti di migrazione e la gestione del processo di migrazione.

Prerequisiti

Prima di eseguire la migrazione, assicurati di avere:

  • Un'attiva sottoscrizione a Microsoft 365 o Office 365 con Exchange Online.
  • Credenziali di amministratore sia per il server Exchange on-premises che per Exchange Online.
  • Il modulo PowerShell di Exchange Online V2 (EXO V2) è stato installato.
  • La configurazione di Exchange Online (Hybrid) viene impostata se si utilizza la migrazione ibrida.

Migrazione ibrida (per organizzazioni con Exchange on-premises ed Exchange Online)

In un ambiente ibrido, puoi migrare le caselle di posta mantenendo la coesistenza tra caselle di posta on-premises e basate su cloud.

  1. Installate e configurate l'Hybrid Configuration Wizard (HCW).

Lo Hybrid Configuration Wizard (HCW) è lo strumento principale per configurare un ambiente Exchange ibrido. Garantisce che il tuo server Exchange on-premises sia pronto per la coesistenza ibrida con Exchange Online. Puoi scaricarlo ed eseguirlo dal Exchange Admin Center (EAC).

  • Preparare il server Exchange on-premises:
  • Esegui il cmdlet Get-ExchangeServer per assicurarti che sia utilizzata la versione corretta.
  • Esegui il cmdlet New-RemoteMailbox per creare una casella di posta remota per gli utenti in fase di migrazione.
  • Avvia una migrazione creando un batch di migrazione utilizzando il cmdlet New-MigrationBatch:

New-MigrationBatch -Name “MigrationBatch” -SourceEndpoint <OnPremisesExchangeEndpoint> -TargetEndpoint <ExchangeOnlineEndpoint> -MailboxList <MailboxesToMigrate> -AutoStart -AutoComplete

Sostituire i segnaposto:

  • <OnPremisesExchangeEndpoint> – L'endpoint per il tuo server Exchange on-premises
  • <ExchangeOnlineEndpoint> – L'endpoint per Exchange Online
  • <MailboxesToMigrate> – L'elenco delle caselle di posta da migrare
  • Per monitorare il processo di migrazione:

Get-MigrationBatch | Get-MigrationUser

  • Una volta terminata la migrazione, puoi completarla utilizzando:

Set-MigrationBatch -Identity “MigrationBatch” -Complete

Migrazione Cutover (per piccoli ambienti, tipicamente meno di 150 caselle di posta)

Nella migrazione di cutover, tutte le cassette postali vengono migrate da Exchange on-premises a Exchange Online in un unico batch.

  1. Utilizza il cmdlet New-MigrationEndpoint per creare un endpoint per il server Exchange on-premises:

New-MigrationEndpoint -Name “CutoverEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Utilizza il cmdlet New-MigrationBatch per creare un batch di migrazione per tutte le caselle di posta:

New-MigrationBatch -Name “CutoverMigrationBatch” -SourceEndpoint “CutoverEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Utilizza il cmdlet Get-MigrationBatch per monitorare la migrazione:

Get-MigrationBatch “CutoverMigrationBatch” | Get-MigrationUser

  • Dopo il completamento della migrazione, è possibile completarla utilizzando il cmdlet Set-MigrationBatch:

Set-MigrationBatch -Identity “CutoverMigrationBatch” -Complete

Migrazione per fasi (per ambienti di medie dimensioni)

Nella migrazione per fasi, le caselle di posta vengono migrate in più tappe (tipicamente in lotti) dall'Exchange locale all'Exchange Online.

  1. Crea un endpoint per l'Exchange on-premises:

New-MigrationEndpoint -Name “StagedEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Per migrare le cassette postali in fasi, crea un batch di migrazione utilizzando il cmdlet New-MigrationBatch:

New-MigrationBatch -Name “StagedMigrationBatch” -SourceEndpoint “StagedEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Monitora la migrazione utilizzando:

Get-MigrationBatch “StagedMigrationBatch” | Get-MigrationUser

  • Una volta completata la migrazione, finalizzala:

Set-MigrationBatch -Identity “StagedMigrationBatch” -Complete

Migliori pratiche di sicurezza

Garantire connessioni sicure

Utilizzare metodi di autenticazione sicuri

Sfrutta l'autenticazione moderna con OAuth invece dell'autenticazione di base. Devi anche abilitare l'autenticazione a più fattori (MFA) per tutti gli account utente che accedono a Exchange Online.

Utilizzare le politiche di Conditional Access

Configura l'Accesso Condizionale in Microsoft Entra per imporre restrizioni come la località, la conformità del dispositivo e i livelli di rischio dell'utente. Assicurati di bloccare o limitare l'accesso da località sconosciute o rischiose.

Limitare l'accesso a PowerShell

Utilizza il Controllo di Accesso Basato sui Ruoli (RBAC) per limitare l'accesso a PowerShell solo agli utenti che ne hanno bisogno. Come ulteriore precauzione, disabilita il PowerShell remoto per gli account che non richiedono accesso amministrativo.

Applica la crittografia TLS

Assicurati che tutte le connessioni a Exchange Online utilizzino TLS 1.2 o superiore. Dovresti anche eseguire regolarmente audit dei sistemi per confermare la conformità con i protocolli di crittografia moderni.

Utilizza Privileged Access Workstations (PAWs)

Limitare i compiti amministrativi a workstation isolate e sicure per ridurre l'esposizione a malware o attacchi.

Utilizzare i Token di Applicazione Sicuri

Per gli script non sorvegliati, sostituire le credenziali utente con registrazioni di app sicure in Microsoft Entra ID.

Gestisci le autorizzazioni utente e il controllo degli accessi in Exchange Online

Implementare il Controllo degli Accessi Basato sui Ruoli (RBAC)

Assegna ruoli predefiniti agli utenti basandoti sul principio del privilegio minimo necessario. Assegna ruoli ampi come Amministratore Globale solo quando è assolutamente necessario.

Monitorare e rivedere regolarmente i permessi

Eseguire periodicamente audit dei permessi e rimuovere gli accessi non necessari. Come pratica di routine, utilizzare i report del Microsoft 365 Security & Compliance Center per esaminare i log di accesso.

Separare i ruoli amministrativi

Utilizzare account separati per le attività amministrative e le attività quotidiane degli utenti. Ancora meglio, assegnare ruoli diversi per diverse funzioni amministrative come la gestione delle caselle di posta e la gestione della conformità.

Utilizza l'Accesso Just-in-Time (JIT)

Implementare politiche di JIT access utilizzando Microsoft Entra ID Privileged Identity Management (PIM) per fornire permessi elevati temporanei.

Abilita l'Auditing delle caselle di posta

Abilita l'audit per tutte le caselle di posta per tracciare le modifiche e rilevare accessi non autorizzati.

Raccomandazioni per l'uso sicuro di PowerShell negli ambienti di produzione

Proteggi i tuoi script

Evitate di inserire le credenziali in modo fisso; utilizzate meccanismi di archiviazione sicuri come Azure Key Vault o Windows Credential Manager. Utilizzate anche script parametrizzati e una gestione sicura degli input per evitare vulnerabilità da iniezione.

Monitorare e registrare l'attività di PowerShell

Abilita il logging di PowerShell (log di modulo, blocco script e trascrizioni). Puoi anche integrare il logging con un sistema SIEM per il monitoraggio in tempo reale.

Utilizzare script firmati

Firma gli script PowerShell con un certificato affidabile per garantirne l'integrità. Per supportarlo, imposta la politica di esecuzione di PowerShell su AllSigned poiché consente solo l'esecuzione di script firmati.

Esegui PowerShell con il minimo privilegio

Evitate di utilizzare account con permessi elevati in modo non necessario. Piuttosto, usate permessi granulari per compiti specifici.

Mantieni aggiornati PowerShell e i Moduli

Aggiornate regolarmente PowerShell all'ultima versione per affrontare le vulnerabilità di sicurezza. Non solo, aggiornate anche il modulo di gestione di Exchange Online per sfruttare le ultime funzionalità e correzioni.

Limitare l'Accesso alla Rete

Limitare l'accesso agli endpoint di Exchange Online a indirizzi IP noti utilizzando regole del firewall o Microsoft Entra ID Named Locations.

Cifrare i dati sensibili

Utilizza SecureString o altri metodi di crittografia per memorizzare e trasmettere dati sensibili in modo sicuro.

Netwrix Auditor for Exchange

Conclusione

PowerShell per Exchange Online offre potenti capacità per gestire e automatizzare compiti amministrativi, permettendo agli amministratori di gestire operazioni complesse come aggiornamenti di utenti in blocco, reportistica e modifiche alla configurazione. Adottando l'autenticazione moderna, inclusi OAuth e MFA, le organizzazioni possono proteggere l'accesso a Exchange Online. L'automazione tramite PowerShell minimizza lo sforzo manuale, riduce gli errori umani e migliora la coerenza operativa complessiva e la scalabilità.

Per configurazioni avanzate e un apprendimento più approfondito, visita la documentazione ufficiale di Microsoft, i moduli di formazione di PowerShell e i forum della comunità.

Documentazione Microsoft

FAQ

Come connettersi a Exchange Online PowerShell passo dopo passo?

Connettersi a Exchange Online PowerShell è semplice se segui la sequenza corretta. Prima di tutto, assicurati di avere il modulo Exchange Online PowerShell installato eseguendo Install-Module -Name ExchangeOnlineManagement in una sessione PowerShell elevata. Una volta installato, utilizza Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com per stabilire la connessione. Ti verrà richiesta l'autenticazione a più fattori se è abilitata sul tuo account. Dopo un'autenticazione riuscita, verifica la tua connessione con Get-Mailbox -ResultSize 1 per testare le funzionalità di base. Ricorda sempre di disconnetterti utilizzando Disconnect-ExchangeOnline quando hai terminato per mantenere le migliori pratiche di sicurezza.

Accesso a Exchange Online PowerShell negato – come risolvere?

Gli errori di accesso negato derivano tipicamente da permessi insufficienti o problemi di autenticazione. Inizia verificando che il tuo account abbia i ruoli amministrativi necessari di Exchange Online – come minimo, ti servono i permessi di Exchange Administrator o Global Administrator. Se i ruoli sono corretti, controlla se la tua organizzazione utilizza politiche di Conditional Access che potrebbero bloccare le connessioni PowerShell. Elimina eventuali credenziali memorizzate utilizzando Remove-StoredCredential e prova a riconnetterti. Per problemi persistenti, assicurati di utilizzare l'ultima versione del modulo ExchangeOnlineManagement, poiché le versioni più vecchie potrebbero avere problemi di compatibilità con i requisiti di autenticazione moderni.

Non riesco a connettermi a Exchange Online PowerShell – quali sono le soluzioni comuni?

I fallimenti di connessione rientrano solitamente in tre categorie: problemi di autenticazione, problemi di rete o conflitti di moduli. Prima di tutto, verifica di utilizzare la sintassi corretta: Connect-ExchangeOnline -UserPrincipalName piuttosto che metodi di connessione deprecati. Controlla la tua connettività di rete e le impostazioni del firewall – Exchange Online richiede l'accesso a specifici endpoint Microsoft. Se ti trovi dietro un proxy aziendale, configura PowerShell per utilizzare le impostazioni del tuo proxy. I conflitti di moduli possono verificarsi quando hai installati contemporaneamente sia i vecchi moduli MSOnline sia il nuovo modulo ExchangeOnlineManagement. Disinstalla i moduli legacy e utilizza il modulo unificato ExchangeOnlineManagement per un'esperienza più pulita.

Come installare il modulo PowerShell di Exchange Online?

Installare il modulo PowerShell di Exchange Online richiede solo un comando, ma è fondamentale soddisfare i prerequisiti. Esegui PowerShell come amministratore ed esegui Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber. Il parametro -Force assicura di ottenere l'ultima versione, mentre -AllowClobber gestisce eventuali conflitti con cmdlet esistenti. Se incontri errori di policy di esecuzione, imposta temporaneamente la policy utilizzando Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. Per ambienti in cui non è possibile modificare le policy di esecuzione, scarica il modulo manualmente dal PowerShell Gallery e installalo utilizzando il metodo offline. Verifica sempre l'installazione eseguendo Get-Module ExchangeOnlineManagement -ListAvailable per confermare che il modulo sia installato correttamente.

Come connettersi a Exchange Online PowerShell con MFA?

L'autenticazione multi-fattore con Exchange Online PowerShell è semplice quando configurata correttamente. Il moderno cmdlet Connect-ExchangeOnline gestisce automaticamente MFA – basta usare Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com e verrai reindirizzato a una finestra del browser per completare MFA. Per script non sorvegliati o automazione, configura l'autenticazione basata su certificati o usa un service principal con Connect-ExchangeOnline -CertificateThumbprint o Connect-ExchangeOnline -AppId. Evita di usare l'autenticazione di base o le password delle app, poiché Microsoft sta eliminando questi metodi legacy. L'autenticazione moderna non è solo più sicura – è anche più affidabile e offre una migliore integrazione con le politiche di identity management della tua organizzazione.

Condividi su

Scopri di più

Informazioni sull'autore

Asset Not Found

Jonathan Blackwell

Responsabile dello Sviluppo Software

Dal 2012, Jonathan Blackwell, ingegnere e innovatore, ha fornito una leadership ingegneristica che ha posizionato Netwrix GroupID all'avanguardia nella gestione di gruppi e utenti per ambienti Active Directory e Azure AD. La sua esperienza nello sviluppo, nel marketing e nelle vendite permette a Jonathan di comprendere appieno il mercato dell'Identity Management e il modo di pensare degli acquirenti.