Informazioni sul modulo Exchange Online PowerShell

Il modulo Exchange Online PowerShell usa l'autenticazione moderna e funziona con o senza l'autenticazione a più fattori (MFA) per la connessione a tutti gli ambienti PowerShell correlati a Exchange in Microsoft 365: Exchange Online PowerShell, PowerShell per la sicurezza & conformità e Exchange Online Protection autonomo (EOP) Powershell.

Per istruzioni di connessione con il modulo, vedere gli articoli seguenti:

Il resto di questo articolo spiega come funziona il modulo, come installare e gestire il modulo e i cmdlet ottimizzati di Exchange Online disponibili nel modulo.

Consiglio

La versione 3.0.0 e successive (2022) è nota come modulo Exchange Online PowerShell V3 (abbreviato come modulo EXO V3). La versione 2.0.5 e precedenti (2021) era nota come modulo Exchange Online PowerShell V2 (abbreviato come modulo EXO V2).

Connessioni API REST nel modulo EXO V3

Tutti i cmdlet disponibili in PowerShell Exchange Online PowerShell e Security & Compliance sono supportati da un'API REST basata sulla versione del modulo EXO V3:

  • Exchange Online PowerShell: v3.0.0 o versione successiva.
  • Security & Compliance PowerShell: v3.2.0 o versione successiva.

In Exchange Online PowerShell e in Security & Compliance PowerShell, le connessioni API REST vengono usate per impostazione predefinita e richiedono i moduli PowerShellGet e PackageManagement. Per altre informazioni, vedere PowerShellGet per le connessioni basate su REST in Windows.

I cmdlet dell'API REST presentano i vantaggi seguenti rispetto alle controparti cronologiche:

  • Più sicuro: i cmdlet dell'API REST hanno il supporto predefinito per l'autenticazione moderna e non si basano sulla sessione remota di PowerShell, quindi PowerShell nel computer client non richiede l'autenticazione di base in WinRM.
  • Più affidabile: i cmdlet dell'API REST gestiscono gli errori temporanei con tentativi predefiniti, in modo che gli errori o i ritardi siano ridotti al minimo. Ad esempio:
    • Errori dovuti a ritardi di rete.
    • Ritardi dovuti a query di grandi dimensioni che richiedono molto tempo per il completamento.
  • Prestazioni migliori: la connessione evita di configurare uno spazio di esecuzione di PowerShell.

I vantaggi dei cmdlet dell'API REST sono descritti nella tabella seguente:

  Cmdlet di PowerShell remoti Cmdlet Get-EXO* Cmdlet dell'API REST
Sicurezza Meno sicuro Sicurezza elevata Sicurezza elevata
Prestazioni Prestazioni ridotte Elevate prestazioni Prestazioni medie
Affidabilità Meno affidabile Altamente affidabile Altamente affidabile
Funzionalità Tutti i parametri e le proprietà di output disponibili Parametri limitati e proprietà di output disponibili Tutti i parametri e le proprietà di output disponibili

I cmdlet dell'API REST hanno gli stessi nomi di cmdlet e funzionano esattamente come gli equivalenti di PowerShell remoti, quindi non è necessario aggiornare gli script.

Consiglio

Il cmdlet Invoke-Command non funziona nelle connessioni API REST. Per le alternative, vedere Soluzioni alternative per scenari di Invoke-Command nelle connessioni API REST.

Le connessioni di autenticazione di base (Remote PowerShell) sono deprecate in PowerShell Exchange Online PowerShell e Sicurezza & Conformità. Per altre informazioni, vedere qui e qui.

Alcuni cmdlet dell'API REST della PowerShell di Exchange Online sono stati aggiornati con l'opzione sperimentale UseCustomRouting. Questa opzione instrada il comando direttamente al server delle cassette postali necessario e potrebbe migliorare le prestazioni generali.

  • Quando si usa l'opzione UseCustomRouting, è possibile usare solo i valori seguenti per l'identità della cassetta postale:

    • Nome dell'entità utente (UPN)
    • Indirizzo di posta elettronica
    • GUID cassetta postale
  • L'opzione UseCustomRouting è disponibile solo nei seguenti cmdlet dell'API REST della PowerShell di Exchange Online:

    • Get-Clutter
    • Get-FocusedInbox
    • Get-InboxRule
    • Get-MailboxAutoReplyConfiguration
    • Get-MailboxCalendarFolder
    • Get-MailboxFolderPermission
    • Get-MailboxFolderStatistics
    • Get-MailboxMessageConfiguration
    • Get-MailboxPermission
    • Get-MailboxRegionalConfiguration
    • Get-MailboxStatistics
    • Get-MobileDeviceStatistics
    • Get-UserPhoto
    • Remove-CalendarEvents
    • Set-Clutter
    • Set-FocusedInbox
    • Set-MailboxRegionalConfiguration
    • Set-UserPhoto

    Usare l'opzione UseCustomRouting in modo sperimentale e segnalare gli eventuali problemi riscontrati.

  • Usare il cmdlet Get-ConnectionInformation per ottenere informazioni sulle connessioni basate su REST a PowerShell Exchange Online PowerShell e Sicurezza & Compliance PowerShell. Questo cmdlet è obbligatorio perché il cmdlet Get-PSSession in Windows PowerShell non restituisce informazioni per le connessioni basate su REST.

    Gli scenari in cui è possibile usare Get-ConnectionInformation sono descritti nella tabella seguente:

    Scenario Output previsto
    Eseguire prima di un comando Connect-ExchangeOnline o Connect-IPPSSession . Non restituisce nulla.
    Eseguire dopo il comando Connect-ExchangeOnline o Connect-IPPSSession che si connette in modalità API REST. Restituisce un oggetto informazioni di connessione.
    Eseguire dopo più comandi Connect-ExchangeOnline o Connect-IPPSSession basati su REST. Restituisce una raccolta di oggetti informazioni di connessione.
  • Usare l'opzione SkipLoadingFormatData nel cmdlet Connect-ExchangeOnline per evitare il caricamento dei dati di formato e per eseguire i comandi Connect-ExchangeOnline più velocemente.

  • I cmdlet supportati dall'API REST hanno un timeout di 15 minuti, che può influire sulle operazioni bulk. Ad esempio, potrebbe verificarsi il timeout del comando Update-DistributionGroupMember seguente per aggiornare 10000 membri di un gruppo di distribuzione:

    $Members = @("member1","member2",...,"member10000")
    
    Update-DistributionGroupMember -Identity DG01 -Members $Members
    

    Usare invece il comando Update-DistributionGroupMember per aggiornare meno membri e quindi aggiungere singolarmente i membri rimanenti usando un comando Add-DistributionGroupMember . Ad esempio:

    Update-DistributionGroupMember -Identity DG01 -Members $Members[0..4999]
    
    $Remaining = $Members[-5000..-1]
    
    foreach ($Member in $Remaining)
    
    {
       Add-DistributionGroupMember -Identity DG01 -Member $Member
    }
    

Per altre informazioni sulle novità del modulo EXO V3, vedere la sezione Note sulla versione più avanti in questo articolo.

Segnalare bug e problemi per il modulo powershell Exchange Online

Nota

Per le versioni a disponibilità generale del modulo, aprire un ticket di supporto per eventuali problemi. Per le versioni di anteprima del modulo, usare l'indirizzo di posta elettronica come descritto in questa sezione. È anche possibile usare l'indirizzo di posta elettronica per commenti e suggerimenti sia per le versioni ga-ga che per le versioni di anteprima del modulo.

Quando si segnala un problema a exocmdletpreview[at]service[dot]microsoft[dot]com, assicurarsi di includere i file di log nel messaggio di posta elettronica. Per generare i file di log, sostituire <Percorso per archiviare il file> di log con la cartella di output desiderata ed eseguire il comando seguente:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

Nota

L'uso frequente dei cmdlet Connect-ExchangeOnline e Disconnect-ExchangeOnline in una singola sessione o script di PowerShell potrebbe causare una perdita di memoria. Il modo migliore per evitare questo problema consiste nell'usare il parametro CommandName nel cmdlet Connect-ExchangeOnline per limitare i cmdlet utilizzati nella sessione.

Cmdlet nel modulo powershell Exchange Online

Tutte le versioni del modulo contengono nove cmdlet Get-EXO* esclusivi per Exchange Online PowerShell ottimizzati per la velocità negli scenari di recupero dati in blocco (migliaia e migliaia di oggetti). I cmdlet di PowerShell Exchange Online migliorati disponibili solo nel modulo sono elencati nella tabella seguente:

Cmdlet del modulo EXO Cmdlet precedente correlato
Get-EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
Get-EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

Nota

Se si aprono più connessioni a Exchange Online PowerShell nella stessa finestra, i cmdlet Get-EXO* vengono sempre associati all'ultima connessione (più recente) Exchange Online PowerShell. Eseguire il comando seguente per trovare la sessione dell'API REST in cui vengono eseguiti i cmdlet Get-EXO* : Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}.

I cmdlet correlati alla connessione nel modulo sono elencati nella tabella seguente:

Cmdlet del modulo EXO Cmdlet precedente correlato Commenti
Connect-ExchangeOnline Connect-EXOPSSession nella versione 1 del modulo
oppure
Nuovo PSSession
Connect-IPPSSession Connect-IPPSSession nella versione 1 del modulo
Disconnect-ExchangeOnline Rimuovi PSSession
Get-ConnectionInformation Get-PSSession Disponibile nella versione 3.0.0 o successiva.

Nella tabella seguente sono elencati vari cmdlet Exchange Online che si trovano nel modulo:

Cmdlet Commenti
Get-DefaultTenantBriefingConfig Disponibile nella versione 3.2.0 o successiva.
Set-DefaultTenantBriefingConfig Disponibile nella versione 3.2.0 o successiva.
Get-DefaultTenantMyAnalyticsFeatureConfig Disponibile nella versione 3.2.0 o successiva.
Set-DefaultTenantMyAnalyticsFeatureConfig Disponibile nella versione 3.2.0 o successiva.
Get-MyAnalyticsFeatureConfig Disponibile nella versione 2.0.4 o successiva.
Set-MyAnalyticsFeatureConfig Disponibile nella versione 2.0.4 o successiva.
Get-UserBriefingConfig Sostituito da Get-MyAnalyticsFeatureConfig.
Set-UserBriefingConfig Sostituito da Set-MyAnalyticsFeatureConfig.
Get-VivaInsightsSettings Disponibile nella versione 2.0.5 successiva.
Set-VivaInsightsSettings Disponibile nella versione 2.0.5 successiva.
Get-VivaModuleFeature Disponibile nella versione 3.2.0 o successiva.
Get-VivaModuleFeatureEnablement Disponibile nella versione 3.2.0 o successiva.
Add-VivaModuleFeaturePolicy Disponibile nella versione 3.2.0 o successiva.
Get-VivaModuleFeaturePolicy Disponibile nella versione 3.2.0 o successiva.
Remove-VivaModuleFeaturePolicy Disponibile nella versione 3.2.0 o successiva.
Update-VivaModuleFeaturePolicy Disponibile nella versione 3.2.0 o successiva.

Installare e gestire il modulo Exchange Online PowerShell

Scaricare il modulo dalla raccolta di PowerShell all'indirizzo https://www.powershellgallery.com/packages/ExchangeOnlineManagement/.

Le procedure descritte in questa sezione illustrano come installare, aggiornare e disinstallare il modulo.

Sistemi operativi supportati per il modulo powershell Exchange Online

Le versioni più recenti del modulo sono ufficialmente supportate in PowerShell 7 in Windows, Linux e Apple macOS.

In particolare, la versione 2.0.4 o successiva è supportata in PowerShell 7.0.3 o versioni successive.

Per altre informazioni su PowerShell 7, vedere Annuncio di PowerShell 7,0.

Apple macOS

Il modulo è supportato nelle versioni seguenti di macOS:

  • MacOS 11 Big Sur o versioni successive
  • macOS 10.15 Catalina
  • macOS 10.14 Mojave

Per istruzioni sull'installazione di PowerShell 7 in macOS, vedere Installazione di PowerShell in macOS.

Nota

Come descritto nell'articolo sull’installazione, è necessario installare OpenSSL, obbligatorio per WSMan.

Dopo aver installato PowerShell 7 e OpenSSL, eseguire la procedura seguente:

  1. Eseguire PowerShell come utente avanzato: sudo pwsh

  2. Nella sessione dell'utente con privilegi avanzati di PowerShell, eseguire i seguenti comandi:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Se richiesto, accettare PSGallery come origine per i cmdlet.

È ora possibile eseguire i normali prerequisiti di PowerShell e installare il modulo Exchange Online PowerShell.

Linux

Il modulo è ufficialmente supportato nelle distribuzioni seguenti di Linux:

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

In caso di problemi con l'uso del modulo in altre distribuzioni di Linux, segnalare eventuali problemi.

Per istruzioni sull'installazione di PowerShell 7 in Linux, vedere Installazione di PowerShell in Linux.

Dopo aver installato PowerShell 7, eseguire la procedura seguente:

  1. Eseguire PowerShell come utente avanzato: sudo pwsh

  2. Nella sessione dell'utente con privilegi avanzati di PowerShell, eseguire i seguenti comandi:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Se richiesto, accettare PSGallery come origine per i cmdlet.

È ora possibile eseguire i normali prerequisiti di PowerShell e installare il modulo Exchange Online PowerShell.

Nota

Se ci si connette a Exchange Online PowerShell da una rete dietro un server proxy, il modulo EXO V2 (versione 2.0.5 o precedente) non funziona in Linux. È necessario usare il modulo EXO V3 (v3.0.0 o versione successiva) in Linux per connettersi da una rete dietro un server proxy.

Windows

Tutte le versioni del modulo sono supportate in Windows PowerShell 5.1.

PowerShell 7 in Windows richiede la versione 2.0.4 o successiva.

La versione 2.0.5 o successiva del modulo richiede la connessione di Microsoft .NET Framework 4.7.2 o versione successiva. In caso contrario, verrà visualizzato un System.Runtime.InteropServices.OSPlatform errore. Questo requisito non deve essere un problema nelle versioni correnti di Windows. Per altre informazioni sulle versioni di Windows che supportano .NET Framework 4.7.2, vedere questo articolo.

Windows PowerShell requisiti e il supporto dei moduli nelle versioni precedenti di Windows sono descritti nell'elenco seguente:

  • Windows 8.1¹

  • Windows Server 2012 o Windows Server 2012 R2¹

  • Windows 7 Service Pack 1 (SP1)² ³ ⁴

  • Windows Server 2008 R2 SP1² ³ ⁴

  • ¹ PowerShell 7 in questa versione di Windows richiede l'Windows 10 CRT (Universal C Runtime).

  • ² Questa versione di Windows ha raggiunto la fine del supporto ed è ora supportata solo nelle macchine virtuali di Azure.

  • ³ Questa versione di Windows supporta solo la versione 2.0.3 o versioni precedenti del modulo.

  • ⁴ Windows PowerShell 5.1 in questa versione di Windows richiede .NET Framework 4.5 o versioni successive e il Windows Management Framework 5.1. Per altre informazioni, vedere Windows Management Framework 5.1.

Prerequisiti per il modulo powershell Exchange Online

Impostare i criteri di esecuzione di PowerShell su RemoteSigned

Nota

Le impostazioni in questa sezione si applicano a tutte le versioni di PowerShell in tutti i sistemi operativi.

PowerShell deve essere configurato per poter eseguire gli script e, per impostazione predefinita, non lo è. Durante il tentativo di connessione verrà visualizzato l'errore seguente:

Impossibile caricare i file perché l'esecuzione di script è disabilitata nel sistema. Specificare un certificato valido per la firma dei file.

Per richiedere che tutti gli script di PowerShell scaricati da internet siano firmati da un editore attendibile, eseguire il seguente comando in una finestra di PowerShell elevata (una finestra di PowerShell aperta selezionando Esegui come amministratore):

Set-ExecutionPolicy RemoteSigned

Per altre informazioni sui criteri di esecuzione, vedere Informazioni sui criteri di esecuzione.

Attivare l'autenticazione di base in WinRM

Nota

Le connessioni basate su REST non richiedono l'autenticazione di base in WinRM come descritto in questa sezione. Come descritto in precedenza in questo articolo, l'accesso di autenticazione di base (PowerShell remoto) a Exchange Online PowerShell e sicurezza & conformità PowerShell sono deprecati. Le informazioni contenute in questa sezione vengono mantenute per scopi cronologici.

Per le connessioni Remote PowerShell che non usano l'API REST (che ora sono impossibili), WinRM deve consentire l'autenticazione di base. Non viene inviata la combinazione di nome utente e password. L'intestazione di autenticazione di base è necessaria per inviare il token OAuth della sessione, perché l'implementazione lato client di WinRM non supporta OAuth.

Per verificare che l'autenticazione di base sia abilitata per WinRM, eseguire il comando seguente in un prompt dei comandi o Windows PowerShell:

Nota

I comandi seguenti richiedono l'abilitazione di WinRM. Per abilitare WinRM, eseguire il comando seguente: winrm quickconfig.

winrm get winrm/config/client/auth

Se il valore Basic = truenon viene visualizzato, è necessario eseguire uno dei comandi seguenti per abilitare l'autenticazione di base per WinRM:

  • In un prompt dei comandi:

    winrm set winrm/config/client/auth @{Basic="true"}
    
  • In Windows PowerShell:

    winrm set winrm/config/client/auth '@{Basic="true"}'
    
  • In Windows PowerShell per modificare il registro:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
    

Se l'autenticazione di base per WinRM è disabilitata, si otterrà uno degli errori seguenti quando si tenta di connettersi usando una connessione di autenticazione di base (PowerShell remota):

Client Gestione remota Windows: impossibile elaborare la richiesta. L'autenticazione di base è attualmente disabilitata nella configurazione del client. Modificare la configurazione del client e riprovare.

La creazione della sessione di PowerShell non è riuscita con OAuth.

PowerShellGet per le connessioni basate su REST in Windows

Le connessioni basate su REST in Windows richiedono il modulo PowerShellGet e, per dipendenza, il modulo PackageManagement. La considerazione per questi moduli è più importante per PowerShell 5.1 che per PowerShell 7, ma tutte le versioni di PowerShell traggono vantaggio dall'installazione delle versioni più recenti dei moduli. Per istruzioni di installazione e aggiornamento, vedere Installazione di PowerShellGet in Windows.

Nota

Le versioni beta dei moduli PackageManagement o PowerShellGet potrebbero causare problemi di connessione. In caso di problemi di connessione, verificare di non avere versioni beta dei moduli installati eseguendo il comando seguente: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions.

Se PowerShellGet non è installato quando si tenta di creare una connessione basata su REST, si riceverà l'errore seguente quando si tenta di connettersi:

Impossibile trovare un cmdlet Update-Manifest

Installare il modulo Exchange Online PowerShell

Per installare il modulo per la prima volta, seguire questa procedura:

  1. Installare o aggiornare il modulo PowerShellGet come descritto in Installazione di PowerShellGet.

  2. Chiudere e riaprire la finestra di Windows PowerShell.

  3. È ora possibile usare il cmdlet Install-Module per installare il modulo dal PowerShell Gallery. In genere, si vuole la versione pubblica più recente del modulo, ma è anche possibile installare una versione di anteprima, se disponibile.

    • Per installare la versione pubblica più recente del modulo, eseguire uno dei comandi seguenti:

      • In una finestra di PowerShell con privilegi elevati (tutti gli utenti):

        Install-Module -Name ExchangeOnlineManagement
        
      • Solo per l'account utente corrente:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Per visualizzare le versioni di anteprima disponibili del modulo, eseguire il comando seguente:

      Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
      
    • Per installare la versione di anteprima più recente disponibile del modulo, eseguire uno dei comandi seguenti:

      • In una finestra di PowerShell con privilegi elevati (tutti gli utenti):

        Install-Module -Name ExchangeOnlineManagement -AllowPrerelease
        
      • Solo per l'account utente corrente:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
        
    • Per installare una versione di anteprima specifica del modulo, sostituire <PreviewVersion> con il valore necessario ed eseguire uno dei comandi seguenti:

      • In una finestra di PowerShell con privilegi elevati (tutti gli utenti):

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
        
      • Solo per l'account utente corrente:

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease -Scope CurrentUser
        

    Al termine, immettere Y per accettare il contratto di licenza.

Per informazioni dettagliate sulla sintassi e sul parametro, vedere Installa-modulo .

Aggiornare il modulo Exchange Online PowerShell

Se il modulo è già installato nel computer, è possibile usare le procedure descritte in questa sezione per aggiornare il modulo.

  1. Per visualizzare la versione del modulo attualmente installata e in cui è installata, eseguire il comando seguente:

    Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
    

    Se il modulo è installato in C:\Programmi\WindowsPowerShell\Modules, viene installato per tutti gli utenti. Se il modulo è installato nella cartella Documenti, viene installato solo per l'account utente corrente.

  2. È possibile usare il cmdlet Update-Module per aggiornare il modulo dal PowerShell Gallery. In genere, si vuole la versione pubblica più recente del modulo, ma è anche possibile eseguire l'aggiornamento a una versione di anteprima, se disponibile.

    • Per eseguire l'aggiornamento alla versione pubblica più recente del modulo, eseguire uno dei comandi seguenti in base alla modalità di installazione originale del modulo (tutti gli utenti e solo per l'account utente corrente):

      • In una finestra di PowerShell con privilegi elevati (tutti gli utenti):

        Update-Module -Name ExchangeOnlineManagement
        
      • Solo per l'account utente corrente:

        Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Per eseguire l'aggiornamento a una versione di anteprima del modulo, è possibile eseguire l'aggiornamento alla versione di anteprima più recente disponibile oppure usare il parametro RequiredVersion per eseguire l'aggiornamento a una versione di anteprima specifica.

      • Per visualizzare le versioni di anteprima disponibili del modulo, eseguire il comando seguente:

        Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
        
      • Per eseguire l'aggiornamento alla versione di anteprima più recente disponibile del modulo, eseguire uno dei comandi seguenti:

        • In una finestra di PowerShell con privilegi elevati (tutti gli utenti):

          Update-Module -Name ExchangeOnlineManagement -AllowPrerelease
          
        • Solo per l'account utente corrente:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
          
      • Per eseguire l'aggiornamento a una versione di anteprima specifica del modulo, sostituire <PreviewVersion> con il valore necessario ed eseguire uno dei comandi seguenti:

        • In una finestra di PowerShell con privilegi elevati (tutti gli utenti):

          Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
          
        • Solo per l'account utente corrente:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion <PreviewVersion> -AllowPrerelease
          

    Al termine, immettere Y per accettare il contratto di licenza.

  3. Per verificare l'esito dell'aggiornamento, eseguire i comandi seguenti per verificare le informazioni sulla versione del modulo installato:

    Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
    

Per informazioni dettagliate sulla sintassi e sul parametro, vedere Aggiorna-modulo .

Risolvere i problemi relativi all'installazione del modulo Exchange Online PowerShell

  • Viene visualizzato uno dei seguenti errori:

    Il modulo specificato 'ExchangeOnlineManagement' con PowerShellGetFormatVersion '<version>' non è supportato dalla versione corrente di PowerShellGet. Recuperare l'ultima versione del modulo PowerShellGet per installare questo modulo 'ExchangeOnlineManagement'.

    AVVISO: impossibile scaricare dall'URI 'https://go.microsoft.com/fwlink/?LinkID=627338& da clcid=0x409' a ''.

    AVVISO: non è possibile scaricare l'elenco dei provider disponibili. Controllare la connessione Internet.

    Aggiornare l'installazione del modulo PowerShellGet alla versione più recente, come descritto in Installazione di PowerShellGet. Assicurarsi di chiudere e riaprire la finestra di PowerShell prima di provare ad aggiornare nuovamente il modulo ExchangeOnlineManagement.

  • A partire da aprile 2020, la raccolta PowerShell supporta solo le connessioni con TLS 1.2 o versione successiva. Per altre informazioni, vedere PowerShell Gallery, supporto TLS.

    Per controllare le impostazioni correnti in Microsoft .NET Framework, eseguire il comando seguente in Windows PowerShell:

    [Net.ServicePointManager]::SecurityProtocol
    

    Come descritto nell'articolo del supporto TLS della PowerShell gallery, per cambiare temporaneamente il protocollo di sicurezza TLS 1.2 per installare i moduli PowerShellGet o ExchangeOnlineManagement, eseguire il comando seguente in Windows PowerShell prima di installare il modulo:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    Per abilitare permanentemente la crittografia avanzata in Microsoft .NET Framework versione 4.x o successiva, eseguire uno dei comandi seguenti in base all'architettura di Windows:

    • x64:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      
    • x86:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      

    Per altre informazioni, vedereSchUseStrongCrypto.

  • Viene visualizzato il seguente errore:

    Non è stata trovata alcuna corrispondenza per i criteri di ricerca e il nome del modulo specificati 'ExchangeOnlineManagement'. Provare a eseguire Get-PSRepository per visualizzare tutti i repository di moduli registrati disponibili.

    Il repository predefinito per i moduli di PowerShell non è impostato su PSGallery. Per correggere l'errore, eseguire il comando seguente:

    Register-PSRepository -Default
    

Disinstallare il modulo Exchange Online PowerShell

Per visualizzare la versione del modulo attualmente installata e in cui è installata, eseguire il comando seguente:

Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation

Se il modulo è installato in C:\Programmi\WindowsPowerShell\Modules, è stato installato per tutti gli utenti. Se il modulo è installato nella cartella Documenti, è stato installato solo per l'account utente corrente.

Per disinstallare il modulo, eseguire il comando seguente in uno degli ambienti seguenti in base alla modalità di installazione originale del modulo (tutti gli utenti e solo per l'account utente corrente):

  • In una finestra di PowerShell con privilegi elevati (tutti gli utenti).

  • In una normale finestra di PowerShell (solo per l'account utente corrente).

    Uninstall-Module -Name ExchangeOnlineManagement
    

Per informazioni dettagliate sulla sintassi e sul parametro, vedere Disinstalla-modulo .

Proprietà e set di proprietà nel modulo powershell Exchange Online

I cmdlet di Exchange Online tradizionali restituiscono tutte le proprietà degli oggetti possibili nell'output, incluse molte proprietà spesso vuote o non interessate a molti scenari. Questo comportamento causa prestazioni degradate (ulteriore calcolo del server e carico di rete aggiunto). La restituzione di tutte le proprietà nell'output dei cmdlet è raramente necessaria.

I cmdlet Get-EXO* nel modulo hanno proprietà di output categorizzate. Anziché assegnare uguale importanza a tutte le proprietà e restituirle in tutti gli scenari, le proprietà correlate sono state categorizzate in set di proprietà. In parole povere, questi set di proprietà sono contenitori con due o più proprietà correlate nel cmdlet.

I cmdlet Get-EXO* più grandi e usati usano set di proprietà:

In questi cmdlet, i set di proprietà sono controllati dai parametri seguenti:

È possibile usare i parametriPropertySet e Properties nello stesso comando.

È inoltre disponibile il set di proprietà Minimum, che include un insieme di proprietà di base per l'output del cmdlet (per esempio, proprietà identità). Le proprietà nei set di proprietà Minimum sono descritte anche in Set di proprietà in Exchange Online cmdlet del modulo PowerShell.

  • Se non si usano i parametri PropertySets o Properties, si ottengono automaticamente le proprietà nel set di proprietà Minimum.
  • Se si usano i parametri PropertySets o Properties, si ottengono le proprietà specificate e le proprietà nel set Minimum.

In entrambi i casi, l'output del cmdlet contiene molte meno proprietà e il tempo necessario per restituire tali risultati è molto più veloce.

Ad esempio, dopo essersi connessi a PowerShell di Exchange Online, nell'esempio seguente vengono restituite solo le proprietà della proprietà Minimum impostata per le prime dieci cassette postali.

Get-EXOMailbox -ResultSize 10

L’output dello stesso comando Get-Mailbox restituirebbe invece almeno 230 proprietà per ciascuna delle prime dieci cassette postali.

Nota

Anche se il parametro PropertySets accetta il valore All, è sconsigliabile l’utilizzo di questo valore per recuperare tutte le proprietà perché rallenta il comando e riduce l'affidabilità. Usare sempre i parametri PropertySets e Properties per recuperare il numero minimo di proprietà richiesti per lo scenario specifico..

Per altre informazioni sui filtri nel modulo, vedere Filtri nel modulo Exchange Online PowerShell.

Note sulla versione

Se non diversamente specificato, la versione corrente del modulo Exchange Online PowerShell contiene tutte le funzionalità delle versioni precedenti.

Versione corrente

Versione 3.4.0

  • Correzioni di bug in Connect-ExchangeOnline, Get-EXORecipientPermission e Get-EXOMailboxFolderPermission.
  • Il parametro SigningCertificate in Connect-ExchangeOnline supporta ora la modalità CLM (Constrained Language Mode).

Versioni precedenti

Versione 3.3.0

  • Parametro SkipLoadingCmdletHelp in Connect-ExchangeOnline per supportare il caricamento dei file della Guida dei cmdlet.
  • La variabile EXO_LastExecutionStatus globale è disponibile per controllare lo stato dell'ultimo cmdlet eseguito.
  • Correzioni di bug in Connect-ExchangeOnline e Connect-IPPSSession.
  • Parametro IsUserControlEnabled in Add-VivaModuleFeaturePolicy e Update-VivaModuleFeaturePolicy per supportare l'abilitazione dei controlli utente in base ai criteri per le funzionalità di cui viene eseguito l'onboarding in Viva gestione degli accessi alle funzionalità.

Versione 3.2.0

  • Nuovi cmdlet:
    • Get-DefaultTenantBriefingConfig e Set-DefaultTenantBriefingConfig.
    • Get-DefaultTenantMyAnalyticsFeatureConfig e Set-DefaultTenantMyAnalyticsFeatureConfig.
    • Get-VivaModuleFeature, Get-VivaModuleFeatureEnablement, Add-VivaModuleFeaturePolicy, Get-VivaModuleFeaturePolicy, Remove-VivaModuleFeaturePolicy e Update-VivaModuleFeaturePolicy.
  • Supporto della connessione API REST per PowerShell del Centro conformità & sicurezza.
  • Parametro ConnectionId in Get-ConnectionInformation e Disconnect-ExchangeOnline:
    • Ottenere informazioni di connessione per connessioni API REST specifiche.
    • Disconnessione selettiva per le connessioni API REST.
  • Il parametro SigningCertificate in Connect-ExchangeOnline consente di firmare i file di formato (*. Format.ps1xml) o file di modulo script (con estensione psm1) nel modulo temporaneo creato da Connect-ExchangeOnline con un certificato client da usare in tutti i criteri di esecuzione di PowerShell.
  • Correzioni di bug in Connect-ExchangeOnline.

Versione 3.1.0

  • Parametro AccessToken disponibile in Connect-ExchangeOnline.
  • Correzioni di bug in Connect-ExchangeOnline e Get-ConnectionInformation.
  • Correzione di bug in Connect-IPPSSession per la connessione a Security & Compliance PowerShell tramite CertificateThumbprint.

Versione 3.0.0 (versioni di anteprima note come v2.0.6-PreviewX)

  • Funzionalità già descritte nelle connessioni API REST nella sezione del modulo EXO V3 :
    • Autenticazione basata su certificati per Security & Compliance PowerShell (versione 2.0.6-Preview5 o successiva).
    • Cmdlet Get-ConnectionInformation per le connessioni basate su REST (versione 2.0.6-Preview7 o successiva).
    • L'opzione SkipLoadingFormatData nel cmdlet Connect-ExchangeOnline per le connessioni basate su REST (versione 2.0.6-Preview8 o successiva).
  • Il parametro DelegatedOrganization funziona nel cmdlet Connect-IPPSSession purché si usi anche il parametro AzureADAuthorizationEndpointUri nel comando.
  • Alcuni cmdlet usati per richiedere la conferma in scenari specifici non lo fanno più. Per impostazione predefinita, il cmdlet viene eseguito fino al completamento.
  • Il formato dell'errore restituito dall'esecuzione del cmdlet non riuscito è stato leggermente modificato. L'eccezione contiene ora dati aggiuntivi , ad esempio il tipo di eccezione, e FullyQualifiedErrorId non contiene .FailureCategory Il formato dell'errore è soggetto a ulteriori modifiche.

Versione 2.0.5

  • Nuovi cmdlet Get-OwnerlessGroupPolicy e Set-OwnerlessGroupPolicy per gestire gruppi di Microsoft 365 senza proprietario.

    Nota

    Anche se i cmdlet sono disponibili nel modulo, la funzionalità è disponibile solo per i membri di un'anteprima privata.

  • Nuovi cmdlet Get-VivaInsightsSettings e Set-VivaInsightsSettings per controllare l'accesso degli utenti alle funzionalità headspace in Viva Insights.

Versione 2.0.4

  • PowerShell 7 è ufficialmente supportato in Windows, Linux e Apple macOS, come descritto nella sezione Prerequisiti per il modulo Exchange Online PowerShell in questo articolo.

  • Il modulo in PowerShell 7 supporta l'accesso Single Sign-On (SSO) basato su browser e altri metodi di accesso. Per altre informazioni, vedere Metodi di connessione esclusiva di PowerShell 7.

  • I cmdlet Get-UserAnalyticsConfig e Set-UserAnalyticsConfig sono stati sostituiti dai cmdlet Get-MyAnalyticsConfig e Set-MyAnalyticsConfig. Inoltre, è possibile configurare l'accesso a livello di funzionalità. Per altre informazioni, vedere Configurare MyAnalytics.

  • Criteri in tempo reale e applicazione della sicurezza in tutte le autenticazioni basate sugli utenti. La valutazione dell'accesso continuo (CAE) è stata abilitata nel modulo. Leggere altre informazioni sulla Valutazione continua dell’accesso (CAE) qui.

  • Le proprietà LastUserActionTime e LastInteractionTime sono ora disponibili nell'output del cmdlet Get-EXOMailboxStatistics.

  • Il processo di accesso interattivo ora si avvale di un metodo più sicuro per recuperare i token di accesso attraverso URL di risposta sicura.

Versione 2.0.3

  • Disponibilità generale dell'autenticazione basata su certificato (CBA), che consente l'uso dell'autenticazione moderna per gli script eseguiti automaticamente o gli scenari di automazione in background. Le posizioni di archiviazione dei ceritificati disponibili sono:
  • Connettersi a PowerShell per Exchange Online e PowerShell per Sicurezza e conformità simultaneamente in una sola finestra di PowerShell.
  • Il nuovo parametro CommandName consente di specificare e limitare i cmdlet di PowerShell in Exchange Online che sono importati in una sessione. Questa opzione riduce il carico di memoria per le applicazioni di PowerShell ad alto utilizzo.
  • Get-EXOMailboxFolderPermission ora supporta ExternalDirectoryObjectID nel parametro Identity.
  • La latenza dell'invocazione del cmdlet V2 è stata ottimizzata. I risultati di laboratorio mostrano che la latenza della prima invocazione è stata ridotta da 8 secondi a circa 1 secondo. I risultati effettivi dipendono dalle dimensioni dei risultati del cmdlet e dall'ambiente tenant.

Versione 1.0.1

  • Versione di disponibilità generale del modulo EXO V2. È stabile e pronta per l'uso in ambiente di produzione.
  • Il cmdlet Get-EXOMobileDeviceStatistics ora supporta il parametro Identity.
  • È stata migliorata l'affidabilità della riconnessione automatica della sessione: in alcuni casi in cui uno script restava in esecuzione per circa 50 minuti e poi generava l'errore "Cmdlet non trovato" a causa di un bug nella logica di riconnessione automatica.
  • Sono stati risolti i problemi relativi al tipo di dati per due attributi "User" e "MailboxFolderUser" usati di frequente, per una migrazione più semplice degli script.
  • È stato migliorato il supporto per i filtri, che ora supporta altri quattro operatori: EndsWith, Contains, Not e NotLike. Selezionare Filtri nel modulo Exchange Online PowerShell per gli attributi non supportati nei filtri.

Versione 0.4578.0

  • È stato aggiunto il supporto per configurare un messaggio di briefing a livello di utente per l'organizzazione con i cmdlet Set-UserBriefingConfig e Get-UserBriefingConfig.
  • È stato aggiunto il supporto della pulizia della sessione con il cmdlet Disconnect-ExchangeOnline. Questo cmdlet è l'equivalente in V2 di Get-PSSession | Remove-PSSession. Oltre a ripulire l'oggetto sessione e i file locali, rimuove il token di accesso dalla cache, che viene usato per l'autenticazione nei cmdlet V2.
  • Ora è possibile usare FolderId come parametro di identità in Get-EXOMailboxFolderPermission. Il valore FolderId si può ottenere usando Get-MailboxFolder. Per esempio: Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
  • L'affidabilità di Get-EXOMailboxStatistics è stata migliorata, grazie alla risoluzione di alcuni problemi di routing delle richieste che causavano errori.
  • L'utilizzo della memoria alla creazione di una sessione è stato ottimizzato, riutilizzando qualsiasi modulo esistente con una nuova sessione anziché crearne uno nuovo ogni volta che si importa la sessione.

Versione 0.4368.1

  • È stato aggiunto il supporto per i cmdlet di PowerShell per Sicurezza e conformità con il cmdlet Connect-IPPSSession.
  • La possibilità di nascondere il banner degli annunci è disponibile usando il parametro ShowBanner (-ShowBanner:$false).
  • Capacità di terminare l'esecuzione del cmdlet in caso di eccezione del client.
  • Remote PowerShell conteneva vari tipi di dati complessi, che intenzionalmente non erano supportati nei cmdlet EXO per migliorare le prestazioni. Le differenze relative ai tipi di dati non complessi tra i cmdlet di Remote PowerShell e i cmdlet V2 sono state risolte, in modo da consentire una migrazione semplice degli script di gestione.

Versione 0.3582.0

  • Supporto per il prefisso durante la creazione della sessione:
    • È possibile creare solo una sessione alla volta che contiene cmdlet con prefisso.
    • I cmdlet EXO V2 non hanno prefisso perché hanno già il prefisso EXO, quindi non usare EXO come prefisso.
  • Usare i cmdlet di EXO V2 anche se l'autenticazione di base di WinRM è disabilitata nel computer client. Si noti che cmdlet di Remote PowerShell richiedono l'autenticazione di base di WinRM e che non sono disponibili se è disabilitata.
  • Il parametro Identity per i cmdlet v2 ora supporta anche Name e Alias. Si noti che l'uso di Alias o Name rallenta le prestazioni dei cmdlet V2, quindi non è consigliato.
  • È stato risolto il problema per cui il tipo di dati degli attributi restituiti dai cmdlet V2 era diverso rispetto ai cmdlet di Remote PowerShell. Sono ancora presenti alcuni attributi con tipi di dati diversi, che verranno gestiti nei prossimi mesi.
  • Correzione di bug: problema di frequenti riconnessioni della sessione quando veniva richiamato Connect-ExchangeOnline con Credentials o UserPrincipalName

Versione 0.3555.1

  • È stato corretto un bug per cui i cmdlet inviati tramite pipe non riuscivano con l'errore seguente a causa di un problema di autenticazione:

    Impossibile richiamare la pipeline perché lo spazio di esecuzione non è nello stato Aperto. Lo stato corrente dello spazio di esecuzione è 'Closed'.

Versione 0.3527.4

  • Contenuto di Get-Help aggiornato.
  • È stato risolto un problema in Get-Help in cui il parametro Online reindirizzava a una pagina inesistente con il codice di errore 400.

Versione 0.3527.3

  • È stato aggiunto il supporto per gestire Exchange per un tenant diverso usando il flusso di delega.
  • Funziona in tandem con altri moduli di PowerShell in una singola finestra di PowerShell.
  • È stato aggiunto il supporto per i parametri posizionali.
  • Il campo di data e ora supporta le impostazioni locali del client.
  • Correzione di bug: PSCredential vuoto se passato durante Connect-ExchangeOnline.
  • Correzione di bug: errore del modulo client quando il filtro conteneva $null.
  • Le sessioni create internamente al modulo EXO V2 hanno ora nomi (modello di denominazione: ExchangeOnlineInternalSession_% numero%).
  • Correzione di bug: i cmdlet di Remote PowerShell falliscono in modo intermittente per un problema di differenza di tempo tra la scadenza del token e il passaggio all'inattività di PSSession.
  • Aggiornamento principale della sicurezza.
  • Correzioni di bug e miglioramenti.