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:
- Connettersi a PowerShell per Exchange Online
- Connettersi a PowerShell per Sicurezza e conformità
- Connettersi a PowerShell di Exchange Online Protection
- Autenticazione solo app per script automatici in PowerShell Exchange Online PowerShell e conformità & sicurezza
- Usare le identità gestite di Azure per connettersi a Exchange Online PowerShell
- Usare C# per connettersi a Exchange Online PowerShell
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
Exchange Online PowerShell e Conformità & sicurezza di PowerShell ora usano le connessioni API REST per tutti i cmdlet:
- Exchange Online PowerShell: modulo EXO V3 v3.0.0 o versione successiva.
- PowerShell per la sicurezza & conformità: modulo EXO V3 v3.2.0 o versione successiva.
Le connessioni API REST richiedono i moduli PowerShellGet e PackageManagement. Per altre informazioni, vedere PowerShellGet per le connessioni basate su REST in Windows.
I cmdlet nelle connessioni API REST presentano i vantaggi seguenti rispetto alle controparti cronologiche:
- Più sicuro: supporto predefinito per l'autenticazione moderna e nessuna dipendenza dalla sessione remota di PowerShell. PowerShell nel computer client non richiede l'autenticazione di base in WinRM.
-
Più affidabile: gli errori temporanei usano tentativi predefiniti, quindi gli errori o i ritardi vengono 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: le connessioni API REST evitano di configurare uno spazio di esecuzione di PowerShell.
I vantaggi dei cmdlet nelle connessioni 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 i nomi o i parametri dei cmdlet negli script precedenti.
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 (PowerShell remoto) sono deprecate in PowerShell Exchange Online PowerShell e Sicurezza & Conformità. Per altre informazioni, vedere qui e qui.
Alcuni cmdlet in Exchange Online PowerShell sono stati aggiornati con il commutatore UseCustomRouting sperimentale nelle connessioni API REST. Questa opzione instrada il comando direttamente al server delle cassette postali necessario e potrebbe migliorare le prestazioni generali. Usare l'opzione UseCustomRouting in modo sperimentale.
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 cmdlet di PowerShell Exchange Online seguenti nelle connessioni API REST:
- 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 il cmdlet Get-ConnectionInformation per ottenere informazioni sulle connessioni DELL'API REST a PowerShell Exchange Online PowerShell e security & Compliance. Questo cmdlet è obbligatorio perché il cmdlet Get-PSSession in Windows PowerShell non restituisce informazioni per le connessioni API REST.
Gli scenari in cui è possibile usare Get-ConnectionInformation sono descritti nella tabella seguente:
Scenario Output previsto Eseguire dopo i comandi Connect-ExchangeOnline o Connect-IPPSSession per le connessioni API REST. Restituisce un oggetto informazioni di connessione. Eseguire dopo più comandi Connect-ExchangeOnline o Connect-IPPSSession per le connessioni API 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 10.000 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 le versioni di anteprima del modulo powershell Exchange Online
Consiglio
Per le versioni a disponibilità generale del modulo, non usare l'indirizzo di posta elettronica seguente per segnalare i problemi. I messaggi relativi alle versioni ga del modulo non risponderanno. Aprire invece un ticket di supporto.
Per le versioni di anteprima del modulo, usare exocmdletpreview[at]service[dot]microsoft[dot]com
per segnalare eventuali problemi riscontrati. Assicurarsi di includere i file di log nel messaggio di posta elettronica. Per generare i file di log, sostituire <Path> con una cartella di output e quindi eseguire il comando seguente:
Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path> -LogLevel All
Cmdlet nel modulo powershell Exchange Online
Il modulo EXO contiene nove cmdlet Get-EXO* esclusivi ottimizzati per la velocità negli scenari di recupero dati in blocco (migliaia e migliaia di oggetti) in Exchange Online PowerShell. I cmdlet migliorati nel modulo sono elencati nella tabella seguente:
Consiglio
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. |
Consiglio
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.
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.
Come descritto nell'articolo sull’installazione, è necessario installare OpenSSL, obbligatorio per WSMan.
Dopo aver installato PowerShell 7 e OpenSSL, eseguire la procedura seguente:
Eseguire PowerShell come utente avanzato:
sudo pwsh
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 24.04 LTS
- Ubuntu 20.04 LTS
- Ubuntu 18.04 LTS
Per istruzioni sull'installazione di PowerShell 7 in Linux, vedere Installazione di PowerShell in Linux.
Dopo aver installato PowerShell 7, eseguire la procedura seguente:
Eseguire PowerShell come utente avanzato:
sudo pwsh
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, viene 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).
² Il supporto per questa versione di Windows è terminato ed è ora supportato 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
Consiglio
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 viene 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
Importante
Le connessioni API 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 = true
non 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 verifica 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 API REST in Windows
Le connessioni API 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.
Consiglio
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 API REST, viene visualizzato 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:
Installare o aggiornare il modulo PowerShellGet come descritto in Installazione di PowerShellGet.
Chiudere e riaprire la finestra di Windows PowerShell.
È 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.
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.
È 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.
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.
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
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.
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 Exchange Online tradizionali restituiscono tutte le proprietà dell'oggetto possibili, incluse molte proprietà vuote o non interessanti. 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. Invece di assegnare a tutte le proprietà la stessa importanza e restituirle in tutti gli scenari, sono stati categorizzati proprietà correlate specifiche in set di proprietà. Questi set di proprietà sono bucket di 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:
- PropertySets: questo parametro accetta uno o più nomi di set di proprietà disponibili separati da virgole. I set di proprietà disponibili sono descritti in Set di proprietà in Exchange Online cmdlet del modulo PowerShell.
- Properties: questo parametro accetta uno o più nomi di proprietà separati da virgole.
È possibile usare i parametriPropertySet e Properties nello stesso comando.
È stato incluso anche un set di proprietà Minimum che include un set minimo di proprietà obbligatorie per l'output del cmdlet, ad esempio le proprietà identity. 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 i risultati vengono restituiti molto più velocemente.
Ad esempio, dopo la connessione a Exchange Online PowerShell, nell'esempio seguente vengono restituite solo le proprietà nella proprietà Minimum impostata per le prime 10 cassette postali.
Get-EXOMailbox -ResultSize 10
Al contrario, l'output dello stesso comando Get-Mailbox restituirà almeno 230 proprietà per ognuna delle prime 10 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.6.0
- Get-VivaModuleFeature ora restituisce informazioni sui tipi di identità per cui la funzionalità supporta la creazione di criteri, ad esempio utenti, gruppi o l'intero tenant.
- I cmdlet per Viva gestione degli accessi alle funzionalità ora gestiscono i problemi relativi alle attestazioni di valutazione dell'accesso continuo.
- Aggiunta della correzione per il problema di compatibilità con il modulo Microsoft.Graph.
Versioni precedenti
Versione 3.5.1
- Correzioni di bug in Get-EXOMailboxPermission e Get-EXOMailbox.
- Il modulo è stato aggiornato per l'esecuzione in .NET 8, sostituendo la versione precedente basata su .NET 6.
- Miglioramenti in Add-VivaModuleFeaturePolicy.
Versione 3.5.0
- Nuovo cmdlet Get-VivaFeatureCategory .
- Aggiunta del supporto per le operazioni dei criteri a livello di categoria in Viva Feature Access Management (VFAM).
- Nuova proprietà IsFeatureEnabledByDefault nell'output di Get-VivaModuleFeaturePolicy. Il valore di questa proprietà mostra lo stato di abilitazione predefinito per gli utenti nel tenant quando non sono stati creati criteri tenant o utente/gruppo.
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).
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 sicurezza & conformità.
-
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 viene leggermente modificato. L'eccezione contiene ora più dati ( 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) è 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:
- Remota, nel parametro del valore della chiave di Azure (il Certificato). Questa opzione aumenta la sicurezza recuperando il certificato solo in fase di esecuzione.
- Locale, nell'archivio dei certificati CurrentUser o LocalMachine (il parametro CertificateThumbprint).
- Locale, in un file di certificato esportato (i parametri CertificateFilePath e CertificatePassword). Per altre informazioni, vedere le descrizioni dei parametri in Connect-ExchangeOnline e l'autenticazione solo app per gli script automatici nel modulo Exchange Online PowerShell.
- 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 pronto per l'uso negli ambienti 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 valoreFolderId
si può ottenere usando Get-MailboxFolder. Per esempio:Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>
Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
- Maggiore affidabilità di Get-EXOMailboxStatistics poiché determinati errori di routing delle richieste che hanno causato errori sono stati risolti.
- Utilizzo ottimizzato della memoria quando viene creata una sessione riutiliando qualsiasi modulo esistente con una nuova sessione anziché crearne uno nuovo ogni volta che viene importata una 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.
- PowerShell remoto conteneva vari tipi di dati complessi che non erano intenzionalmente 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 una sola 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. Le connessioni Remote PowerShell richiedono l'autenticazione di base di WinRM e i cmdlet di PowerShell remoti non sono disponibili se l'autenticazione di base è disabilitata in WinRM.
- Il parametro Identity per i cmdlet V2 supporta ora Name e Alias. L'uso di Alias o Name rallenta le prestazioni dei cmdlet V2, quindi non è consigliabile usarli.
- È 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 disponibili pochi attributi con tipi di dati diversi e si prevede di gestirli nei prossimi mesi.
- Correzione del bug: problema di riconnessione frequente delle sessioni quando Connect-ExchangeOnline è stato richiamato 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 veniva reindirizzato a una pagina inesistente con 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 combinazione 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 PowerShell remoti non riescono in modo intermittente a causa del tempo in cui la differenza tra la scadenza del token e la sessione diventa inattiva.
- Aggiornamento principale della sicurezza.
- Correzioni di bug e miglioramenti.