ホーム » Office365 » 【Office365】PowerShellでOffice365に接続する

【Office365】PowerShellでOffice365に接続する


Office365はWebの管理画面が提供されており、各種設定はそこで行います。しかしながら、いくつかの設定項目はこのWeb管理画面で設定することができず、PowerShellやAPIを経由した設定しかできないものがあります。そのため、Office365におけるコンフィグレーションにはPowerShellを用いる機会が多く発生します。本記事では、PowerShellを使ってOffice365にアクセスするための方法を解説します。

準備

PowerShellを普段使われない方のために、PowerShellの基礎から説明します。
標準でWindowsに用意されているPowerShellのコンソールには2種類存在します。

1つ目は通常のPowerShell (powershell.exe)です。

2つ目がPowerShell ISE (powershell_ise.exe)です。

通常のPowerShellは、従来のDOSプロンプトと同様なインタフェースとなっています。PowerShell ISEはコマンドラインの画面に、更にいろいろなボタンや機能を追加したものとなります。特に、PowerShell ISEの方ではコードヒントを表示してくれるので、PowerShellにあまり慣れていない人にとってはこちらの方が便利だと思います。

DOSプロンプトの場合、.batや.cmdファイルでバッチファイルを作成することができますが、PowerShellにおいては.ps1ファイルでバッチファイルを作成することができます。しかしながら、デフォルトの状態ではセキュリティの強化により、.ps1ファイルは実行できないようになっています。

現在の状態がどうなっているのか確認をするためには、PowerShellで以下のコマンドを実行します。

Get-ExecutionPolicy

「Restrected」が表示された場合は、現在.ps1ファイルは実行できません。

このExecutionPolicyの値とその意味は次の通りです。

Restricted

構成ファイルの読み込みやスクリプトの実行を行いません。既定値は “Restricted” です。

AllSigned  すべてのスクリプトと構成ファイルが信頼された発行元によって署名されていることを要求します (ユーザーがローカル コンピューターに書き込むスクリプトを含む)。
RemoteSigned

インターネットからダウンロードされたすべてのスクリプトおよび構成ファイルが、信頼された発行元によって署名されていることを要求します。

Unrestricted  すべての構成ファイルを読み込み、すべてのスクリプトを実行します。インターネットからダウンロードされた署名されていないスクリプトを実行する場合、スクリプトを実行する前に確認を求められます。
Bypass  何もブロックされず、警告もメッセージも表示されません。
Undefined  現在のスコープから現在割り当てられている実行ポリシーを削除します。このパラメーターは、グループ ポリシー スコープ内で設定された実行ポリシーは削除しません。

自分で作成するps1ファイルを動作させるためには、「RemoteSigned」を設定しておくと良いでしょう。

また、この設定にはスコープがあり、どの範囲に対して設定するのかを指定することができます。

Process 実行ポリシーは現在の Windows PowerShell プロセスにのみ影響します。
CurrentUser 実行ポリシーは現在のユーザーにのみ影響します。
LocalMashine 実行ポリシーはコンピューターのすべてのユーザーに影響します。

以下のようにポリシーを設定すると、ps1ファイルが実行できるようになります。スコープは必要に応じて最適なものを選択してください。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

次項より、本題のPowerShellを使ってOffice365へ接続する方法を解説します。

 

認証

Office365へ接続するためには、当然ながら認証が必要となります。今回は、WindowsにログインしているアカウントがAzureAD上のアカウントではない環境を前提とします。

まずはPowerShellで以下のコマンドを実行してみてください。

$credential = Get-Credential

すると、下図のような認証ダイアログが表示されるはずです。


ここにOffice365へ接続可能なアカウントを入力してください。そうすると、このユーザIDとパスワードの情報はSystem.Management.Automation.PSCredentialオブジェクトとして$credential変数に格納されます。この後、Office365への接続に対し、この$credentialの情報を使用して認証を行うことになります。

 

Exchange Onlineへの接続

Exchange Onlineへ接続するには、リモートのサーバに対してセッションを確立して接続を行います。Exchange Onlineとセッションを確立するためには、次のコマンドを実行します。

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

New-PSSessionの詳細はこちら

今回は認証に基本認証を指定しています。必要に応じてカスタマイズしてください。

認証情報及びネットワーク環境等に問題がなければ、接続が完了します。エラーが起きた場合は、エラーメッセージを参考にアカウント情報、およびネットワーク環境を見直してください。

次に、Exchange Onlineで実行可能な各種コマンドレットのモジュールをリモートサーバからダウンロードします。

Import-PSSession $session

これでExchange Onlineに接続し、操作を行う準備が完了しました。
問題がないか、以下のコマンドレットを実行してみてください。

Get-Mailbox

エラーが発生せず、すべてのメールボックスの一覧が表示されればOKです。


コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA