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 と Security & Compliance PowerShell で使用可能なすべてのコマンドレットは、EXO V3 モジュールのバージョンに基づく REST API によってサポートされます。

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

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

REST API コマンドレットには、履歴に対応するコマンドレットに比べて次の利点があります。

  • セキュリティの強化: 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 シナリオの回避策」を参照してください。

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

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

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

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

    • 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

    UseCustomRouting スイッチを実験的に使用し、発生したすべての問題を報告してください。

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

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

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

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

    $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 で問題を報告する場合は、メール メッセージにログ ファイルを含める必要があります。 ログ ファイルを生成するには、ログ ファイル>を格納するパスを目的の出力フォルダーに置き換え<、次のコマンドを実行します。

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

注:

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

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

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

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

注:

同じウィンドウで PowerShell Exchange Onlineへの複数の接続を開いた場合、Get-EXO* コマンドレットは常に PowerShell 接続の最後 (最新) Exchange Online関連付けられます。 次のコマンドを実行して、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 以降で使用できます。

モジュール内にあるその他の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 モジュールをインストールして保守する

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

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

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 18.04 LTS
  • Ubuntu 20.04 LTS

Linux の他のディストリビューションでモジュールを使用できない場合は、 問題を報告してください

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¹

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

  • 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 ベースの接続では、このセクションで説明するように、WinRM での基本認証は必要ありません。 この記事で前述したように、PowerShell とセキュリティ & コンプライアンス PowerShell Exchange Online への基本認証 (リモート 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 ベースの接続用 PowerShellGet

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

注:

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

REST ベースの接続を作成しようとしたときに 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 ウィンドウを閉じてから再度開きます。

  • 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を参照してください。

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

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

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

    Register-PSRepository -Default
    

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 プロパティ セットも含まれています。 Minimum プロパティ セットのプロパティについては、PowerShell モジュール コマンドレットのプロパティ セットExchange Online参照してください

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

  • Connect-ExchangeOnlineGet-EXORecipientPermissionGet-EXOMailboxFolderPermission のバグ修正。
  • Connect-ExchangeOnline の THe SigningCertificate パラメーターで、制約付き言語モード (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-UserAnalyticsConfigSet-UserAnalyticsConfig コマンドレットは、Get-MyAnalyticsConfigSet-MyAnalyticsConfig コマンドレットに置き換えられました。さらに、機能レベルでアクセスを構成できます。 詳細については、「MyAnalytics を構成する」を参照してください。

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

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

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

バージョン 2.0.3

  • 証明書ベースの認証 (CBA) の一般提供は、無人スクリプトやバックグラウンドのオートメーション シナリオで先進認証を使用することができます。 利用可能な証明書の保存場所は次のとおりです。
    • Azure Key 値 ( 証明書) パラメーターにあるリモート。 このオプションでは、実行時にのみ証明書を取得してセキュリティを強化します。
    • CurrentUser または LocalMachine 証明書ストアのローカル ( CertificateThumbprint パラメーター)。
    • エクスポートされた証明書ファイル (CertificateFilePathCertificatePasswordパラメーター) にあるローカル。 詳細については、「Exchange Online PowerShell モジュールの無人スクリプトのConnect-ExchangeOnline およびアプリ専用認証」のパラメーターの説明を参照してください。
  • 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)。
  • クライアント例外でコマンドレットを終了する
  • Remote PowerShell には、パフォーマンス改善のため EXO コマンドレットで意図的にサポートされていない各種の複雑なデータ型が含まれていました。 管理スクリプトをシームレスに移行できるように、リモート PowerShell コマンドレットと V2 コマンドレットの間の、複雑ではないデータ型の違いが解決されました。

バージョン 0.3582.0

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

バージョン 0.3555.1

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

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

バージョン 0.3527.4

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

バージョン 0.3527.3

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