Office 365 Exchange OnlineサービスをPowerShellに接続する方法

ほとんどの場合、Microsoft Office 365およびすべての含まれるアプリケーションは、グラフィカルユーザーインターフェースを備えたWebブラウザを介して管理されます。基本的には、Office 365管理センターとExchange管理センターのWebインターフェイスを使用します。ただし、数百のユーザーアカウントに適用される大量のアクションを実行するために、コマンドラインインターフェイス(CLI)を使用する必要がある場合があります。さらに、管理センターで利用できないExchange Onlineのコマンドレットを使用したい場合があります。

多くの管理者は、Microsoftが提供するPowerShellを使用して、コマンドラインインターフェースでMicrosoft Exchange Serverを管理しています。ただし、オンプレミスのExchange Server環境向けのこれらの標準コマンドは、Microsoft 365クラウドで実行されているExchange Onlineには適用されません。Office 365でPowerShellを使用するには、Office 365に接続するための特別なPowerShellモジュールをインストールする必要があります。Exchange Online PowerShellに接続するための異なる方法については、この投稿を読んでください。

要件

Exchange Online PowerShellに接続するために満たす必要があるいくつかの要件があります。

  • Windows 7 SP1以降のデスクトップWindowsバージョンおよびWindows Server 2008 R2 SP1以降のサーバーWindowsバージョンでPowerShellを使用する必要があります。Windows Management Framework 3.0、4.0、または5.1の更新されたバージョンをインストールする必要があることに注意してください。.NET Framework 4.5以降もインストールする必要があります。
  • インターネット接続が必要です。ローカルマシンから宛先ホストに接続するには、TCPポート80を開く必要があります。
  • Exchange Online PowerShellへのアクセスは、現在のユーザーで有効にする必要があります(デフォルトでは、このアクセスは管理者に対して有効になっています)。

特定のユーザーのExchange Online PowerShellへの接続アクセスを手動で有効にするには、次のコマンドを使用できます:

Set-User -Identity [email protected] -RemotePowerShellEnabled $true

動作原理

Exchange Online PowerShellに接続できますが、このプロセスはローカルのExchange Serverを管理するためのPowerShellを使用するよりも複雑です。ただし、組み込みのPowerShellコンソールを使用してリモートクラウドインフラストラクチャを管理することができます。この場合、コンソールはリモート PowerShellまたはPowerShell リモート接続と呼ばれます。Office 365およびExchange Onlineのリモート PowerShell セッションを開始するプロセスはわずかに異なります。リモートのOffice 365セッションを開く前に、特別なコンポーネントをダウンロードしてインストールする必要があります。幸いなことに、リモート PowerShell セッションを作成すると、リモート Exchange Online PowerShell を開くために必要なコマンドレットが自動的にダウンロードされます。Microsoft Office 365およびMicrosoft Exchange Onlineを管理するためには、異なるセットのPowerShellコマンドレットが使用されます。

Microsoft Exchange OnlineにPowerShellで接続する主な理由は次のとおりです:

  • ローカルマシン上で開かれたPowerShellでExchange Onlineへのリモートセッションを作成する。
  • 接続設定の提供、認証情報の渡し。
  • Exchange Onlineをリモートで管理するために必要なPowerShellコマンドレットをインポートする。

今日のブログ投稿では、Windows 10でPowerShellコマンドレットを実行します。

手動構成

まず、構成原則をよりよく理解するために手動方法を見てみましょう。

  1. Windows PowerShell を開きます。少なくとも 2 つの方法でこれを行うことができます。
    1. スタートをクリックし、cmd と入力し、コマンドプロンプト アイテムを右クリックし、コンテキストメニューで 管理者として実行 を選択します。
    2. スタート > Windows PowerShell に移動します。Windows PowerShell を右クリックし、管理者として実行 をクリックして、制限なしに PowerShell コマンドを実行できることを確認します。
  2. スクリプトの実行を有効にします(これは Exchange Online と Office 365 を管理するための PowerShell の準備の最初にこのコマンドを実行する方が良いです)、そうしないと将来 Import-PSSession コマンドを実行する際にエラーが発生します:

    Import-PSSession: このシステムではスクリプトの実行が無効になっているため、ファイルを読み込むことができません。ファイルに署名するための有効な証明書を指定してください。.

  3. スクリプトを実行するには、実行ポリシーをRemoteSignedに設定する必要があります。

    Set-ExecutionPolicy RemoteSigned

  4. ポリシーの変更が求められた場合は、変更を確認するにはYを押してください。また、Set-ExecutionPolicy Unrestrictedコマンドを使用してUnrestrictedポリシーを使用することもできます。

    デフォルトでは、実行ポリシーモードはRestrictedです。

  5. PowerShellで資格情報を取得するためのコマンドを実行し、管理者ログイン/パスワードをポップアップウィンドウに入力してExchange Onlineにアクセスします。ユーザーはOffice 365でグローバル管理権限を持っている必要があります。

    $Credential=Get-Credential
    入力された資格情報は変数に保存され、次のコマンドで使用されます$Credential.

  6. 新しいPSSession

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection

    このコマンドでは、クラウドで実行されているExchange Onlineサーバーの対象URLを設定する必要があります。コマンドを実行した後、Microsoft Office 365クラウドサーバーは、アカウントに関連付けられた適切なExchange Online仮想サーバーへのアクセスを提供します。

  7. Exchange Online PowerShellコマンドレットは、次のコマンドを使用して現在のセッションにインポートする必要があります:

    $Sessionをインポート-セッション

  8. コマンドを受信する際に進行状況バーが表示されます。
  9. コマンドの正常な実行後、以下のメッセージが表示されます。
    注意:
    アカウントでMFAを使用している場合、上記で説明されている標準のコマンドレットは機能しません。 PowerShellを使用してExchange Onlineに接続するには、次のコマンドを実行してください:

    Connect-EXOPSSession -UserPrincipalName YOUR_UPN

    YOUR_UPN(ユーザープリンシパル名)は、使用しているOffice 365アカウントの名前です。MicrosoftのExchange Online Remote PowerShellモジュールをインストールする必要がある場合があります。このモジュールを使用すると、セッションが1時間後に終了するため、長いスクリプトを実行する際に不便な場合があります。会社のネットワークからExchange Online PowerShellに接続する際にMFAをバイパスするために、信頼されたIPアドレス(つまり、組織のIPアドレス)を使用することを検討してください。MFA(マルチファクタ認証)は、2番目のセキュリティレイヤーを追加する高度な認証方法です。パスワードを入力した後、確認コードがユーザーの携帯電話に送信され、アカウントを確認するために確認コードを入力する必要があります。

  10. Office 365 および Exchange Online に接続したら、Office 365 クラウド環境を管理できます。たとえば、ユーザーのメールボックスをリストアップして、Exchange Online に正しく接続されているかを確認しましょう。

    Get-Mailbox

    Exchange Online PowerShell で利用可能なすべてのコマンドレットをリストアップするには、次のコマンドを使用できます。


    Get-Command -Module tmp*

    Exchange Online PowerShell のコマンドレットの名前は変換されません。

  11. Exchange 365の作業を終了する際は、セッションを切断してください。これが推奨される方法です。

    Remove-PSSession $Session

    残念ながら、このコマンドを実行後にメッセージは表示されません。セッションが切断されているかどうかを確認するには、Get-MailBoxコマンドを実行してください。セッションが切断されている場合は、Exchange Onlineのコマンドレットを実行できないと説明するエラーが発生します。

セッションを切断する理由は何でしょうか?それは、同時に開くことができるアクティブなコンカレントセッションの数が3つに制限されているためです。3つのExchange Online PowerShellセッションを一度に開いて、使用していないときにそれらのセッションを切断しない場合、新しいPowerShellコン�soleからExchange Online PowerShellに再接続できるようになるまで、これらのセッションのいずれかが期限切れになるまで待つ必要があります。

自動設定

Exchange Online PowerShellに手動で接続する方法の原則を理解したので、自動化された方法を使用できます。この方法の利点は、入力する必要があるコマンドの数が少ないことです。

  1. ダウンロードスクリプトをMicrosoftのウェブサイトからダウンロードします。この場合、スクリプトファイルの名前はConnectExchangeOnlinePowerShell.ps1です。
  2. スクリプトがあるディレクトリに移動します。例として、スクリプトはC:\temp_win\に保存されています。
  3. スクリプトを実行する前に、スクリプト実行ポリシーを編集します(最初の方法で示されているように)。そうしないと、次のエラーが発生します。

    ファイルC:\temp_win\ConnectExchangeOnlinePowerShell.ps1はデジタル署名されていません。このスクリプトを現在のシステムで実行することはできません.

    この問題を回避するためにBypass実行ポリシーを適用できます。


    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

  4. 実行ポリシーの変更を確認するにはYを入力してください。
  5. その後、スクリプトを実行できます。MFAを使用していない場合、追加の引数なしでスクリプトを実行してください:

    .\ConnectExchangeOnlinePowerShell.ps1

    Office 365環境でMFA (Multi-Factor Authentication) が使用されている場合、以下のコマンドを試してください:


    .\ConnectExchangeOnlinePowerShell.ps1 -MFA

  6. 今、Exchange Onlineに正常に接続できたので、ユーザーアカウントやそれらのメールボックスなどを管理できます。たとえば、ユーザーのメールボックスをリストアップできます:

    Get-Mailbox

    このスクリプトは、タスクをスケジュール化して自動化するために使用できます。たとえば、上記のインタラクティブウィンドウに資格情報を入力せずにExchange Onlineに接続できます。スクリプトを実行する際に、コマンドオプションとしてログインとパスワードをコマンドラインに入力できます:


    ./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_password

    コマンドラインにパスワードを平文で入力することはセキュリティ上のリスクがあります。

  7. Exchange Online の PowerShell で作業を終了したら、セッションを終了することを忘れないでください:

    ./ConnectExchangeOnlinePowerShell.ps1 -Disconnect

代替方法

Exchange Online PowerShell に接続するために使用できるもう1つの方法を考えてみましょう。この方法は、最初の方法の変更と見なすことができます。

  1. PowerShell の新しいプロファイルを作成し、次の関数を使用します:

    New-item -type file -force $profile

  2. テキストエディタでプロファイル設定ファイルを編集し、Connect-EXOnline という関数を追加します:

    notepad $profile

  3. PowerShellプロファイル構成ファイルに以下の内容を追加し、[email protected]をあなたのアカウント名に変更して、テキストファイルを保存してください。

    Function Connect-EXOnline
    {
    $credentials = Get-Credential -Credential [email protected]
    Write-Output “Exchange Onlineのコマンドレットを取得しています”
    $Session = New-PSSession -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -ConfigurationName Microsoft.Exchange -Credential $credentials `
    -Authentication Basic -AllowRedirection
    Import-PSSession $Session
    }

  4. 現在のPowerShellウィンドウを閉じ、新しいPowerShellウィンドウを管理者として開きます。Exchange Online PowerShellに接続するためのコマンドを実行します:

    Connect-ExOnline
    ポップアップウィンドウにパスワードを入力します。

  5. Exchange Online PowerShellで作業を終了したら、次のコマンドでセッションを終了します:

    Get-PSSession | Remove-PSSession

Conclusion

Exchange Online PowerShellは、Exchange Admin Centerウェブインターフェースの良い代替手段です。Office 365 PowerShellとExchange Online PowerShellを使用すると、単一のコマンドやスクリプトを使用して複数のオブジェクトで一括操作やアクションを実行できます。今日のブログ投稿では、3つの方法を使用してExchange Online PowerShellに接続する方法について説明しました。そのうちの1つは自動化されています。各方法の作業原理は類似しており、次の3つの主要なステップから構成されています。リモートPowerShellセッションの作成、認証、Exchange Online PowerShellのコマンドレットのインポート。

重要な推奨事項は、Exchange Online PowerShellでの作業が終了したらリモートPowerShellセッションを切断しておくことです。これにより、すべてのセッションがビジー状態になり、新しいリモートExchange Online PowerShellセッションを開くことができない状況を回避できます。クラウド内にExchange Serverを持つことは信頼性の高い解決策ですが、この場合でも、データの偶発的な削除やその他の災害からデータを保護するために、Exchangeサーバーのバックアップを作成することを推奨します。

Source:
https://www.nakivo.com/blog/how-to-connect-office-365-exchange-online-powershell/