Connettersi a PowerShell per Exchange Online
Questo articolo contiene istruzioni su come connettersi a Exchange Online PowerShell usando il modulo di PowerShell Exchange Online con o senza autenticazione a più fattori.
Il modulo Exchange Online PowerShell usa l'autenticazione moderna per la connessione a tutti gli ambienti PowerShell correlati a Exchange in Microsoft 365: Exchange Online PowerShell, PowerShell sicurezza & conformità e PowerShell autonomo Exchange Online Protection (EOP). Per altre informazioni sul modulo Exchange Online PowerShell, vedere Informazioni sul modulo Exchange Online PowerShell.
Per connettersi a Exchange Online PowerShell per l'automazione, vedere Autenticazione solo app per script automatici e Usare le identità gestite di Azure per connettersi a Exchange Online PowerShell.
Per connettersi a Exchange Online PowerShell da C#, vedere Usare C# per connettersi a Exchange Online PowerShell.
Che cosa è necessario sapere prima di iniziare?
I requisiti per l'installazione e l'uso del modulo sono descritti in Installare e gestire il modulo Exchange Online PowerShell.
Nota
Le connessioni Remote PowerShell sono deprecate in Exchange Online PowerShell. Per altre informazioni, vedere Deprecation of Remote PowerShell in Exchange Online.For more information, see Deprecation of Remote PowerShell in Exchange Online.
Le connessioni API REST nel modulo Exchange Online PowerShell V3 richiedono i moduli PowerShellGet e PackageManagement. Per altre informazioni, vedere PowerShellGet per le connessioni basate su REST in Windows.
In seguito alla connessione, i cmdlet e i parametri per cui si dispone o meno dell'accesso vengono controllati dal controllo degli accessi in base al ruolo. Per ulteriori informazioni, vedere Autorizzazioni in Exchange Online.
Per individuare le autorizzazioni necessarie per eseguire cmdlet specifici di Exchange Online, vedere Trovare le autorizzazioni necessarie per eseguire i cmdlet di Exchange.
Consiglio
Problemi? Chiedere nel forum Exchange Online.
Passaggio 1: Caricare il modulo Exchange Online PowerShell
Nota
Se il modulo è già installato, è in genere possibile ignorare questo passaggio ed eseguire Connect-ExchangeOnline senza prima caricare manualmente il modulo.
Dopo aver installato il modulo, aprire una finestra di PowerShell e caricare il modulo eseguendo il comando seguente:
Import-Module ExchangeOnlineManagement
Passaggio 2: Connettersi e autenticare
Nota
È probabile che i comandi connect non riescano se il percorso del profilo dell'account usato per la connessione contiene caratteri di PowerShell speciali , $
ad esempio . La soluzione alternativa consiste nel connettersi usando un account diverso che non include caratteri speciali nel percorso del profilo.
Il comando da eseguire utilizza la sintassi seguente:
Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]
Per informazioni dettagliate su sintassi e parametri, vedere Connect-ExchangeOnline.
<UPN> è l'account nel formato del nome dell'entità utente ,
navin@contoso.onmicrosoft.com
ad esempio .Con il modulo EXO V3 (v3.0.0 o versione successiva) e la scomparsa delle connessioni di autenticazione di base (Remote PowerShell) a Exchange Online, si usano solo i cmdlet dell'API REST. Per altre informazioni, vedere Connessioni API REST nel modulo EXO V3.
Se si usa il parametro ExchangeEnvironmentName, non è necessario usare i parametri ConnectionUri o AzureADAuthorizationEndPointUrl. I valori comuni per il parametro ExchangeEnvironmentName sono descritti nella tabella seguente:
Ambiente Valore Microsoft 365 o Microsoft 365 GCC n/d* Microsoft 365 GCC High O365USGovGCCHigh
Microsoft 365 DOD O365USGovDoD
Office 365 Germany O365GermanyCloud
Office 365 gestito da 21Vianet O365China
* Il valore
O365Default
obbligatorio è anche il valore predefinito, quindi non è necessario usare il parametro ExchangeEnvironmentName negli ambienti GCC di Microsoft 365 o Microsoft 365.Il parametro DelegatedOrganization specifica l'organizzazione che si vuole gestire come partner Microsoft autorizzato. Per altre informazioni, vedere gli esempi di connessione più avanti in questo articolo.
A seconda della natura dell'organizzazione, è possibile omettere il parametro UserPrincipalName nel comando di connessione. Al contrario, immettere il nome utente e la password o selezionare le credenziali archiviate dopo aver eseguito il comando Connect-ExchangeOnline. Se questa operazione non funziona, è necessario usare il parametro UserPrincipalName.
Se non si usa l'autenticazione a più fattori (MFA), dovrebbe essere possibile usare il parametro Credential anziché il parametro UserPrincipalName. Per prima cosa, eseguire il comando
$Credential = Get-Credential
, immettere nome utente e password, quindi usare il nome variabile per il parametro Credential (-Credential $Credential
). Se questa operazione non funziona, è necessario usare il parametro UserPrincipalName.Usare l'opzione SkipLoadingFormatData per evitare errori durante la connessione a Exchange Online PowerShell dall'interno di un servizio Windows.
L'uso del modulo in PowerShell 7 richiede la versione 2.0.4 o successiva.
Gli esempi di connessione nelle sezioni seguenti usano l'autenticazione moderna e non sono in grado di usare l'autenticazione di base.
Connettersi a Exchange Online PowerShell con un prompt di accesso interattivo
Gli esempi seguenti funzionano in Windows PowerShell 5.1 e PowerShell 7 per gli account con o senza MFA:
Questo esempio consente di connettersi a PowerShell di Exchange online in un'organizzazione di Microsoft 365 o Microsoft 365 GCC:
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
Questo esempio consente di connettersi a PowerShell di Exchange online in un'organizzazione di Microsoft GCC High:
Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
Questo esempio consente di connettersi a PowerShell di Exchange online in un'organizzazione di Microsoft 365 DoD:
Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
Questo esempio consente di connettersi a PowerShell di Exchange online in un'organizzazione di Microsoft 365 Germany:
Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
Nella finestra di accesso che viene visualizzata, immettere la password, quindi fare clic su Accedi.
Nota
In PowerShell 7 viene usato l'accesso Single Sign-On (SSO) basato su browser per impostazione predefinita, quindi il prompt di accesso viene aperto nel Web browser predefinito anziché in una finestra di dialogo autonoma.
Solo per l’autenticazione a più fattori: un codice di verifica viene creato e fornito in base all'opzione di risposta configurata per l'account in uso (ad esempio, un messaggio di testo o l'app Microsoft Authenticator sul dispositivo).
Nella finestra di verifica che viene visualizzata, immettere il codice di verifica, quindi fare clic su Verifica.
Metodi di connessione esclusiva di PowerShell 7
In PowerShell 7 per gli account senza MFA questo esempio richiede le credenziali all'interno della finestra di PowerShell:
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
In PowerShell 7 per gli account con o senza MFA, questo esempio usa un altro computer per autenticare e completare la connessione. In genere, questo metodo viene usato nei computer che non dispongono di Web browser (gli utenti non sono in grado di immettere le proprie credenziali in PowerShell 7):
Eseguire il comando seguente nel computer in cui si vuole connettersi:
Connect-ExchangeOnline -Device
Il comando di connessione attende l'output seguente:
Per accedere, usare un Web browser per aprire la pagina https://microsoft.com/devicelogin e immettere il codice <XXXXXXXXX> per l'autenticazione.
Si noti il valore del <codice XXXXXXXXX> .
In qualsiasi altro dispositivo con un Web browser e un accesso a Internet aprire https://microsoft.com/devicelogin e immettere il valore del <codice XXXXXXXXX> del passaggio precedente.
Immettere le credenziali nelle pagine risultanti.
Nella richiesta di conferma fare clic su Continua. Il messaggio successivo dovrebbe indicare l'esito positivo ed è possibile chiudere il browser o la scheda.
Il comando del passaggio 1 continua a connettersi a Exchange Online PowerShell.
Connettersi a Exchange Online PowerShell senza una richiesta di accesso (script automatici)
Per istruzioni complete, vedere Autenticazione solo app per script automatici in PowerShell Exchange Online PowerShell e Sicurezza & Conformità a PowerShell.
Connettersi a Exchange Online PowerShell nelle organizzazioni dei clienti
Per altre informazioni su partner e organizzazioni dei clienti, vedere gli argomenti seguenti:
- Che cos'è il programma Cloud Solution Provider (CSP).What is the Cloud Solution Provider (CSP)?.
- Introduzione ai privilegi di amministratore delegato granulare (GDAP)
Questo esempio si connette alle organizzazioni dei clienti negli scenari seguenti:
Connettersi a un'organizzazione cliente usando un account CSP.
Connettersi a un'organizzazione cliente usando un GDAP.
Connettersi a un'organizzazione cliente come utente guest.
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com
Connettersi a Exchange Online PowerShell usando l'identità gestita
Per altre informazioni, vedere Usare le identità gestite di Azure per connettersi a Exchange Online PowerShell.
Identità gestita assegnata dal sistema:
Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
Identità gestita assegnata dall'utente:
Connect-ExchangeOnline -ManagedIdentity -Organization "constoso.onmicrosoft.com" -ManagedIdentityAccountId <ManagedIdentityAccountIdGuid>
Passaggio 3: Disconnetti al termine
Assicurarsi di disconnettere la sessione al termine. Se si chiude la finestra di PowerShell senza disconnettere la sessione, è possibile usare tutte le sessioni disponibili ed è necessario attendere la scadenza delle sessioni. Per disconnettere la sessione, eseguire il comando seguente:
Disconnect-ExchangeOnline
Per disconnettersi in modo invisibile all'utente senza un prompt di conferma, eseguire il comando seguente:
Disconnect-ExchangeOnline -Confirm:$false
Nota
È probabile che il comando di disconnessione non riesca se il percorso del profilo dell'account usato per la connessione contiene caratteri di PowerShell speciali , $
ad esempio . La soluzione alternativa consiste nel connettersi usando un account diverso che non include caratteri speciali nel percorso del profilo.
Come si fa a sapere che la connessione è stata eseguita correttamente?
Se non si ricevono errori, la connessione è stata eseguita correttamente. Un test rapido consiste nell'eseguire un cmdlet di PowerShell Exchange Online, ad esempio Get-AcceptedDomain, e visualizzare i risultati.
Se non vengono visualizzati errori, controllare i requisiti seguenti:
Un problema comune è rappresentato da una password errata. Eseguire di nuovo i passaggi di connessione e prestare particolare attenzione al nome utente e alla password usati.
L'account usato per connettersi a deve essere abilitato per l'accesso a PowerShell. Per altre informazioni, vedere Abilitare o disabilitare l’accesso a PowerShell di Exchange Online..
Il traffico sulla porta TCP 80 deve essere aperto tra il computer locale e Microsoft 365. È probabile che sia aperto, ma è bene verificare se l'organizzazione prevede criteri restrittivi relativi all'accesso a Internet.
Se l'organizzazione usa l'autenticazione federata e il provider di identità (IDP) e/o il servizio token di sicurezza (STS) non è disponibile pubblicamente, non è possibile usare un account federato per connettersi a PowerShell per Exchange Online. Per connettersi a PowerShell per Exchange Online, creare e usare invece un account non federato in Microsoft 365.
Le connessioni basate su REST a Exchange Online PowerShell richiedono il modulo PowerShellGet e, per dipendenza, il modulo PackageManagement, quindi si riceveranno errori se si tenta di connettersi senza installarli. Ad esempio, potrebbe essere visualizzato l'errore seguente:
Il termine "Update-ModuleManifest" non è riconosciuto come nome di un cmdlet, di una funzione, di un file di script o di un programma operabile. Controllare l'ortografia del nome oppure, se è stato incluso un percorso, verificare che questo sia corretto e riprovare.
Per altre informazioni sui requisiti del modulo PowerShellGet e PackageManagement, vedere PowerShellGet per le connessioni basate su REST in Windows.
Dopo la connessione, è possibile che venga visualizzato un errore simile al seguente:
Impossibile caricare il file o l'assembly 'System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken=<TokenValue>'. Impossibile trovare o caricare un file specifico.
Questo errore si verifica quando il modulo Exchange Online PowerShell è in conflitto con un altro modulo importato nello spazio di esecuzione. Provare a connettersi in una nuova finestra di Windows PowerShell prima di importare altri moduli.
Appendice: Confronto tra i metodi di connessione vecchi e nuovi
Questa sezione tenta di confrontare i metodi di connessione meno recenti che sono stati sostituiti dal modulo Exchange Online PowerShell. Le procedure di autenticazione di base e token OAuth sono incluse solo per riferimento cronologico e non sono più supportate.
Connettersi senza l'autenticazione a più fattori
Exchange Online modulo di PowerShell con richiesta di credenziali interattive:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
Exchange Online modulo di PowerShell senza richiesta di credenziali interattive:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) Connect-ExchangeOnline -Credential $o365cred
Autenticazione di base:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
New-PSSession con token OAuth:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
Connettersi con l'autenticazione a più fattori
Exchange Online modulo di PowerShell con richiesta di credenziali interattive:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
Autenticazione di base: non disponibile.
New-PSSession con token OAuth: non disponibile.
Connettersi a un'organizzazione cliente con un account CSP
Exchange Online modulo PowerShell:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
Autenticazione di base:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
New-PSSession con token OAuth:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/? DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
Connettersi a un'organizzazione del cliente tramite GDAP
Exchange Online modulo PowerShell:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
Autenticazione di base:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
New-PSSession con token OAuth:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
Connettersi a un'organizzazione del cliente come utente guest
Exchange Online modulo PowerShell:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
Autenticazione di base:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
New-PSSession con token OAuth:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
Connettersi per eseguire script automatici
Exchange Online modulo PowerShell:
Identificazione personale del certificato:
Nota
Il parametro CertificateThumbprint è supportato solo in Microsoft Windows.
Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
Oggetto Certificato:
Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
File di certificato:
Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
Per altre informazioni, vedere Autenticazione solo app per script automatici in PowerShell Exchange Online e PowerShell per la conformità & sicurezza.
Autenticazione di base:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
New-PSSession con token OAuth:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@contoso.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
Connettersi usando l'identità gestita
Exchange Online modulo PowerShell:
Identità gestita assegnata dal sistema:
Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
Identità gestita assegnata dall'utente:
Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com" -ManagedIdentityAccountId <UserAssignedManagedIdentityPrincipalIdValue>
Per altre informazioni, vedere Usare le identità gestite di Azure per connettersi a Exchange Online PowerShell.
Autenticazione di base: non disponibile.
New-PSSession con token OAuth: non disponibile.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per