Connettersi a PowerShell per Exchange Online

Questo articolo contiene istruzioni su come connettersi a PowerShell per Exchange Online usando il modulo PowerShell di Exchange Online con o senza autenticazione a più fattori (MFA).

Consiglio

Le istruzioni di connessione fornite in questo articolo si applicano anche al componente aggiuntivo per la sicurezza predefinito per le cassette postali locali.

Il modulo Exchange Online PowerShell usa l'autenticazione moderna per la connessione a PowerShell e Exchange Online PowerShell per la sicurezza & la conformità. Per altre informazioni sul modulo PowerShell di Exchange Online, vedere Informazioni sul modulo PowerShell di Exchange Online.

Per connettersi a PowerShell di Exchange Online per l'automazione, vedere Autenticazione solo tramite app per script automatici e Usare le identità gestite di Azure per connettersi a PowerShell di Exchange Online.

Per connettersi a Exchange Online PowerShell da C#, vedere Usare C# per connettersi a PowerShell di Exchange Online.

Che cosa è necessario sapere prima di iniziare?

Passaggio 1: Caricare il modulo PowerShell di Exchange Online

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 autenticarsi

Nota

I comandi di connessione probabilmente non riescono se il percorso del profilo dell'account utilizzato per la connessione contiene caratteri speciali di PowerShell, $ad esempio . La soluzione alternativa consiste nel connettersi usando un account diverso che non contenga caratteri speciali nel percorso del profilo.

Il comando da eseguire utilizza la sintassi seguente:

Connect-ExchangeOnline [-UserPrincipalName <UPN>] [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-LoadCmdletHelp] [-DelegatedOrganization <String>] [-SkipLoadingFormatData] [-DisableWAM]

Per informazioni dettagliate su sintassi e parametri, vedere Connect-ExchangeOnline.

  • <UPN> è l'account nel formato del nome dell'entità utente, navin@contoso.onmicrosoft.comad esempio .

  • 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 richiesto è anche quello predefinito, quindi non è necessario usare il parametro ExchangeEnvironmentName negli ambienti Microsoft 365 o Microsoft 365 GCC.

  • Nella versione 3.7.0 o successiva, la Guida della riga di comando per i cmdlet PowerShell di Exchange Online non viene più caricata per impostazione predefinita. Utilizzare l'opzione LoadCmdletHelp in modo che la Guida per i cmdlet di PowerShell di Exchange Online sia disponibile per il cmdlet Get-Help.

  • 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.

  • Utilizzare l'opzione SkipLoadingFormatData per evitare errori durante la connessione a PowerShell di Exchange Online dall'interno di un servizio Windows.

  • PowerShell 7 richiede la versione 2.0.4 o successiva.

  • Nella versione 3.7.2 o successive, l'opzione DisableWAM è disponibile per disabilitare Gestione account Web (WAM) se si verificano errori di connessione correlati a WAM.

Gli esempi di connessione nelle sezioni seguenti usano l'autenticazione moderna, e non sono in grado di usare l'autenticazione di base.

Connettersi a PowerShell per Exchange Online con un prompt di accesso interattivo

  1. 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
      
  2. Nella finestra di accesso visualizzata immettere la password e quindi selezionare Accedi.

    Immettere la password nella finestra Accedi al tuo account.

    Nota

    In PowerShell 7, l'accesso Single Sign-On (SSO) basato su browser viene usato per impostazione predefinita, quindi la richiesta di accesso viene aperta nel Web browser predefinito anziché in una finestra di dialogo autonoma.

  3. Solo autenticazione a più fattori: viene generato e recapitato un codice di verifica in base all'opzione di risposta configurata per l'account (ad esempio, un SMS o l'app Microsoft Authenticator sul dispositivo).

    Nella finestra di verifica visualizzata immettere il codice di verifica e quindi selezionare Verifica.

    Immettere il codice di verifica nella finestra Accedi al tuo account.

Metodi di connessione esclusivi 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, si usa questo metodo nei computer che non dispongono di Web browser (gli utenti non sono in grado di immettere le credenziali in PowerShell 7):

    1. Esegui il comando seguente nel computer a cui vuoi connetterti:

      Connect-ExchangeOnline -Device
      

      Il comando connection attende al seguente output:

      Per accedere, usare un Web browser per aprire la pagina https://microsoft.com/devicelogin e immettere il codice <XXXXXXXXX> per eseguire l'autenticazione.

      Prendere nota del valore del <codice XXXXXXXXX> .

    2. In qualsiasi altro dispositivo con un Web browser e accesso a Internet, apri https://microsoft.com/devicelogin e immetti il valore del <codice XXXXXXXXX> del passaggio precedente.

    3. Immetti le credenziali nelle pagine risultanti.

    4. Nel prompt di conferma selezionare Continua. Il messaggio successivo dovrebbe indicare l'esito positivo ed è possibile chiudere il browser o la scheda.

    5. Il comando del passaggio 1 continua a connettere gli utenti a PowerShell per Exchange Online.

Connettersi a PowerShell per Exchange Online senza una richiesta di accesso (script automatici)

Per istruzioni complete, vedere Autenticazione solo app per script automatici in Exchange Online PowerShell e Sicurezza & Conformità PowerShell.

Connettersi a PowerShell per Exchange Online nelle organizzazioni dei clienti

Per ulteriori informazioni sui partner e sulle organizzazioni clienti, vedere gli articoli seguenti:

Questo esempio si connette alle organizzazioni dei clienti negli scenari seguenti:

  • Connettersi a un'organizzazione cliente utilizzando un account CSP.

  • Connettersi a un'organizzazione del cliente usando un GDAP.

  • Connettersi a un'organizzazione cliente come guest.

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com
    

Connettersi a PowerShell per Exchange Online usando l'identità gestita

Per ulteriori informazioni, vedere Usare le identità gestite di Azure per connettersi a PowerShell per Exchange Online.

  • Identità gestita assegnata dal sistema:

    Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
    
  • Identità gestita assegnata assegnata dall'utente:

    Connect-ExchangeOnline -ManagedIdentity -Organization "constoso.onmicrosoft.com" -ManagedIdentityAccountId <ManagedIdentityAccountIdGuid>
    

Passaggio 3: disconnettiti quando hai finito

Al termine, assicurarsi di disconnettere la sessione. Se chiudi la finestra di PowerShell senza disconnettere la sessione, potresti usare tutte le sessioni disponibili ed è necessario attendere la scadenza delle sessioni. Per disconnettere la sessione, eseguire il comando seguente:

Disconnect-ExchangeOnline

Per disconnettersi automaticamente senza una richiesta di conferma, esegui il comando seguente:

Disconnect-ExchangeOnline -Confirm:$false

Nota

È probabile che il comando disconnect abbia esito negativo se il percorso del profilo dell'account utilizzato per la connessione contiene caratteri speciali di PowerShell, $ad esempio . La soluzione alternativa consiste nel connettersi usando un account diverso che non contenga caratteri speciali nel percorso del profilo.

Come fai a sapere se ti sei connesso correttamente?

Se non vengono visualizzati errori, la connessione è stata eseguita correttamente. Un test rapido consiste nell'eseguire un cmdlet di PowerShell di 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 in uso.

  • L'account usato per la connessione 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. Creare e usare invece un account non federato in Microsoft 365 per connettersi a PowerShell per Exchange Online.

  • Le connessioni basate su REST a PowerShell di Exchange Online richiedono il modulo PowerShellGet. Per dipendenza, il modulo PowerShellGet richiede il modulo PackageManagement. Se tenti di connetterti senza aver installato entrambi i moduli, vengono visualizzati degli errori. Ad esempio, potrebbe essere visualizzato l'errore seguente:

    Il termine "Update-ModuleManifest" non è riconosciuto come nome di un cmdlet, una funzione, un file di script o un programma eseguibile. 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 connessioni basate su REST in Windows.

  • Dopo la connessione, è possibile che venga visualizzato un messaggio di 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 PowerShell di Exchange Online è 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 vecchi e nuovi metodi di connessione

In questa sezione viene cercato di confrontare i metodi di connessione precedenti sostituiti dal modulo PowerShell di Exchange Online. L'autenticazione di base e le procedure del token OAuth sono incluse solo per riferimento cronologico e non sono più supportate.

Connettersi senza autenticazione a più fattori

  • Modulo PowerShell di Exchange Online con richiesta di credenziali interattive:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Modulo PowerShell di Exchange Online 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

  • Modulo PowerShell di Exchange Online 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

  • Modulo PowerShell di Exchange Online:

    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 utilizzando GDAP

  • Modulo PowerShell di Exchange Online:

    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 cliente come guest

  • Modulo PowerShell di Exchange Online:

    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
    

Connettiti per eseguire script automatici

  • Modulo PowerShell di Exchange Online:

    • 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 gli script automatici in PowerShell Exchange Online e Sicurezza & Conformità PowerShell.

  • 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

  • Modulo PowerShell di Exchange Online:

    • 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 ulteriori informazioni, vedere Usare le identità gestite di Azure per connettersi a PowerShell per Exchange Online.

  • Autenticazione di base: non disponibile.

  • New-PSSession con token OAuth: non disponibile.