PowershellでOffice365に接続するための設定方法(2019年最新情報)

Powershell_Office365_setting Microsoft・Office365・Windows

Microsoft社が提供しているクラウドサービスであるOffice365は、Powershellを使って管理することができます。この記事では、PowershellでOffice365に接続するための設定方法について説明します。

少し前(2017年頃)にPowerShellでOffice365に接続する手順に更新があったようですので、古い情報と混同しないようにご注意ください。

 

Office365では、管理者向けにExchangeやSharepoint、Skypeなどの管理機能がOWA(Outlook Web App)にて提供されています。
基本的な初期設定やアカウント作成などの操作は、このOWAの管理機能から行うことができます。しかしOWAの管理機能だけでは、細かいパラメータチューニングなどを行うことはできず、Powershellを使って設定を行う必要があります。

 

まず最初にPowershellでOffice365に接続するとどのようなことができるのかを簡単に説明した後、PowershellでOffice365に接続するための初期設定・環境設定について詳しく解説していきます。

PowershellでOffice365に接続すると何ができるか?

PowershellでOffice365に接続するとどのようなことができるでしょうか?

Powershellはコマンドレットというシェルスクリプトを使いますので、IT業界の人やシステムエンジニア以外の人は普段触らないものだと思いますので苦手意識がある方もいらっしゃるかもしれません。しかし、PowerShellはOffice365を管理していく上でとても便利なツールですので、Office365管理者をされている方は是非とも習得しておきましょう。

こんな時にPowerShellを使います

PowerShellは以下のような場合に利用します。

  • 管理画面には無いより詳細なパラメータを設定する
  • アカウント作成などの定型操作を自動化する
  • 運用トラブル等が発生した場合にログや設定値を調査する

例えばメールボックスの1通当たりのファイルサイズ制限を付けるとか、Clutter機能(2019年に機能自体がなくりました)を無効化するとか、予定表のアクセス権を付与するとか管理画面上ではできない操作があります。このような場合、Powershellであれば可能なものもありますので、運用上必要な項目があればPowershellを利用する必要があります。

 

また、Powershellは大量の操作を省略化するのにも有効です。

例えば4月に新入社員がどっと入ってきた場合や、ユーザ全員に共通の設定変更を行うような場合、OWAの管理機能から1件1件設定していると膨大な時間がかかってしまいます。そのような作業では、Powershellを利用することで大量の処理を一括で実行できるため、効率化を図ることができるのです。

 

Office365管理者としてはPowershellは欠かせないツールと言えるので、ぜひ使い方をマスターしていきましょう。

PowershellでOffice365に接続するための初期設定

PowershellでOffice365に接続するための初期設定について解説していきます。

最新情報はMicrosoftによる公開情報を見よう

Microsoftは、Powershellでoffice365に接続するための手順を公開しています。
https://docs.microsoft.com/ja-jp/office365/enterprise/powershell/connect-to-office-365-powershell

 

2017年ころにAzure ADに関する新しいコマンドが追加となった影響で、以前の手順からいくつか設定方法に変更があったようです。誤って古い情報を参照することのないように、常に最新情報をチェックするようにしてください。

この記事では2019年3月時点で最新の情報を記載しています。

PowershellでOffice365に接続するための環境要件

対応OSは以下の通りです。

  • Windows10
  • Windows8.1/8
  • Windows7
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012(R2)
  • Windows Server 2008 R2

必ず64bitのWindows端末を使用してください。

※32bitのOSでは、対応するMicrosoft Azure ActiveDirectoryモジュールがサポートされていません。

 

PowershellでOffice365に接続するための初期設定

それではここからPowershellでOffice365に接続するための詳細な設定手順について説明していきます。

Graph 用 Azure Active Directory PowerShell モジュールに接続する

手順1.Powershellを管理者として起動する。

スタートメニューからPowershellを右クリックすると、「管理者として起動」というメニューがあるので、それを実行します。

Powershellが見つからない場合は、windowsSearchの検索窓に「Powershell」と打ち込んでください。

手順2.コマンドを実行してAzureADのモジュールをインストールする。

以下コマンドを実行してください。

Install-Module -Name AzureAD

信頼されていないリポジトリからモジュールをインストールするようにメッセージが表示される場合がありますが、この場合には「Y」を入力して先に進んでください。

 

 

Microsoft PowerShell の Microsoft Azure Active Directory モジュールとの接続

手順1.Microsoft Online Services サインイン アシスタント をインストール

以下のサイトからMicrosoft Online Services サインイン アシスタントをインストールします。
https://www.microsoft.com/ja-jp/download/details.aspx?id=41950

ダウンロード画面まで進むと「msoidcli_32.msi」と「msoidcli_64.msi」が選択できるので、後者を選択してダウンロードし、インストールを実行します。

手順2.Microsoft Azure Active Directory モジュール をインストール

Microsoft Azure Active Directory モジュールをインストールするために、まずWindows PowerShell を”管理者として実行”します。

Powershellが立ち上がったら以下のコマンドを実行して、Microsoft Azure Active Directory モジュールをインストールします。

Install-Module MSOnline

 

この時、いくつか警告メッセージが出る場合がありますので、NuGet プロバイダーをインストールするようにメッセージが表示されたら、「Y」と入力して、ENTER を押します。
PSGallery からモジュールをインストールするようにメッセージが表示されたら、「Y」と入力して、Enter を押します。

手順3.Office 365 サブスクリプション用の Azure AD に接続する

ここまでいったら、一旦、接続確認を行います。

Connect-MsolService

コマンドが通ればOKです。これでPowershellにてAzureADに接続されました。

 

ここまででエラーが出た場合には次の事項を確認してください。

PowershellでOffice365に接続する際に、警告・エラーが出た場合

入力ミス

最も多い間違いは、IDやパスワードの入力間違いです。改めて間違いがないか確認してみてください。

.Net frameworkのバージョン

多くの人がつまづきやすいポイントとしては、.Net frameworkのバージョンがあげられます。

「Windows PowerShell 用 Microsoft Azure ActiveDirectory モジュール」をインストールするには、Microsoft .NET Framework 3.5. x 機能が有効になっている必要があります。

特にWindows 10などはデフォルトで.NET Framework 4.Xが有効になっており、.NET Framework 3.5は無効となっていますので以下の手順で有効にしてください。

Windows10で。NetFramework3.5を有効化する

1.コントロールパネル > プログラムと機能 > Windows 機能の有効化または無効化 を起動します。

(Windows キーを押して「Windows の機能」と入力すれば [Windows 機能の有効化または無効化] が表示されます)

 

2. [.NET Framework 3.5 (.NET 2.0 および 3.0 を含む)] チェック ボックスをオンにして [OK] を選択し、メッセージが表示された場合はコンピューターを再起動します。

powershell_office365_setting_2

 

Microsoft Azure ActiveDirectory モジュールの期限切れ

その他に考えられるエラーとしては、「Microsoft PowerShell の Microsoft Azure ActiveDirectory モジュール」 のバージョンが期限切れとなっている場合があげられます。

バージョンを確認するために、Powershellを起動して以下のコマンドを実行します。

(Get-Item C:\Windows\System32\WindowsPowerShell\v1.0\Modules\MSOnline\Microsoft.Online.Administration.Automation.PSModule.dll).VersionInfo.FileVersion

返されたバージョン番号が 1.0.8070.2 の値より小さい場合は、古いことを意味しています。

プログラムと機能から「Microsoft PowerShell の Microsoft Azure ActiveDirectory モジュール」をアンインストールして、改めて最新バージョンをインストールしてください。

 

 

PowershellでOffice365に接続する方法

ここまででPowershellでAzureADに接続できているかと思います。

ここからはOffice365の各サービス(ExchangeやSharepoint)に接続していきます。

資格情報を定義する

Powershellを管理者として起動した後、以下のコマンドを実行します。

$credential = Get-Credential

ダイアログがポップアップされてきますので、Office365の全体管理者をもつアカウント情報を入力してください。

AzureADへの接続

まずAzureADに接続します。

以下どちらか一方で結構ですが、前者のコマンド推奨です(後者だと一部のshell使えない場合があります)

Connect-AzureAD -Credential $credential
Connect-MsolService -Credential $credential

 

PowershellでExcahngeに接続する

続いてExchangeに接続します。
$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri “https://outlook.office365.com/powershell-liveid/” -Credential $credential -Authentication “Basic” -AllowRedirection
Import-PSSession $exchangeSession -DisableNameChecking

 

接続時にエラーが出る

上記のExchangeへの接続コマンドを実行した時に、エラーがでる方がほとんどだと思います。コマンド実行後に真っ赤な文字列が大量に表示されるのでびっくりされたかもしれませんが心配いりません。

Exchangeに接続するためには、Powershellの初期設定が必要になります。

Powershellの実行ポリシー設定

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

Get-ExecutionPolicy

Unrestricted または RemoteSigned と表示されればOKです。そうでなかった場合には続けて以下のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

途中で確認を求められた場合には「Y」を入力してEnterで先に進みます。

 

Windows Remote Management設定

続いて以下のコマンドを実行してください。
winrm qc

「WinRM はこのコンピューター上で要求を受信するように設定されていません。」といった内容が表示された場合は、「Y」を入力してEnterで先に進んでください。
WinRMファイアウォールの例外についても同様に有効にしてください。

 

ここまでで一旦、Exchangeへの接続をリトライしてみてください。それでダメなら続いてプロキシ設定の見直しです。

プロキシ設定

Powershellはwinhttpというプロトコルがインターネット通信を行います。この時、winhttpの通信で利用されるプロキシ設定を確認するために以下のコマンドを実行します。

netsh winhttp show proxy

 

会社のネットワークなどでプロキシを導入されている場合など、直接インターネットに出ていくことができない仕組みである場合には以下のコマンドでwinhttpがプロキシサーバを経由するように設定します。

netsh winhttp set proxy <プロキシサーバのIPアドレス>

 

<注意点>
PowershellでOffice365と通信を行う際に利用されるwinhttpは、WindowsUpdateなどにも利用されています。そのためこの設定を変更してしまうと、環境によっては更新プログラムが落ちてこなくなる場合があります。WSUSなどを使って管理されている場合は要注意です。

このような場合には、 bypass-list=”<local>”を指定することをおススメします。

netsh winhttp set proxy <プロキシサーバのIPアドレス>:8080 bypass-list=”<local>”

なお、IEの設定に戻す場合は、netsh winhttp import proxy source=ieを、リセットする場合は、netsh winhttp reset proxyを使いますので、頭の片隅に置いておくとよいかもしれません。

 

 

 

ここまでで考えうる設定はすべて紹介し終えました。もう一度、Exchangeへの接続を試してみてください。

PowerShellでAzureAD・Exchangeに接続するコマンドまとめ

最初の環境設定が終わり一度、AzureADやExchangeに繋がってしまえば、今後は以下のコマンドで接続できます。

$credential = Get-Credential
Connect-AzureAD -Credential $credential
$O365Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri “https://outlook.office365.com/powershell-liveid/” -Credential $credential -Authentication “Basic” -AllowRedirection
Import-PSSession $O365Session

 

 

ここまででAzureADとExchangeというOffice365の基本的なサービスを管理するための方法を説明しました。
ここまでで十分な方がほとんどだと思いますが、SharepointやSkypeについてもPowershellコマンドレットが提供されています。

Appendix:PowershellからSharepoint・Skypeに接続する

PowershellからSharepoint・Skypeに接続する方法について解説します。

必要なソフトウェアをインストールする

以下サイトから必要なソフトウェアをインストールします。

◆SharePoint Online Management Shell
https://www.microsoft.com/ja-jp/download/details.aspx?id=35588

 

◆Windows PowerShell Module for Skype for Business Online
https://www.microsoft.com/ja-jp/download/details.aspx?id=39366

※SkypeについてはTeamsと統合することになりますので、今後情報に変更が生じると思われますのでご留意ください。

接続する

◆SharePointに接続する

Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
Connect-SPOService -Url https://<実際のドメインホスト名>-admin.sharepoint.com -credential $credential

 

◆Skypeに接続する

Import-Module SkypeOnlineConnector
$sfboSession = New-CsOnlineSession -Credential $credential
Import-PSSession $sfboSession

 

◆セキュリティ センターとコンプライアンス センターに接続する

$SccSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.compliance.protection.outlook.com/powershell-liveid/ -Credential $credential -Authentication “Basic” -AllowRedirection
Import-PSSession $SccSession -Prefix cc

Appendix:多要素認証

もし管理者IDに多要素認証をかけている場合には、以下を参考にして接続してください。
https://docs.microsoft.com/ja-jp/office365/enterprise/powershell/connect-to-all-office-365-services-in-a-single-windows-powershell-window
https://docs.microsoft.com/ja-jp/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/mfa-connect-to-exchange-online-powershell?view=exchange-ps

※今後、管理者権限をもつIDは多要素認証が必須となるともいわれていますので、早めに対応しておくのがよいでしょう。

コメント