PowerShellを使ってExchange Onlineを管理

Office 365に含まれるExchange Onlineには、
Office365管理者ポータルサイトから管理を行う方法や
OWAを使ってメールボックスの管理を行う方法、
Exchange管理コンソールを利用して管理する方法
のようなGUIによる管理方法の他、
PowerShellによる設定方法があります。

Office 365関連のトレーニングでお話をさせていただくと
Exchange OnlineをPowerShellから操作するってどうやって行うの?というご質問をいただくことが多いので、
今回の投稿ではPowerShellを使ってExchange Onlineを管理する方法について
まとめておきたいと思います。

■ ■ ■

まず、PowerShellを使ってExchange Onlineを管理する方法には次のやり方があります。

1. Windows PowerShell用Microsoft Online ServicesモジュールをインストールしてPowerShellコマンドレットを実行
2. WinRMを利用してExchange Onlineに接続してリモートからPowerShellコマンドレットを実行

1.と2.はExchange Onlineに対する命令を行うためのコマンドレットが実行できるので、
どちらも同じであるように思えますが、実際には実行できるコマンドレットの種類が異なります。
1.の場合にはExchange OnlineというよりはOffice365に対するコマンドレットを中心に用意しており、
2.の場合にはメールボックス管理などExchange Onlineに関連したコマンドレットを中心に用意しています。

■参考
Windows PowerShell用Microsoft Online Servicesモジュールで実行可能なコマンドレット一覧(1.で実行可能なコマンドレット)
http://onlinehelp.microsoft.com/ja-jp/office365-enterprises/hh125002.aspx#BKMK_TOC
Exchange Onlineに接続して実行可能なコマンドレット一覧(2.で実行可能なコマンドレット)
http://help.outlook.com/ja-jp/140/dd575549.aspx

■実行方法
1.と2.の方法でそれぞれPowerShellを利用する場合、次の準備が必要となります。
・Windows PowerShell用Microsoft Online ServicesモジュールでPowerShellを利用するための準備(1.の準備)
-Microsoft Online Servicesサインインアシスタントのインストール
-Windows PowerShell用Microsoft Online Servicesモジュールのインストール
(どちらもOffice365サイトからダウンロードできます)
インストールが完了したら、デスクトップにあるMicrosoft Online Servicesモジュールのアイコンをダブルクリックすれば利用できるようになります。
実行するときには、最初にOffice 365管理者の資格情報の入力が必要になりますので、
Microsoft Online Servicesモジュールを実行したら、最初に以下の2行を実行して、資格情報を入力しましょう。

$cred = Get-Credential
Connect-MsolService -Credential $cred

・WinRMを利用してExchange Onlineに接続してリモートからPowerShellを利用するための準備(2.の準備)
Windows PowerShell 2.0とWinRMが利用できる環境なら事前にインストールするコンポーネントはありません。
(Windows Server 2008 R2ならデフォルトで利用できる環境になってますね)
さらに、Exchange Onlineに接続・利用する方法については以下のサイトでも解説していますが、

-サービスへのWindows PowerShell接続
http://technet.microsoft.com/ja-jp/exchangelabshelp/cc952755

参考までにこちらでも利用方法を紹介しておきます。

Set-ExecutionPolicy RemoteSigned

$cred = Get-Credential

Connect-MsolService -Credential $UserCredential

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

Import-PSSession $Session

(2014年8月23日修正)
スクリプト内のシングルクォーテーションをバックスラッシュに直しました。

Set-ExecutionPolicy RemoteSignedについては端末で一度だけ実行すればよい設定ですね。
また、2行目と3行目は1.の方法と同じくExchange Onlineを利用するための
管理者の資格情報を設定するためのコマンドレットとなります。

ここまでのコマンドレットを実行すれば、
あとはExchange Onlineに対する様々なコマンドレットを実行できるようになります。
例えば、Exchange Onlineアカウントの予定表に対してアクセス権をコマンドレットで設定したい、
というときはOzawaさんのブログで紹介されているような方法で実行できるようになるわけです。
(OzawaさんのブログにもOffice365関連の情報が掲載されております。お勧めです!)

それから、Exchange OnlineでIRMの機能を有効にするなど、一部設定については
Enable-OrganizationCustomizationコマンドレットを別途実行する必要がありますので、
そのことも覚えておくとよいでしょう。

■ ■ ■

最後になりますが、Exchange管理コンソールを使って、Exchange Onlineの管理をされている場合でも
Exchange管理シェルから自動的にExchange Onlineの管理ができるようになるわけではありません。
そのため、Exchange管理シェルからExchange Onlineの管理を行うときにも2.の方法を実践してください。