Exchange Online PowerShell に接続する

この記事では、多要素認証 (MFA) の有無にかかわらず、Exchange Online PowerShell モジュールを使用して powerShell Exchange Onlineに接続する方法について説明します。

Exchange Online PowerShell モジュールでは、最新の認証を使用して、Microsoft 365 のすべての Exchange 関連 PowerShell 環境 (Exchange Online PowerShell、セキュリティ & コンプライアンス PowerShell、スタンドアロン Exchange Online Protection (EOP) PowerShell) に接続します。 Exchange Online PowerShell モジュールの詳細については、「Exchange Online PowerShell モジュールについて」を参照してください。

注:

バージョン 2.0.5 以前は、Exchange Online PowerShell V2 モジュール (EXO V2 モジュールと略記) と呼ばれます。 バージョン 3.0.0 以降は、Exchange Online PowerShell V3 モジュール (EXO V3 モジュールと略記) と呼ばれます。

自動化のために PowerShell Exchange Onlineに接続するには、「無人スクリプトのアプリ専用認証」を参照してください。

最終的に廃止される、古く安全性の低いリモート PowerShell の接続手順を使用するには、「基本認証 - Exchange Online PowerShell に接続する」を参照してください。

以前の Exchange Online リモート PowerShell モジュールを使用して、MFA を使用する Exchange Online PowerShell に接続するには、「V1 モジュール - MFA を使用して Exchange Online PowerShell に接続する」を参照してください。 この以前のバージョンのモジュールは最終的に廃止されることにご注意ください。

はじめに把握しておくべき情報

  • モジュールのインストールと使用に関する要件については、「Exchange Online PowerShell モジュールのインストールと保守」を参照してください。

    注:

    EXO V3 モジュール (v3.0.0 または v2.0.6-PreviewX) を使用していて、Connect-ExchangeOnline コマンドで UseRPSSession スイッチを使用していない場合は、REST API コマンドレットにのみアクセスできます。 詳細については、「バージョン 3.0.0 の更新 (EXO V3 モジュール)」を参照してください。

  • 接続後、アクセスできるまたはアクセスできないコマンドレットとパラメーターは、役割ベースのアクセス制御 (RBAC) によって制御されます。 詳細については、「Exchange Online のアクセス許可」を参照してください。

    特定の Exchange Online コマンドレットを実行するために必要なアクセス許可を調べるには、「Exchange コマンドレットを実行するために必要なアクセス許可を検索する」を参照してください。

  • 組織がオンプレミスの Exchange を使用していて、Exchange Online Protection (EOP) 用のサービス ライセンスの Exchange Enterprise CAL を所有している場合は、この記事で説明されているように、EOP PowerShell 接続の手順は Exchange Online PowerShell と同じです。

ヒント

問題が発生する場合 Exchange Online フォーラムに質問してください。

手順 1: Exchange Online PowerShell モジュールを読み込む

注:

モジュールが既にインストールされている場合は、通常、この手順をスキップし、最初にモジュールを手動で読み込まずに Connect-ExchangeOnline を実行できます。

モジュールをインストールしたら、PowerShell ウィンドウを開き、次のコマンドを実行してモジュールを読み込みます。

Import-Module ExchangeOnlineManagement

手順 2: 接続して認証する

実行する必要があるコマンドでは、次の構文を使用します。

Connect-ExchangeOnline -UserPrincipalName <UPN> [-UseRPSSession] [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-PSSessionOption $ProxyOptions]

詳細な構文とパラメーターの詳細については、「Connect-ExchangeOnline」を参照してください。

:

  • <UPN> は、ユーザー プリンシパル名形式のアカウントです (例: navin@contoso.onmicrosoft.com)。

  • EXO V3 モジュール (v3.0.0 または v2.0.6-PreviewX) では、 UseRPSSession スイッチを使用しない場合は、REST API コマンドレットのみを使用します。 詳細については、「バージョン 3.0.0 の更新 (EXO V3 モジュール)」を参照してください。

  • ExchangeEnvironmentNameパラメーターを使用する場合、ConnectionUri もしくは AzureADAuthorizationEndPointUrlパラメーターを使う必要はありません。 ExchangeEnvironmentName パラメーターの一般的な値を次の表に示します。

    環境
    Microsoft 365 または Microsoft 365 GCC 該当なし*
    Microsoft 365 GCC High O365USGovGCCHigh
    Microsoft 365 DoD O365USGovDoD
    Office 365 Germany O365GermanyCloud
    21Vianet が運用している Office 365 O365China

    * 必要な値 O365Default も既定値であるため、Microsoft 365 または Microsoft 365 GCC 環境で ExchangeEnvironmentName パラメーターを使用する必要はありません。

  • DelegatedOrganization パラメーターは、承認された Microsoft パートナーとして管理する顧客組織を指定します。 詳細については、 この記事の後半の接続例を参照してください。

  • プロキシ サーバーの背後にいる場合は、接続コマンドで PSSessionOption パラメーターを使用できますが、 UseRPSSession スイッチも使用する場合にのみ使用できます。 最初に、次のコマンドを実行します。 $ProxyOptions = New-PSSessionOption -ProxyAccessType <Value>ここで <、値> は IEConfig、、 WinHttpConfig、または AutoDetectです。 次に、PSSessionOption パラメーターの値$ProxyOptionsを使用します。 詳細については、「New-PSSessionOption」を参照してください。

  • 組織の性質によっては、接続コマンドで UserPrincipalName パラメーターを省略できる場合があります。 代わりに、ユーザー名とパスワードを入力するか、Connect-ExchangeOnline コマンドを実行した後に保存されている資格情報を選択します。 機能しない場合は、UserPrincipalName パラメーターを使用する必要があります。

  • MFA を使用していない場合は、多くの場合、UserPrincipalName パラメーターではなく Credential パラメーターを使用できます。 まず、コマンド $Credential = Get-Credentialを実行し、ユーザー名とパスワードを入力し、 Credential パラメーター (-Credential $Credential) に変数名を使用します。 機能しない場合は、UserPrincipalName パラメーターを使用する必要があります。

  • PowerShell 7 でモジュールを使用するには、バージョン 2.0.4 以降が必要です。

次のセクションの接続例では、先進認証を使用します。基本認証を使用することはできません。

対話型ログイン プロンプトを使用して PowerShell Exchange Onlineに接続する

  1. 次の例は、MFA の有無にかかわらず、Windows PowerShell 5.1 および PowerShell 7 で動作します。

    • この例では、以下の Microsoft 365 または Microsoft 365 GCC 組織でExchange Online PowerShell に接続します

      Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • この例では、以下の Microsoft GCC High 組織で、Exchange Online PowerShell に接続します

      Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
      
    • この例では、以下の Microsoft 365 DoD 組織で、Exchange Online PowerShell に接続します

      Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
      
    • この例では、以下の Office 365 Germany 組織で、Exchange Online PowerShell に接続します

      Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
      
  2. 表示されるサインイン ウィンドウで、パスワードを入力し、[サインイン] をクリックします。

    [アカウントへのサインイン] ウィンドウでパスワードを入力します。

    注:

    PowerShell 7 では、ブラウザー ベースのシングル サインオン (SSO) が既定で使用されるため、スタンドアロン ダイアログではなく既定の Web ブラウザーでサインイン プロンプトが開きます。

  3. MFA のみ: 確認コードが生成され、アカウントに対して構成されている応答オプション (テキスト メッセージまたはお持ちのデバイスの Microsoft Authenticator アプリなど) に基づいて配信されます。

    表示される確認ウィンドウで、確認コードを入力して、[検証する] をクリックします。

    [アカウントへのサインイン] ウィンドウで確認コードを入力します。

PowerShell 7 排他接続メソッド

  • MFA のないアカウントの PowerShell 7 では、次の例では、PowerShell ウィンドウ内で資格情報の入力を求めます。

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • MFA の有無に関係なくアカウントの PowerShell 7 では、この例では別のコンピューターを使用して接続を認証して完了します。 通常、Web ブラウザーを持たないコンピューターでこの方法を使用します (ユーザーは PowerShell 7 で資格情報を入力できません)。

    1. 接続するコンピューターで次のコマンドを実行します。

      Connect-ExchangeOnline -Device
      

      接続コマンドは、次の出力で待機します。

      サインインするには、Web ブラウザーを使用してページ https://microsoft.com/devicelogin を開き、認証するコード <XXXXXXXXX を> 入力します。

      XXXXXXXXX> コード値をメモします<。

    2. Web ブラウザーとインターネット アクセスを備えたその他のデバイスで、前の手順の <XXXXXXXXX> コード値を開https://microsoft.com/deviceloginいて入力します。

    3. 結果のページに資格情報を入力します。

    4. 確認プロンプトで、[ 続行] をクリックします。 次のメッセージは成功を示し、ブラウザーまたはタブを閉じることができます。

    5. 手順 1 のコマンドは、引き続き PowerShell Exchange Onlineに接続します。

ログイン プロンプトなしで PowerShell Exchange Onlineに接続する (無人スクリプト)

完全な手順については、「Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell の無人スクリプトのアプリ専用認証」を参照してください。

重要

次の例では、ログイン プロンプトなしで接続しますが、資格情報はローカルに格納されるため、このメソッドは安全ではありません。 この方法は、簡単なテスト目的でのみ使用することを検討してください。

$secpasswd = ConvertTo-SecureString -String '<YourPasswordHere>' -AsPlainText -Force 

$o365cred = New-Object System.Management.Automation.PSCredential ("navin@contoso.onmicrosoft.com", $secpasswd) 

Connect-ExchangeOnline -Credential $o365cred

顧客組織Exchange Online PowerShell に接続する

パートナーと顧客組織の詳細については、次のトピックを参照してください。

この例では、次のシナリオで顧客組織に接続します。

  • CSP アカウントを使用して顧客組織に接続します。

  • GDAP を使用して顧客組織に接続します。

  • ゲスト ユーザーとして顧客組織に接続します。

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

マネージド ID を使用して PowerShell Exchange Onlineに接続する

マネージド ID は現在、Azure Virtual Machines、Virtual Machine Scale Sets、Azure Functionsでサポートされています。 マネージド ID の詳細については、「 Azure リソースのマネージド ID とは」を参照してください。

  • システム割り当てマネージド ID:

    Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
    
  • ユーザー割り当てマネージド ID:

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

手順 3: 完了したら切断する

完了したら、必ずセッションを切断してください。 セッションを切断せずに PowerShell ウィンドウを閉じると、使用可能なすべてのセッションを使い切ることができ、セッションの有効期限が切れるのを待つ必要があります。 セッションを切断するには、次のコマンドを実行します。

Disconnect-ExchangeOnline

確認プロンプトなしでサイレント切断するには、次のコマンドを実行します。

Disconnect-ExchangeOnline -Confirm:$false

正常に接続されているのはどうすればわかりますか?

エラーが表示されない場合は、正常に接続されています。 簡単なテストでは、Exchange Online PowerShell コマンドレット (Get-AcceptedDomain など) を実行し、結果を確認します。

エラーが表示された場合は、次の要件を確認します。

  • よく起きる問題はパスワードの入力ミスです。 接続手順をもう一度実行し、使用するユーザー名とパスワードに細心の注意を払います。

  • サービス拒否 (DoS) 攻撃を防ぐために、UseRPSSession スイッチを使用して接続する場合、PowerShell をExchange Onlineするためのオープン接続は 5 つに制限されます。

  • 接続に使用するアカウントは、リモート PowerShell に対して有効になっている必要があります。 詳細については、「Exchange Online PowerShell へのアクセスを有効または無効にする」を参照してください。

  • ローカル コンピューターと Microsoft 365 の間に TCP ポート 80 のトラフィックを開く必要があります。 組織で厳格なインターネット アクセス ポリシーが使用されている場合は、開いている可能性がありますが、確認する必要があります。

  • 組織でフェデレーション認証を使用していて、ID プロバイダー (IDP) またはセキュリティ トークン サービス (STS) へのパブリック アクセスができない場合は、フェデレーション アカウントを使用して Exchange Online PowerShell に接続することはできません。 代わりに、Microsoft 365 で非フェデレーション アカウントを作成し、それを使用して Exchange Online PowerShell に接続します。

付録: 古い接続方法と新しい接続方法の比較

このセクションでは、Exchange Online PowerShell モジュールで置き換えられた古い接続メソッドの比較を試みます。 基本認証と OAuth トークンの手順は、履歴参照にのみ含まれており、サポートされなくなりました。

多要素認証なしで接続する

  • 対話型資格情報プロンプトを使用して PowerShell モジュールをExchange Onlineします。

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • 対話型資格情報プロンプトなしで PowerShell モジュールをExchange Onlineします。

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    Connect-ExchangeOnline -Credential $o365cred
    
  • 基本認証:

    $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
    
  • OAuth トークンを使用した New-PSSession:

    $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
    

多要素認証で接続する

  • 対話型資格情報プロンプトを使用して PowerShell モジュールをExchange Onlineします。

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • 基本認証: 使用できません。

  • OAuth トークンを使用した New-PSSession: 使用できません。

CSP アカウントを使用して顧客組織に接続する

  • PowerShell モジュールをExchange Onlineします。

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • 基本認証:

    $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
    
  • OAuth トークンを使用した New-PSSession:

    $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
    

GDAP を使用して顧客組織に接続する

  • PowerShell モジュールをExchange Onlineします。

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • 基本認証:

    $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
    
  • OAuth トークンを使用した New-PSSession:

    $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
    

ゲスト ユーザーとして顧客組織に接続する

  • PowerShell モジュールをExchange Onlineします。

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • 基本認証:

    $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
    
  • OAuth トークンを使用した New-PSSession:

    $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
    

接続して無人スクリプトを実行する

  • PowerShell モジュールをExchange Onlineします。

    • 証明書の拇印:

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Certificate オブジェクト:

      Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • 証明書ファイル:

      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"
      

    詳細については、「Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell の無人スクリプトのアプリ専用認証」を参照してください。

  • 基本認証:

    $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
    
  • OAuth トークンを使用した New-PSSession:

    $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
    

マネージド ID を使用して接続する

  • PowerShell モジュールをExchange Onlineします。

    • システム割り当てマネージド ID:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • ユーザー割り当てマネージド ID:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com" -ManagedIdentityAccountId <UserAssignedManagedIdentityPrincipalIdValue>
      

    詳細については、「Azure マネージド ID を使用して PowerShell に接続する」Exchange Online参照してください。

  • 基本認証: 使用できません。

  • OAuth トークンを使用した New-PSSession: 使用できません。