Exchange Online一覧

Exchange Online の PowerShell で警告出力を取得する方法

Exchange Online の PowerShell では以下のように警告が出力されることがあります。 この警告の内容をスクリプトで取得するには、コマンド自体を Invoke-Command で実行して、WarningVariable で取得します。以下のようにします。 $warn = "" Invoke-Command -Command {Get-Mailbox -ResultSize 1} -Session:(Get-PSSession) -WarningVariable warn こうすると、WarningVariable に指定した変数を参照することで警...

NO IMAGE

Office 365 で利用可能なメッセージング関連 API について

Office 365 の一部である Exchange Online ではメールや予定表など様々な機能がありますが、これらの各ユーザーのメールボックス上の情報にプログラムからアクセスするためにいくつかの API が用意されています。 様々なアプローチがあるため API も多数ありますが、ここでは EWS / Office 365 API (Outlook REST API) / Microsoft Graph にフォーカスを当てて説明します。 EWS EWS (Exchange Web Services) は、もともとオンプレミスの Exchange 2007 以降で導入された W...

代理人の設定や非公開の予定を表示する権限を PowerShell で確認する方法

いままでは代理人の設定や非公開の予定を表示するかどうかについては、Outlook や EWS でないと確認ができませんでした。これが Exchange Online の PowerShell でできるように、しれっと機能が強化されています。ただし予定表フォルダー限定です。 例えば EXO の OWA で以下のように代理人と非公開の予定を表示する設定を行ったとします。 そして以下のようにコマンドを実行します。ユーザー名やフォルダー名は適宜読み替えてください。 すると以下のように SharingPermissionFlags に Delegate と CanVie...

Remote PowerShell コマンドの既定の出力内容

2018/08/01 Update 2018 年 5 月ごろより順次 Get-Mailbox コマンドの既定の出力が Name, Alias, Database, ProhibitSendQuota, ExternalDirectoryObjectId に変更されています。 Exchange Online の PowerShell に接続して Get-Mailbox コマンドを実行すると、既定で Name / Alias / ServerName / ProhibitSendQuota の 4 つが出力されているはずです。 Get-Mailbox コマンドの結果を fl する...

NO IMAGE

多要素認証を使用した Exchange Online PowerShell の裏側

TechNet にも記載の通り、Exchange Online に接続する PowerShell で MFA が利用できるようになっています。 Remote PowerShell の制約で OAuth が使えなかったはずですが、動作を見るとどうも OAuth を使っているように見えます。 今回は内部動作を見てみたいと思います。 TechNet に従って Exchange 管理センターからモジュールをダウンロードすると、Microsoft Exchange Online PowerShell というアプリケーションがインストールされています。 このアプリケーションを起動すると Power...

NO IMAGE

Graph API で Exchange Online のメールボックスを作成する

Graph API では Exchange Online のメールボックスの作成はできないと思われがちですが、ユーザーの作成とライセンスの割り当てを行うことができるので、結果としてメールボックスの作成を行うことができます。 Step 1. ユーザーの作成 まずはユーザーを作成します。ポイントとしては、この時に usageLocation を指定することです。この例では JP (日本) を指定しています。 HTTP request POST Request body { accountEnabled:true, displayName:"testUser05", mailNickname:...

NO IMAGE

Outlook.com と Exchange Online の統合

Outlook.com と Exchange Online の統合がどんどん進んでいるようです。 先日より Office 365 API でいわゆる v2 endpoint を使った開発ができるようになりました。これにより、開発者は接続先が Outlook.com なのか Office 365 なのかを区別せずに同じ認証方式を使用して同じリクエストを投げることができるようになりました。 ただしこれは Outlook.com 側がまだ対応を開始したばかりなので、対応していないアカウントに接続すると MailboxNotEnabledForRESTAPI などのエラーが発生します。メイ...

Exchange Online の EWS に OAuth を使用して接続する

2018/06/24 最新の情報に合わせて書き直しました。 Exchange Online に EWS で接続する際、OAuth 認証を使用することができるので、手順をまとめてみました。今回は開発言語は C# を使用しています。また、Web アプリケーションではなくデスクトップ アプリケーションを想定しています。いくつか参考になる情報はインターネット上で見つかりますが、Azure も Exchange Online も常に変化しているので、普遍的な内容ではないのでご注意ください。 アプリケーションの登録 以下の URL にアクセスして、Azure Active Dir...

NO IMAGE

Get-MailboxStatistics コマンドの出力にエイリアスを追加する

Get-MailboxStatistics コマンドを使用するとメールボックスのサイズなどの使用状況を取得することができますが、出力結果にメールボックスのエイリアスが含まれていません。それらしいものは DisplayName くらいです。ですが CSV などに出力するときには一意な値であるエイリアスがあったほうがそのあとが何かと便利です。 そんな時にどうするかというと、以下のようにして一旦メールボックスの情報を変数に入れておき、後から Select コマンドの Expression を使用して出力にエイリアスを追加します。 はじめにパイプを重ねてエラーにならないように処理対...

NO IMAGE

EwsAllowList / EwsBlockList の挙動

オンプレミスでもオンラインでも、EWS アプリケーションの接続を制限したいときは Set-CasMailbox コマンドで設定することができます。EWS については比較的細かく設定することができるようになっており、EWS アプリケーションが使用するユーザー エージェントを許可リストもしくはブロックリストに登録して使用できるようになっています。 その時に使用するのが EwsAllowList / EwsBlockList ですが、ちょっと困った挙動があります。EwsAllowList / EwsBlockList に登録する文字列は大文字小文字を区別しません。そのため、例えば「MyApp*...