Office 365 Exchange Online と PowerShell の連携:ステップバイステップガイド
Webブラウザ上のGUIを使用して、すべてのアプリケーションを含むMicrosoft 365を管理するのは便利ですが、それはある程度に限られます。ITプロフェッショナルが最もよく使用する2つのインターフェースは、Exchange 管理センターとOffice 365 管理センターです。しかし、組織全体で数百ものMicrosoft 365アカウントを管理する必要がある場合、コマンドラインインターフェース(CLI)の方が効率的な解決策となる可能性があります。 これを使用すると、管理センターでは利用できないExchange Onlineコマンドを適用できます。
管理者として、MicrosoftのPowerShellのコマンドラインインターフェースを介してMicrosoft Exchange Serverを管理できます。問題は、オンプレミスのExchange Server環境で通常使用できるコマンドレットが、クラウドベースのExchange Onlineには適さないことです。 Office 365でPowerShellコマンドレットを使用するには、Exchange Online PowerShellモジュールをインストールする必要があります。本記事では、Exchange OnlineをPowerShellに接続するさまざまな方法について解説します。Exchange Onlineでコマンドレットを使用することで、管理業務を効率化でき、時間と労力を節約できます。
環境の準備
システム要件
Exchange Online を PowerShell に接続するには、お使いのシステムが以下の要件を満たしていることを確認してください:
- Windows 7 SP1 以降またはそれ以降のデスクトップ版 Windows、および Windows Server 2008 R2 SP1 以降またはそれ以降のサーバー版 Windows。Windows Management Framework 3.0、4.0、または 5.1 に加え、.NET Framework 4.5 以降がインストールされている必要があります。
- インターネット接続:ローカルマシンと宛先ホスト間の接続を確立するために、TCPポート80を開いてください。
- Exchange Online PowerShell を使用している現在のユーザーには、アクセス権が有効になっています。管理者アカウントでは、このアクセス権がデフォルトで有効になっています。
次のコマンドレットを使用すると、特定のアカウントに対してExchange Online PowerShellへの接続を有効にできます:
Set-User -Identity user@domain.com -RemotePowerShellEnabled $true
Exchange Online PowerShell モジュールのインストール
Exchange Online PowerShell モジュールにはコマンドレットが含まれており、テナントの Exchange 管理を可能にするため、そのインストールが必要です。このガイドでは、Exchange Online V2 PowerShell モジュールをインストールします。
ただし、クライアント マシンに Exchange Online モジュールがすでにインストールされているかどうかを確認したい場合もあるでしょう。その場合は、次のコマンドレットを実行してください:
Get-Module -ListAvailable -Name ExchangeOnlineManagement
モジュールが見つからない場合は、インストールを続行してください。Exchange Online PowerShell モジュールは、1 つの PowerShell コマンドでインストールできます。インストールを開始するには、Windows PowerShell を管理者として実行し、次のコマンドレットを実行してください。
#Install Exchange Online Management Module
Install-Module -Name ExchangeOnlineManagement -Force
システムが信頼できないリポジトリからのインストールを確認するよう求めた場合は、 Y 続行するには、
を実行してください。システムに Exchange Online PowerShell モジュールがインストールされていない場合、次のエラー メッセージが表示されます:
Connect-ExchangeOnline: "Connect-ExchangeOnline"という用語は、コマンドレット、関数、スクリプト ファイル、または実行可能なプログラムの名前として認識されません。
次のコマンドレットを使用して、モジュールを更新できます:
Update-Module ExchangeOnlineManagement
接続の設定
このガイドでは、PowerShell を Exchange Online に接続するための 2 つの主な方法、すなわち手動設定と自動設定について解説します。
手動設定
設定プロセスをよりよく理解するために、まずは手動での方法から始めましょう:
- Windows PowerShell を起動し、以下のいずれかを選択して続行してください:
- ヒット
Start、入力cmd、次に右クリックしてCommand Prompt項目。コンテキストメニューから、[Run as Administrator. - または、こちらへ
Start>Windows PowerShell. "Windows PowerShell"を右クリックし、次にRun as Administratorコンテキストメニューから。PowerShellを管理者モードで実行すると、制限なくコマンドレットを実行できます。
- ヒット
- PowerShellを正しく使用するには、スクリプトを有効にする必要があります。スクリプトを実行するには、ポリシーを次のように設定する必要があります。 リモート署名. 実行ポリシーを設定するには、次のコマンドを実行してください:
Set-ExecutionPolicy RemoteSignedExchange Online および Microsoft 365 の管理用に PowerShell の設定を開始する際、このコマンドレットをすぐに実行することを検討してください。そうしないと、その後このコマンドレットを実行しようとした際に
Import-PSSessionこのコマンドを実行すると、次のエラーが発生します:Import-PSSession : このシステムではスクリプトの実行が無効になっているため、ファイルを読み込むことができません。ファイルに署名するための有効な証明書を指定してください.
- システムから確認を求められた場合は、[Enter] キーを押してください
Yポリシー変更を確認するため。また、以下の 制限なし このコマンドレットを使用してポリシーを設定します:Set-ExecutionPolicy Unrestrictedデフォルトでは、実行ポリシーのモードは 閲覧制限あり.
- Exchange Onlineへのアクセスを有効にするには、認証情報オブジェクトを作成し、ポップアップウィンドウに管理者アカウントとパスワードを入力する必要があります。アクセス権限を持つユーザーには、Microsoft 365のグローバル管理者権限が必要です。
$Credential=Get-Credential - その後、システムは入力された認証情報を $Credential 次のコマンドで使用する変数。
- 次の 新しいPSSession リモート PowerShell セッションを作成するコマンドレット。次のコマンドを実行してください:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection注: このコマンドレットでは、リクエストを受け付ける必要があるクラウド版 Exchange Online サーバーの宛先 URL を指定します。コマンドを実行すると、Microsoft 365 クラウドサーバーにより、現在の Microsoft 365 アカウントに関連付けられた Exchange Online 仮想サーバーへのアクセスが許可されます。
- 現在のセッションにExchange Online PowerShellコマンドレットをインポートする必要があります。使用するコマンドは次のとおりです:
Import-PSSession $Sessionインポート処理中は、進行状況バーが表示されます。
- コマンドが正常に完了すると、次のようなメッセージが表示されます:

注: Microsoft 365 アカウントで MFA(多要素認証)が使用されている場合、前述の標準のコマンドレットは機能しません。MFA が有効になっている状態で PowerShell を Exchange Online に接続するには、次のコマンドを実行してください:
Connect-EXOPSSession -UserPrincipalName YOUR_UPNこのコマンドレットにおいて、YOUR_UPN はユーザープリンシパル名(UPN)を表し、これは使用している Microsoft 365 アカウントの名前です。ここでは、別のモジュールをインストールする必要がある場合があります:Microsoft の Exchange Online リモート PowerShell モジュール。
このモジュールでは、使用中に1時間経過するとセッションが終了するため、処理に時間がかかるスクリプトの実行には不向きである点にご注意ください。また、以下の使用もご検討ください 信頼されたIPアドレス (つまり、組織のIPアドレスです)。これにより、組織のネットワークからExchange Online PowerShellに接続する際に、多要素認証(MFA)を回避できるようになります。
- Microsoft 365 および Exchange Online への接続設定が完了したら、Office 365 クラウド環境の管理を開始できます。コマンドレットを実行して、接続が正常に機能しているかを確認できます。たとえば、次のコマンドを使用して、利用可能なメールボックスの一覧を表示してみてください。
Get-Mailbox次のコマンドレットを実行すると、利用可能な Exchange Online PowerShell コマンドの一覧が表示されます:
Get-Command -Module tmp* - Exchangeでの作業が終了したら、セッションを終了してください。これは、セキュリティとパフォーマンスの最適化の両方の観点から推奨される手順です。コマンドレットは以下の通りです:
Remove-PSSession $Session注: このコマンドの実行後、メッセージは表示されません。セッションが正常に削除されたかどうかを確認するには、同じ
Get-MailBoxコマンド。セッションが切断されている場合、Exchange Online コマンドレットを実行できないというエラーが表示されます。
同時に開けるセッションの数には制限があります。3つのセッションを同時に実行できますが、いずれのセッションも切断しない場合、別のPowerShellコンソールから新しいセッションでExchange Online PowerShellに接続するには、セッションの有効期限が切れるまで待つ必要があります。
自動設定
手動による方法に加え、PowerShellの自動化機能を使用してPowerShellとExchange Onlineを連携させることもできます。自動化により必要なコマンド数が減り、設定プロセスが迅速化されます。
以下の手順に従ってください:
- スクリプトをダウンロードしてください。この例では、スクリプトファイルの名前は ConnectExchangeOnlinePowerShell.ps1
- ダウンロード後に、そのディレクトリ内でスクリプトファイルを探してください。スクリプトは次の場所にあります。 C:temp_win.
- スクリプトを実行する前に、スクリプトの実行ポリシーを リモート署名 次のコマンドレットを使用します:
Set-ExecutionPolicy RemoteSignedこれにより、次のようなエラーを回避できます:
ファイル"C:temp_winConnectExchangeOnlinePowerShell.ps1"にはデジタル署名がありません。このスクリプトを現在のシステムで実行することはできません。.
その バイパス 適用された実行ポリシーにより、この問題も回避できます。必要なコマンドレットは以下の通りです:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass - 以下のコマンドを入力して、実行ポリシーの変更を確認してください
Y. - これでスクリプトを実行できます。Microsoft 365 アカウントで MFA が有効になっていない場合、スクリプトに追加の引数を指定する必要はありません:
.ConnectExchangeOnlinePowerShell.ps1Microsoft 365 環境で MFA が有効になっている場合は、次のコマンドを使用してください:
.ConnectExchangeOnlinePowerShell.ps1 -MFA - Exchange Online と PowerShell の接続が正常に確立されたら、コマンドレットを使用して、ユーザーアカウントやメールボックス、その他の項目、およびワークフローの管理を開始できます。たとえば、次のコマンドレットを使用すると、利用可能なユーザーメールボックスの一覧を取得できます:
Get-Mailboxまた、このスクリプトを使用してワークフローのスケジュール設定やさらなる自動化を行うこともできます。たとえば、認証情報を指定せずにExchange Onlineに接続することが可能です。このスクリプトでは、実行オプションとしてログイン名とパスワードを追加することができます:
./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_passwordスクリプトのコマンドラインでパスワードを平文で指定すると、データ漏洩が発生した場合にセキュリティ上の問題となる可能性がある点にご注意ください。
- セッションは最大3つまでという制限が依然として適用されるため、Exchange Online PowerShellでの作業が終了したら、セッションを終了することをお勧めします。セッションを終了するためのコマンドレットは次のとおりです:
./ConnectExchangeOnlinePowerShell.ps1 -Disconnect
MacOSでPowerShellを使用してExchange Onlineを管理する方法
macOSにPowerShellをインストールするには、いくつかの方法があります。最も便利で簡単な方法は、クライアントを直接 マイクロソフトのサイト. PowerShell バージョン 7.2 以降では、Apple Silicon CPU がサポートされています。
なお、macOS 11 Big Sur 以降が動作する Mac が必要となります。該当するデバイスに PowerShell パッケージをインストールした後、前述の手動または自動の設定方法のいずれかを使用して、PowerShell を Exchange Online に接続してください。
Exchange Online での PowerShell の使用
PowerShell コマンドレットを使用すると、Exchange Online の管理にかかる時間と労力を削減できます。
基本的なコマンドレットの例を以下に示します。
New-Mailbox– 新しいユーザーメールボックスを作成するSet-Mailbox– 既存のメールボックスの設定を変更するGet-Mailbox–to環境全体で利用可能なメールボックスに関する情報を表示するRemove-Mailbox–toExchange Online からメールボックスを削除する
利用可能な PowerShell コマンドレットの一覧を表示するには、次のコマンドを実行します:
Get-command -Module ExchangeOnlineManagement
最後に、このスクリプトのサンプルをご覧ください。このスクリプトを使用すると、Exchange Online からすべてのメールボックスを取得できます:
#Import PowerShell module for Exchange Online
Import-Module ExchangeOnlineManagement
#Connect to Exchange Online
Connect-ExchangeOnline -Credential (Get-Credential) -ShowBanner:$False
#Get All Mailboxes
Get-EXOMailbox | Format-table UserPrincipalName,DisplayName
#Disconnect Exchange Online
Disconnect-ExchangeOnline -Confirm:$False
結論
Exchange Online を PowerShell に連携させることで、Exchange メールボックスを迅速かつ便利に管理できるようになります。さらに、スクリプトを使用して、複数のアカウントに対する操作、変更、調整を一度に自動化できるため、業務効率が向上します。
Microsoft は Exchange Online、Microsoft Teams、OneDrive、SharePoint Online 向けのネイティブバックアップツールを提供していないため、クラウド上のデータ損失を防ぐために、専用のバックアップソリューションを必ず使用してください。 NAKIVO Backup & Replication これは、Microsoft 365 データのバックアップをパブリッククラウドを含むさまざまな保存先へ送信できる、汎用的なデータ保護ソリューションです。