Exchange Online PowerShell モジュールについて

Exchange Online PowerShell モジュールは、最新の認証を使用し、Microsoft 365 のすべての Exchange 関連 PowerShell 環境に接続するために多要素認証 (MFA) の有無にかかわらず動作します。Exchange Online PowerShell、セキュリティ & コンプライアンス PowerShell、スタンドアロン Exchange Online Protection (EOP) PowerShell。

モジュールを使用した接続手順については、次の記事を参照してください。

この記事の以下のセクションでは、モジュールのしくみ、モジュールをインストールしてメンテンアンスする方法、およびモジュールで使用できる最適化された Exchange Online コマンドレットについて説明します。

ヒント

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

EXO V3 モジュールの REST API 接続

Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell では、すべてのコマンドレットに REST API 接続が使用されるようになりました。

  • Exchange Online PowerShell: EXO V3 モジュール v3.0.0 以降。
  • セキュリティ & コンプライアンス PowerShell: EXO V3 モジュール v3.2.0 以降。

REST API 接続には、PowerShellGet モジュールと PackageManagement モジュールが必要です。 詳細については、「 Windows での REST ベースの接続用 PowerShellGet」を参照してください。

REST API 接続のコマンドレットには、履歴に対応するコマンドレットよりも次の利点があります。

  • より安全: 先進認証の組み込みサポートであり、リモート PowerShell セッションに依存しません。 クライアント コンピューターの PowerShell では、 WinRM での基本認証は必要ありません。
  • 信頼性の向上: 一時的なエラーでは組み込みの再試行が使用されるため、エラーまたは遅延が最小限に抑えられます。 例:
    • ネットワーク遅延によるエラー。
    • 完了に長い時間がかかる大規模なクエリによる遅延。
  • パフォーマンスの向上: REST API 接続では、PowerShell 実行スペースを設定しないようにします。

REST API 接続のコマンドレットの利点を次の表に示します。

  リモート PowerShell コマンドレット Get-EXO* コマンドレット REST API コマンドレット
セキュリティ 最も安全性が低い 安全性が高い 安全性が高い
パフォーマンス パフォーマンスが低い 高パフォーマンス 中程度のパフォーマンス
信頼性 最も信頼性の低い 信頼性の高い 信頼性の高い
機能 使用可能なすべてのパラメーターと出力プロパティ 使用可能な制限付きパラメーターと出力プロパティ 使用可能なすべてのパラメーターと出力プロパティ

REST API コマンドレットには同じコマンドレット名があり、リモートの PowerShell と同じように機能するため、以前のスクリプトでコマンドレット名やパラメーターを更新する必要はありません。

ヒント

Invoke-Command コマンドレットは、REST API 接続では機能しません。 代替案については、「 REST API 接続の Invoke-Command シナリオの回避策」を参照してください。

Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell では、基本認証 (リモート PowerShell) 接続は非推奨になっています。 詳細については、こちらを参照してください。

Exchange Online PowerShell のいくつかのコマンドレットが、REST API 接続の試験的な UseCustomRouting スイッチで更新されました。 このスイッチは、コマンドが必要なメールボックス サーバーに直接ルーティングし、全体的なパフォーマンスが向上する可能性があります。 UseCustomRouting スイッチを実験的に使用します。

  • UseCustomRoutingSwitch を使用する場合は、メールボックスの ID に次の値のみを使用できます。

    • ユーザー プリンシパル名 (UPN)
    • 電子メール アドレス
    • メールボックス GUID
  • UseCustomRouting スイッチは、REST API 接続の次の Exchange Online PowerShell コマンドレットでのみ使用できます。

    • 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
  • Get-ConnectionInformation コマンドレットを使用して、Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell への REST API 接続に関する情報を取得します。 Windows PowerShell の Get-PSSession コマンドレットは REST API 接続の情報を返さないので、このコマンドレットが必要です。

    Get-ConnectionInformation を使用できるシナリオについては、次の表を参照してください。

    シナリオ 予想される出力
    REST API 接続の Connect-ExchangeOnline コマンドまたは Connect-IPPSSession コマンドの後で実行します。 1 つの接続情報オブジェクトを返します。
    REST API 接続 に対して複数の Connect-ExchangeOnline または Connect-IPPSSession コマンドの後で実行します。 接続情報オブジェクトのコレクションを返します。
  • Connect-ExchangeOnline コマンドレットの SkipLoadingFormatData スイッチを使用して、フォーマット データの読み込みを回避し、Connect-ExchangeOnline コマンドをより迅速に実行します。

  • REST API によってサポートされるコマンドレットには 15 分のタイムアウトがあり、一括操作に影響する可能性があります。 たとえば、次の Update-DistributionGroupMember コマンドを使用して、配布グループの 10,000 人のメンバーを更新すると、タイムアウトになる可能性があります。

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

    代わりに、 Update-DistributionGroupMember コマンドを使用して更新するメンバーを減らしてから、 Add-DistributionGroupMember コマンドを使用して残りのメンバーを個別に追加します。 例:

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

EXO V3 モジュールの新機能の詳細については、この記事の後半の 「リリース ノート 」セクションを参照してください。

Exchange Online PowerShell モジュールのプレビュー バージョンのバグと問題を報告する

ヒント

モジュールの一般提供 (GA) バージョンの場合は、次のメール アドレスを使用して問題を報告しないでください。 モジュールの GA バージョンに関するメッセージは応答されません。 代わりに、サポート チケットを開きます。

モジュールのプレビュー バージョンの場合は、exocmdletpreview[at]service[dot]microsoft[dot]comを使用して、発生する可能性がある問題を報告します。 電子メール メッセージにログ ファイルを含める必要があります。 ログ ファイルを生成するには、 <Path> を出力フォルダーに置き換え、次のコマンドを実行します。

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path> -LogLevel All

Exchange Online PowerShell モジュールのコマンドレット

EXO モジュールには、Exchange Online PowerShell の一括データ取得シナリオ (数千と数千のオブジェクト) の速度に最適化された 9 つの排他的 な Get-EXO* コマンドレットが含まれています。 モジュールの改善されたコマンドレットを次の表に示します。

EXO モジュール コマンドレット 古い関連コマンドレット
EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

ヒント

同じウィンドウで Exchange Online PowerShell への複数の接続を開いた場合、 Get-EXO* コマンドレットは常に最後の (最新の) Exchange Online PowerShell 接続に関連付けられます。 次のコマンドを実行して、 Get-EXO* コマンドレットが実行される REST API セッションを見つけます: Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}

モジュール内の接続関連のコマンドレットを次の表に示します。

EXO モジュール コマンドレット 古い関連コマンドレット 注釈
Connect-ExchangeOnline モジュールの V1 での Connect-EXOPSSession
または
New-PSSession
Connect-IPPSSession モジュールの V1 での Connect-IPPSSession
Disconnect-ExchangeOnline Remove-PSSession
Get-ConnectionInformation Get-PSSession v3.0.0 以降で使用できます。

ヒント

単一の PowerShell セッションまたはスクリプトで Connect-ExchangeOnline コマンドレットと Disconnect-ExchangeOnline コマンドレットを頻繁に使用すると、メモリ リークが発生する可能性があります。 この問題を回避する最善の方法は、Connect-ExchangeOnline コマンドレットで CommandName パラメーターを使用して、セッションで使用されるコマンドレットを制限することです。

モジュール内にあるその他の Exchange Online コマンドレットを次の表に示します。

コマンドレット 注釈
Get-DefaultTenantBriefingConfig v3.2.0 以降で使用できます。
Set-DefaultTenantBriefingConfig v3.2.0 以降で使用できます。
Get-DefaultTenantMyAnalyticsFeatureConfig v3.2.0 以降で使用できます。
Set-DefaultTenantMyAnalyticsFeatureConfig v3.2.0 以降で使用できます。
Get-MyAnalyticsFeatureConfig v2.0.4 以降で使用できます。
Set-MyAnalyticsFeatureConfig v2.0.4 以降で使用できます。
Get-UserBriefingConfig Get-MyAnalyticsFeatureConfig に置き換えられます。
Set-UserBriefingConfig Set-MyAnalyticsFeatureConfig に置き換えられます。
Get-VivaInsightsSettings v2.0.5 以降で使用できます。
Set-VivaInsightsSettings v2.0.5 以降で使用できます。
Get-VivaModuleFeature v3.2.0 以降で使用できます。
Get-VivaModuleFeatureEnablement v3.2.0 以降で使用できます。
Add-VivaModuleFeaturePolicy v3.2.0 以降で使用できます。
Get-VivaModuleFeaturePolicy v3.2.0 以降で使用できます。
Remove-VivaModuleFeaturePolicy v3.2.0 以降で使用できます。
Update-VivaModuleFeaturePolicy v3.2.0 以降で使用できます。

Exchange Online PowerShell モジュールをインストールして管理する

モジュールは、 https://www.powershellgallery.com/packages/ExchangeOnlineManagement/の PowerShell ギャラリーからダウンロードします。

このセクションの手順では、モジュールをインストール、更新、アンインストールする方法について説明します。

Exchange Online PowerShell モジュールでサポートされているオペレーティング システム

モジュールの最新バージョンは、Windows、Linux、および Apple macOS の PowerShell 7 で正式にサポートされています。

具体的には、バージョン 2.0.4 以降PowerShell 7.0.3 以降でサポートされています。

PowerShell 7 の詳細については、「PowerShell 7.0 のお知らせ」を参照してください。

Apple macOS

このモジュールは、次のバージョンの macOS でサポートされています。

  • macOS 11 Big Sur 以降
  • macOS 10.15 Catalina
  • macOS 10.14 Mojave

macOS に PowerShell 7 をインストールする手順については、「macOS への PowerShell のインストール」を参照してください。

インストールの記事で説明したとおり、WSMan に必要な OpenSSL をインストールする必要があります。

PowerShell 7 および OpenSSL をインストールした後、次の手順を実行します。

  1. PowerShell をスーパーユーザーとして実行します: sudo pwsh

  2. PowerShell スーパーユーザー セッションで、次のコマンドを実行します。

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    メッセージが表示されたら、PSGallery をコマンドレットのソースとして受け入れます。

これで、 通常の PowerShell の前提条件を 満たして、 Exchange Online PowerShell モジュールをインストールできます。

Linux

このモジュールは、Linux の次のディストリビューションで公式にサポートされています。

  • Ubuntu 24.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS

Linux に PowerShell 7 をインストールする手順については、「Linux への PowerShell のインストール」を参照してください。

PowerShell 7 をインストールした後、次の手順を実行します。

  1. PowerShell をスーパーユーザーとして実行します: sudo pwsh

  2. PowerShell スーパーユーザー セッションで、次のコマンドを実行します。

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    メッセージが表示されたら、PSGallery をコマンドレットのソースとして受け入れます。

これで、 通常の PowerShell の前提条件を 満たして、 Exchange Online PowerShell モジュールをインストールできます。

注:

プロキシ サーバーの背後にあるネットワークから Exchange Online PowerShell に接続した場合、EXO V2 モジュール (バージョン v2.0.5 以前) は Linux では機能しません。 プロキシ サーバーの背後にあるネットワークから接続するには、Linux の EXO V3 モジュール (v3.0.0 以降) を使用する必要があります。

Windows

モジュールのすべてのバージョンは、Windows PowerShell 5.1 でサポートされています。

Windows 上の PowerShell 7 には、バージョン 2.0.4 以降が必要です。

モジュールのバージョン 2.0.5 以降では、Microsoft .NET Framework 4.7.2 以降を接続する必要があります。 それ以外の場合は、 System.Runtime.InteropServices.OSPlatform エラーが発生します。 この要件は、現在のバージョンの Windows では問題になりません。 .NET Framework 4.7.2 をサポートする Windows のバージョンの詳細については、 こちらの記事を参照してください。

以前のバージョンの Windows での Windows PowerShell の要件とモジュールのサポートについては、次の一覧で説明します。

  • Windows 8.1¹

  • Windows Server 2012 または Windows Server 2012 R2¹

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

  • Windows Server 2008 R2 SP1² ² ² ⁴

  • このバージョンの Windows の ¹ PowerShell 7 には、 Windows 10 ユニバーサル C ランタイム (CRT) が必要です。

  • ² このバージョンの Windows のサポートは終了し、Azure 仮想マシンでのみサポートされるようになりました。

  • ² このバージョンの Windows では、v2.0.3 以前のバージョンのモジュールのみがサポートされています。

  • このバージョンの Windows 上の ⁴ Windows PowerShell 5.1 には、.NET Framework 4.5 以降と Windows Management Framework 5.1 が必要です。 詳細については、「Windows Management Framework 5.1」を参照してください。

Exchange Online PowerShell モジュールの前提条件

PowerShell 実行ポリシーを RemoteSigned に設定する

ヒント

このセクションの設定は、すべてのオペレーティング システム上のすべてのバージョンの PowerShell に適用されます。

PowerShell を、スクリプトを実行するように構成する必要があります。既定では、スクリプトを実行するように構成されていません。 接続しようとすると、次のエラーが発生します。

このシステムでスクリプトの実行が無効になっているため、ファイルを読み込めません。 ファイルの署名に使用する有効な証明書を指定します。

インターネットからダウンロードしたすべての PowerShell スクリプトが信頼された発行元によって署名されていることを要求するには、管理者特権の PowerShell ウィンドウ ([管理者として実行] を選択したときに開く PowerShell ウィンドウ) で次のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

実行ポリシーの詳細については、「実行ポリシーについて」を参照してください。

WinRM で基本認証を有効にする

重要

REST API 接続では、このセクションで説明するように、WinRM での基本認証は必要ありません。 この記事で前述したように、Exchange Online PowerShell とセキュリティ & コンプライアンス PowerShell への基本認証 (リモート PowerShell) アクセスは非推奨になりました。 このセクションの情報は、履歴目的で管理されます。

REST API を使用しないリモート PowerShell 接続 (現在は不可能) の場合、WinRM は基本認証を許可する必要があります。 ユーザー名とパスワードの組み合わせは送信されません。 クライアント側の WinRM 実装では OAuth がサポートされていないため、セッションの OAuth トークンを送信するには、基本認証 ヘッダー が必要です。

WinRM で基本認証が有効になっていることを確認するには、コマンド プロンプトまたは Windows PowerShell で、次のコマンドを実行します:

注:

次のコマンドでは、WinRM が有効になっている必要があります。 WinRM を有効にするには、次のコマンドを実行します: winrm quickconfig

winrm get winrm/config/client/auth

Basic = true の値が表示されない場合は、次のコマンドのいずれかを実行して WinRM の基本認証を有効にする必要があります:

  • コマンド プロンプトにて:

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

    winrm set winrm/config/client/auth '@{Basic="true"}'
    
  • Windows PowerShell でレジストリを変更する:

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

WinRM の基本認証が無効になっている場合は、Basic 認証 (リモート PowerShell) 接続を使用して接続しようとすると、次のいずれかのエラーが発生します。

WinRM クライアントは要求を処理できません。 現在、基本認証はクライアント構成で無効になっています。 クライアント構成を変更して、要求を再試行してください。

OAuth を使用した PowerShell セッションの作成に失敗しました。

Windows での REST API 接続用 PowerShellGet

Windows の REST API 接続には、PowerShellGet モジュールと、依存関係によって PackageManagement モジュールが必要です。 これらのモジュールの考慮事項は、PowerShell 7 よりも PowerShell 5.1 の方が多いですが、すべてのバージョンの PowerShell では、最新バージョンのモジュールをインストールできるという利点があります。 インストールと更新の手順については、「 Windows への PowerShellGet のインストール」を参照してください。

ヒント

PackageManagement モジュールまたは PowerShellGet モジュールのベータ バージョンでは、接続の問題が発生する可能性があります。 接続に問題がある場合は、次のコマンドを実行して、ベータ版のモジュールがインストールされていないことを確認します: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions

REST API 接続を作成しようとしたときに PowerShellGet がインストールされていない場合は、接続しようとすると次のエラーが表示されます。

コマンドレットが見つかりません Update-Manifest

Exchange Online PowerShell モジュールをインストールする

モジュールを初めてインストールするには、次の手順を実行します。

  1. PowerShellGetをインストールする」 の説明に従って、PowerShellGet モジュールをインストールまたは更新します。

  2. Windows PowerShell ウィンドウを閉じてから再度開きます。

  3. これで、 Install-Module コマンドレットを使用して、PowerShell ギャラリーからモジュールをインストールできます。 通常、モジュールの最新のパブリック バージョンが必要ですが、使用可能な場合はプレビュー バージョンをインストールすることもできます。

    • モジュールの最新のパブリック バージョンをインストールするには、次のいずれかのコマンドを実行します。

      • 昇格された PowerShell ウィンドウ (すべてのユーザー):

        Install-Module -Name ExchangeOnlineManagement
        
      • 現在のユーザー アカウントのみ:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • モジュールの使用可能なプレビュー バージョンを確認するには、次のコマンドを実行します。

      Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
      
    • 利用可能な最新のプレビュー バージョンのモジュールをインストールするには、次のいずれかのコマンドを実行します。

      • 昇格された PowerShell ウィンドウ (すべてのユーザー):

        Install-Module -Name ExchangeOnlineManagement -AllowPrerelease
        
      • 現在のユーザー アカウントのみ:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
        
    • モジュールの特定のプレビュー バージョンをインストールするには、<PreviewVersion> を必要な値に置き換え、次のいずれかのコマンドを実行します。

      • 昇格された PowerShell ウィンドウ (すべてのユーザー):

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
        
      • 現在のユーザー アカウントのみ:

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

    終了したら、Y を入力してライセンス契約に同意します。

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

Exchange Online PowerShell モジュールを更新する

モジュールが既にコンピューターにインストールされている場合は、このセクションの手順を使用してモジュールを更新できます。

  1. 現在インストールされているモジュールのバージョンとインストールされている場所を確認するには、次のコマンドを実行します。

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

    モジュールが C:\Program Files\WindowsPowerShell\Modules にインストールされている場合は、すべてのユーザーにインストールされます。 モジュールが Documents フォルダーにインストールされている場合は、現在のユーザー アカウントに対してのみインストールされます。

  2. Update-Module コマンドレットを使用して、PowerShell ギャラリーからモジュールを更新できます。 通常、モジュールの最新のパブリック バージョンが必要ですが、使用可能な場合はプレビュー バージョンにアップグレードすることもできます。

    • モジュールの最新のパブリック バージョンにアップグレードするには、モジュールの最初のインストール方法に基づいて次のいずれかのコマンドを実行します (すべてのユーザーと現在のユーザー アカウントの場合のみ)。

      • 昇格された PowerShell ウィンドウ (すべてのユーザー):

        Update-Module -Name ExchangeOnlineManagement
        
      • 現在のユーザー アカウントのみ:

        Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • モジュールのプレビュー バージョンにアップグレードするには、使用可能な最新のプレビュー バージョンにアップグレードするか、RequiredVersion パラメーターを使用して特定のプレビュー バージョンにアップグレードします。

      • モジュールの使用可能なプレビュー バージョンを確認するには、次のコマンドを実行します。

        Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
        
      • 利用可能な最新のプレビュー バージョンのモジュールにアップグレードするには、次のいずれかのコマンドを実行します。

        • 昇格された PowerShell ウィンドウ (すべてのユーザー):

          Update-Module -Name ExchangeOnlineManagement -AllowPrerelease
          
        • 現在のユーザー アカウントのみ:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
          
      • モジュールの特定のプレビュー バージョンにアップグレードするには、<PreviewVersion> を必要な値に置き換え、次のいずれかのコマンドを実行します。

        • 昇格された PowerShell ウィンドウ (すべてのユーザー):

          Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
          
        • 現在のユーザー アカウントのみ:

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

    終了したら、Y を入力してライセンス契約に同意します。

  3. 更新が成功したことを確認するには、次のコマンドを実行して、インストールされているモジュールのバージョン情報を確認します。

    Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
    

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

Exchange Online PowerShell モジュールのインストールのトラブルシューティング

  • 次のいずれかのエラーが表示されます。

    PowerShellGetFormatVersion '<version>' の指定されたモジュール 'ExchangeOnlineManagement' は、現在のバージョンの PowerShellGet ではサポートされていません。 このモジュール ' ExchangeOnlineManagement ' をインストールするには、PowerShellGet モジュールの最新バージョンを取得してください。

    警告: URI 'https://go.microsoft.com/fwlink/?LinkID=627338& からダウンロードできません。clcid=0x409' を '' に指定します。

    警告: 使用可能なプロバイダーの一覧をダウンロードできません。 インターネット接続をご確認ください。

    PowerShellGet をインストールする」の説明に従って、PowerShellGet モジュールのインストールを最新バージョンに更新します。 ExchangeOnlineManagement モジュールをもう一度更新する前に、必ず PowerShell ウィンドウを閉じてから再度開きます。

  • 次のエラーが表示されます。

    指定された検索条件とモジュール名 'ExchangeOnlineManagement' に一致するものが見つかりませんでした。 使用可能なすべての登録済みモジュール リポジトリを確認するには、 Get-PSRepository を実行してみてください。

    PowerShell モジュールの既定のリポジトリは PSGallery に設定されていません。 このエラーを解決するには、次のコマンドを実行します。

    Register-PSRepository -Default
    
  • 2020 年 4 月現在、PowerShell ギャラリーでは TLS 1.2 以降の接続のみをサポートしています。 詳細については、PowerShell ギャラリーを参照してください。

    Microsoft .NET Framework で現在の設定を確認するには、Windows PowerShell で次のコマンドを実行します。

    [Net.ServicePointManager]::SecurityProtocol
    

    PowerShell ギャラリーの TLS サポートの記事で説明したように、一時的にセキュリティ プロトコルを TLS 1.2 に変更して PowerShellGet モジュールまたは ExchangeOnlineManagement モジュールをインストールするには、モジュールをインストールする前に Windows PowerShell で次のコマンドを実行します。

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

    Microsoft .NET framework バージョン 4.x 以降で強力な暗号化を永続的に有効にするには、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'
      

    詳細については、SchUseStrongCryptoを参照してください。

Exchange Online PowerShell モジュールをアンインストールする

現在インストールされているモジュールのバージョンとインストールされている場所を確認するには、次のコマンドを実行します。

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

モジュールが C:\Program Files\WindowsPowerShell\Modules にインストールされている場合は、すべてのユーザーにインストールされました。 モジュールが Documents フォルダーにインストールされている場合は、現在のユーザー アカウントに対してのみインストールされました。

モジュールをアンインストールするには、モジュールを最初にインストールした方法に基づいて、次のいずれかの環境で次のコマンドを実行します (すべてのユーザーと現在のユーザー アカウントの場合のみ)。

  • 管理者特権の PowerShell ウィンドウ (すべてのユーザー)。

  • 通常の PowerShell ウィンドウ (現在のユーザー アカウントの場合のみ)。

    Uninstall-Module -Name ExchangeOnlineManagement
    

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

Exchange Online PowerShell モジュールのプロパティとプロパティ セット

従来の Exchange Online コマンドレットは、多くの空白または興味のないプロパティを含む、すべての可能なオブジェクト プロパティを返します。 この動作により、パフォーマンスが低下します (サーバーの計算量が増え、ネットワーク負荷が増加します)。 コマンドレットの出力では、プロパティの完全な補完が必要になることはほとんどありません。

モジュール の Get-EXO* コマンドレットには、出力プロパティが分類されています。 すべてのプロパティを等しい重要度に設定し、すべてのシナリオで返す代わりに、特定の関連プロパティを プロパティ セットに分類しました。 これらのプロパティ セットは、コマンドレット上の 2 つ以上の関連プロパティのバケットです。

最も大きく、最も使用される Get-EXO* コマンドレットでは、プロパティ セットを使用します。

これらのコマンドレットでは、プロパティ セットは、次のパラメータによって制御されます。

同じコマンドで、PropertySets パラメーターと Properties パラメーターを一緒に使うことができます。

また、コマンドレットの出力に必要な最小限のプロパティセット (ID プロパティなど) を含む Minimum プロパティ セットも含まれています。 最小プロパティ セットのプロパティについては、「 Exchange Online PowerShell モジュール コマンドレットのプロパティ セット」でも説明されています。

  • PropertySetsまたはプロパティを 使用しない場合、プロパティは、自動的に最小プロパティセットに設定されます。
  • PropertySets またはプロパティ パラメーターを使用する場合は、指定されたプロパティおよび最小プロパティセットのプロパティ を取得し ます。

いずれの方法でも、コマンドレットの出力に含まれるプロパティははるかに少なく、結果ははるかに高速に返されます。

たとえば、 Exchange Online PowerShell に接続した後、次の例では、最初の 10 個のメールボックスの Minimum プロパティ セット内のプロパティのみを返します。

Get-EXOMailbox -ResultSize 10

これに対し、同じ Get-Mailbox コマンドの出力では、最初の 10 個のメールボックスごとに少なくとも 230 個のプロパティが返されます。

注:

PropertySets パラメーターが値 All を受け入れるように設定しても、コマンドを実行すると処理速度が遅くなり、信頼性が低下するため、この値を使用してすべてのプロパティを取得することは決してお勧めしません。 シナリオに必要なプロパティの最小数を取得するには、常に PropertySetsProperties パラメーターを使用します。

モジュールでのフィルター処理の詳細については、「 Exchange Online PowerShell モジュールのフィルター」を参照してください。

リリース ノート

特に記載がない限り、Exchange Online PowerShell モジュールの現在のリリースには、以前のリリースのすべての機能が含まれています。

現在のリリース

バージョン 3.5.0

  • 新しい Get-VivaFeatureCategory コマンドレット。
  • Viva Feature Access Management (VFAM) のカテゴリ レベルでのポリシー操作のサポートを追加しました。
  • Get-VivaModuleFeaturePolicy の出力の新しい IsFeatureEnabledByDefault プロパティ。 このプロパティの値は、テナントまたはユーザー/グループ ポリシーが作成されなかった場合の、テナント内のユーザーの既定の有効化状態を示します。

以前のリリース

バージョン 3.4.0

  • Connect-ExchangeOnlineGet-EXORecipientPermissionGet-EXOMailboxFolderPermission のバグ修正。
  • Connect-ExchangeOnlineSigningCertificate パラメーターで、制約付き言語モード (CLM) がサポートされるようになりました。

バージョン 3.3.0

  • コマンドレット ヘルプ ファイルの読み込みをスキップすることをサポートする Connect-ExchangeOnline のSkipLoadingCmdletHelp パラメーター。
  • グローバル変数 EXO_LastExecutionStatus は、最後に実行されたコマンドレットの状態を確認するために使用できます。
  • Connect-ExchangeOnlineConnect-IPPSSession のバグ修正。
  • Add-VivaModuleFeaturePolicy および Update-VivaModuleFeaturePolicyIsUserControlEnabled パラメーターは、Viva 機能アクセス管理にオンボードされている機能に対するポリシーによるユーザー コントロールの有効化をサポートします。

バージョン 3.2.0

  • 新しいコマンドレット:
    • Get-DefaultTenantBriefingConfigSet-DefaultTenantBriefingConfig
    • Get-DefaultTenantMyAnalyticsFeatureConfigSet-DefaultTenantMyAnalyticsFeatureConfig
    • Get-VivaModuleFeatureGet-VivaModuleFeatureEnablementAdd-VivaModuleFeaturePolicyGet-VivaModuleFeaturePolicyRemove-VivaModuleFeaturePolicyUpdate-VivaModuleFeaturePolicy
  • セキュリティ & コンプライアンス PowerShell の REST API 接続のサポート。
  • Get-ConnectionInformation および Disconnect-ExchangeOnline のConnectionId パラメーター:
    • 特定の REST API 接続の接続情報を取得します。
    • REST API 接続の選択的切断。
  • Connect-ExchangeOnlineSigningCertificate パラメーターを使用すると、フォーマット ファイル (*.Connect-ExchangeOnline がすべての PowerShell 実行ポリシーで使用するクライアント証明書を使用して作成する一時モジュール内の Format.ps1xml) またはスクリプト モジュール ファイル (.psm1)。
  • Connect-ExchangeOnline のバグ修正。

バージョン 3.1.0

  • Connect-ExchangeOnline で使用できる AccessToken パラメーター。
  • Connect-ExchangeOnlineGet-ConnectionInformation のバグ修正。
  • CertificateThumbprint を使用してセキュリティ & コンプライアンス PowerShell に接続するための Connect-IPPSSession のバグ修正。

バージョン 3.0.0 (v2.0.6-PreviewX と呼ばれるプレビュー バージョン)

  • EXO V3 モジュール」セクションの REST API 接続で既に 説明されている機能:
    • セキュリティ & コンプライアンス PowerShell (バージョン 2.0.6-Preview5 以降) の証明書ベースの認証
    • REST ベースの接続 (バージョン 2.0.6-Preview7 以降) 用 の Get-ConnectionInformation コマンドレット。
    • REST ベースの接続 (バージョン 2.0.6-Preview8 以降) の Connect-ExchangeOnline コマンドレットの SkipLoadingFormatData スイッチ。
  • DelegatedOrganization パラメーターは、コマンドで AzureADAuthorizationEndpointUri パラメーターも使用する限り、Connect-IPPSSession コマンドレットで機能します。
  • 特定のシナリオで確認を求めるために使用された特定のコマンドレットでは、確認が行われません。 既定では、コマンドレットは完了まで実行されます。
  • 失敗したコマンドレットの実行から返されるエラーの形式が若干変更されています。 例外により多くのデータ (例外の種類など) が含まれるようになり、 FullyQualifiedErrorId には FailureCategoryが含まれません。 エラーの形式は、さらに変更される可能性があります。

バージョン 2.0.5

  • 所有者レス Microsoft 365 グループを管理するための新しい Get-OwnerlessGroupPolicy コマンドレットと Set-OwnerlessGroupPolicy コマンドレット。

    注:

    cmdlets はモジュールで利用できますが、feature は Private Preview のメンバーのみ利用できます。

  • Viva Insights の Headspace 機能へのユーザー アクセスを制御するための新しい Get-VivaInsightsSettings コマンドレットと Set-VivaInsightsSettings コマンドレット。

バージョン 2.0.4

  • PowerShell 7 は、この記事の「 Exchange Online PowerShell モジュールの前提条件 」セクションで説明されているように、Windows、Linux、および Apple macOS で正式にサポートされています。

  • PowerShell 7 のモジュールでは、ブラウザー ベースのシングル サインオン (SSO) とその他のサインイン 方法がサポートされています。 詳細については、「 PowerShell 7 排他接続メソッド」を参照してください。

  • Get-UserAnalyticsConfig コマンドレットと Set-UserAnalyticsConfig コマンドレットは、Get-MyAnalyticsConfig コマンドレットと Set-MyAnalyticsConfig コマンドレット置き換えられました。 また、機能レベルでアクセスを構成することもできます。 詳細については、「MyAnalytics を構成する」を参照してください。

  • すべてのユーザー ベースの認証におけるリアルタイム ポリシーとセキュリティの適用。 継続的アクセス評価 (CAE) は、モジュールで有効になっています。 CAE の詳細については、こちらをご覧ください

  • Get-EXOMailboxStatistics コマンドレットの出力で LastUserActionTimeLastInteractionTime プロパティを使用できるようになりました。

  • 対話型のサインイン プロセスでは、安全な応答 URL を使用してアクセス トークンを取得できるより安全な方法を使用するようになりました。

バージョン 2.0.3

  • 証明書ベースの認証 (CBA) の一般提供は、無人スクリプトやバックグラウンドのオートメーション シナリオで先進認証を使用することができます。 利用可能な証明書の保存場所は次のとおりです。
  • 1つの PowerShell ウィンドウで Exchange Online PowerShell とセキュリティ/コンプライアンス PowerShell に同時に接続します。
  • 新しいCommandName パラメーターを使用すると、セッションにインポートされた Exchange Online PowerShell コマンドレットを指定して制限できます。 このオプションでは、使用頻度の高い PowerShell アプリケーションのメモリの消費量を削減します。
  • Get-EXOMailboxFolderPermissionは、Identity パラメーターで ExternalDirectoryObjectID をサポートするようになりました。
  • 最初の V2 コマンドレット呼び出しの最適化された待機時間。 ラボの結果について説明します。最初の呼び出しの待機時間は、8 秒から約 1 秒に短縮されています。 実際の結果は、コマンドレットの結果のサイズとテナント環境によって異なります。

バージョン 1.0.1

  • これは、EXO V2 モジュールの一般提供 (GA) バージョンです。 これは安定しており、運用環境で使用する準備ができています。
  • Get-EXOMobileDeviceStatisticsコマンドレットが Identityパラメーターをサポートするようになりました。
  • 特定のケースでのセッションの自動再接続の信頼性が向上しました。以前は、自動再接続ロジックのバグが原因で、スクリプトの50分以下の実行で、 "コマンドレットが見つかりません" というエラーが発生することがありました。
  • スクリプトを簡単に移行できるように、よく使用される2つの属性、 "User" と "MailboxFolderUser" について固定データタイプの問題を解決しました。
  • フィルターのサポートが強化されました。これにより、次の4つの演算子がサポートされるようになりました: EndsWith、Contains、 Notと NotLikeのサポート。 フィルターでサポートされていない属性については、 Exchange Online PowerShell モジュール の [フィルター] をオンにします。

バージョン 0.4578.0

  • ユーザーレベルでの組織のブリーフィングメールの構成に関するサポートが追加されました。Set-UserBriefingConfigGet-UserBriefingConfig コマンドレットを使用します。
  • Disconnect-ExchangeOnlineコマンドレットを使用したセッションのクリーンアップのサポート このコマンドレットは、Get-PSSession | Remove-PSSessionに相当する V2 です。 セッションオブジェクトやローカルファイルをクリーンアップするだけでなく、V2 コマンドレットに対して認証するために使用されるキャッシュからのアクセストークンを削除することもできます。
  • EXOMailboxFolderPermissionのidentity パラメーターとして FolderId を使うことができるようになりました。 Get-MailboxFolderを使用して、FolderId 値を取得できます。 例: Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
  • エラーの原因となった特定の要求ルーティング エラーが解決されたため、 Get-EXOMailboxStatistics の信頼性が向上しました。
  • セッションがインポートされるたびに新しいモジュールを作成するのではなく、新しいセッションで既存のモジュールを再利用してセッションを作成するときのメモリ使用量を最適化しました。

バージョン 0.4368.1

  • Connect-IPPSSession コマンドレットを使用してセキュリティ/コンプライアンス PowerShell コマンドレットのサポートが追加されました。
  • ShowBanner スイッチを使用して、お知らせバナーを非表示にすることができます (-ShowBanner:$false)。
  • クライアント例外でコマンドレットを終了する
  • リモート PowerShell には、パフォーマンスを向上させるために EXO コマンドレットで意図的にサポートされていないさまざまな複雑なデータ型が含まれていました。 管理スクリプトをシームレスに移行できるように、リモート PowerShell コマンドレットと V2 コマンドレットの間の、複雑ではないデータ型の違いが解決されました。

バージョン 0.3582.0

  • セッション作成時のプレフィックスのサポート:
    • プレフィックス付きコマンドレットを含むセッションは一度に 1 つだけ作成できます。
    • EXO V2 コマンドレットにはプレフィックス EXO が既に含まれているため、プレフィックスとして EXO を使用しないでください。
  • クライアントコンピューターで WinRM 基本認証が無効になっていても、EXO V2 コマンドレットを使用します。 リモート PowerShell 接続には WinRM Basic Auth が必要であり、WinRM で Basic Auth が無効になっている場合、リモート PowerShell コマンドレットは使用できません。
  • V2 コマンドレットの ID パラメーターで Name と Alias がサポートされるようになりました。 Alias または Name を使用すると、V2 コマンドレットのパフォーマンスが低下するため、使用しないことをお勧めします。
  • V2 コマンドレットによって返される属性のデータ型がリモート PowerShell コマンドレットとは異なる問題が修正されました。 データ型が異なる属性はまだ少なく、今後数か月以内に処理する予定です。
  • 修正されたバグ: 資格情報または UserPrincipalName を使用して Connect-ExchangeOnline が呼び出されたときにセッションが頻繁に再接続される問題を修正しました

バージョン 0.3555.1

  • 認証の問題が原因で、パイプ処理されたコマンドレットが次のエラーで失敗したバグが修正されました。

    実行スペースが [開いている] 状態ではないので、パイプラインを呼び出すことはできません。 実行空間の現在の状態は ' Closed ' です。

バージョン 0.3527.4

  • 更新された Get-help コンテンツ。
  • エラー コード 400 で Online パラメーターが存在しないページにリダイレクトされていた Get-Help の問題を修正しました。

バージョン 0.3527.3

  • 委任フローを使用して、別のテナントの Exchange 管理をするサポートを追加しました。
  • 1 つの PowerShell ウィンドウで他の PowerShell モジュールと連携して動作します。
  • 位置パラメーターのサポートが追加されました。
  • "日付/時刻フィールド" は、クライアントのロケールをサポートするようになりました。
  • バグ修正: Connect-ExchangeOnlineの実行中に PSCredential が空になりました。
  • バグ修正: フィルターに $null が含まれているときに、クライアントモジュールでエラーが発生しました。
  • EXO V2 モジュール内に作成されたセッションに、名前を付けることができます (名前付けパターン: ExchangeOnlineInternalSession_% SomeNumber%)。
  • バグ修正: トークンの有効期限とセッションのアイドル状態の差が原因で、リモート PowerShell コマンドレットが断続的に失敗する。
  • 主要なセキュリティ更新
  • バグの修正と強化された機能