kazuakix の日記

Windows Phone とか好きです

Power Shell を使って Office 365 のデータセンターを調べる

この記事は PowerShell Advent Calendar 2014 の 21 日目です。
 
さて、皆さんお使いの Office 365 ですが先日から日本データセンターでの提供が開始されました。既存の契約についても来年から順次日本に移動されるそうです。

となると気になるのが自分のテナントがどこのデータセンターに格納されているのか? ですね。これについては Office 365 ブログで確認方法が案内されていました。


尚、通常の管理画面での確認方法は提供されておらず、PowerShell を使ってサーバーに接続する必要があります。上記の記事では Exchange Online と Lync Online について確認方法が紹介されていましたので順番に確認していきましょう。

Exchange Online に接続する

認証情報の準備

Get-Credential コマンドレットを使って Office 365 のユーザー名、パスワードを入力しておきます。(ここでは認証している訳ではないので、間違えて入力しても何のエラーも出ません)

PS C:\> $credential = Get-Credential

f:id:kazuakix:20141220193201j:plain,w360

入力後、$credential 変数の中身を見てみるとユーザー名とパスワードが保存されている事がわかります。パスワードは SecureString に格納されていますね。

PS C:\> $credential

UserName                              Password
--------                              --------
kazuaki@***.***   System.Security.SecureString

Exchange Online への接続

New-PSSession コマンドレットでリモート接続を行います。オプションが長いですが、以下のコマンドをそのまま入力します。

PS C:\> $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.ou
tlook.com/powershell -Credential $credential -Authentication "Basic" -AllowRedirection

警告: 接続は次の URI にリダイレクトされました。"https://pod51054psh.outlook.com/powershell-liveid?PSVersion=4.0

警告が出てきますが特に問題はありません。

続けて Import-PSSession コマンドレットでモジュールをインストールします。

PS C:\> Import-PSSession $session

警告: モジュール 'tmp_cm4ox5xj.qsi' からインポートされたコマンドの中には、名前に承認されていない動詞を含むものがあり、このようなコマンドは検出される可能性が低くなる場合があります。承認されていない動詞を含むコマンドを見つけるには、Verbose パラメーターを使用してもう一度 Import-Module コマンドを実行してください。承認されている動詞の一覧を表示するには、「Get-Verb」と入力してください。

ModuleType Version    Name               ExportedCommands
---------- -------    ----               ----------------
Script     1.0        tmp_cm4ox5xj.qsi   {Add-AvailabilityAddressSpace, Add-DistributionGroupMember...

New-PSSession で接続して、そこから必要なモジュール(コマンド)だけをダウンロードしているイメージでしょうか?これによりあたかもローカル PC のようにコマンドを実行することができます。正直よくわからないけどすごい仕組みですね。

サーバーを確認する

Get-OrganizationConfig コマンドレットの出力のうち OriginatingServer を見ることでデータセンターが判別できるそうです。

PS C:\> Get-OrganizationConfig | Format-List OriginatingServer

OriginatingServer : ***************.APC********.prod.outlook.com

これによると 僕のテナントは現在 APC (東アジア) にあるようです。

後処理

以下のコマンドでリモート接続を終了しておきます。

PS C:\> Remove-PSSession $session

リモート接続を切ると Import-PSSession で取り込んだモジュールも使えなくなります。
 

Lync Online に接続する

事前準備

Lync Online についても事前に以下のモジュールが必要になります

また Windows Remote Management サービスを実行して、Basic 認証を有効にします。

PS C:\> Start-Service winrm
PS C:\> winrm set winrm/config/client/auth '@{Basic="True"}'
Auth
    Basic = true
    Digest = true
    Kerberos = true
    Negotiate = true
    Certificate = true
    CredSSP = false

認証情報の準備

Exchange への接続と同じです。上記で入力したものをそのまま再利用できます。

Lync Online への接続

Exchange への接続と同様リモート接続してモジュールを取り込むのですが、New-PSSession ではなく New-CsOnlineSession コマンドレットを使って接続しています。

PS C:\> $session = New-CsOnlineSession -Credential $credential
警告: WSMan NetworkDelayms has been set to 30000 milliseconds. The previous value was 5000 milliseconds.
警告: To improve the performance of the Lync Online Connector, it is recommended that the network delay be set to
30000 milliseconds (30 seconds). However, you can use Set-WinRMNetworkDelayMS to change the network delay to any
integer value.

PS C:\> Import-PSSession $session

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------

Script     1.0        tmp_rnd1dyri.feh                    {Copy-CsVoicePolicy, Disable-CsMeetingRoom, Enable-CsMeeti...

サーバーを確認する

Lync Online の場合は Get-CsTenant コマンドレットの出力の OriginatingServer を見る事でデータセンターがわかります。

PS C:\> Get-CsTenant | Format-List OriginatingServer

OriginatingServer : SG**********.lync0f001.local

Lync Online の方が細かい情報がわかるのですね。どうやら今は東アジアの中でもシンガポール (SG) にあるようです。
日本に来た場合は 東京か大阪かもわかるみたいなのでどちらに来るのか楽しみです。

後処理

Exchange と同じく、以下のコマンドでリモート接続を終了しておきます。

PS C:\> Remove-PSSession $session