Ryutaro一覧

NO IMAGE

Exchange 管理シェルとリモート PowerShell のデータ型の違い

Exchange 管理シェルとリモート PowerShell では、データ型が異なる場合があります。 例えばトランスポート ルールで承認者が設定されている場合は ModerateMessageByUser で確認できます。 Exchange 管理シェルでは、以下の通り System.Array クラスを継承している RecipientIdParameter 型の配列です。 一方、リモート PowerShell では以下の通り ArrayList 型です。 この型の違いが、要素数を取得する際に影響します。 RecipientIdParameter 型の配列では Length プロパ...

NO IMAGE

GetRoomLists / GetRooms の制限

EWS で会議室一覧配布グループを使用する際、GetRoomLists や GetRooms を使用します。 GetRoomLists で返される会議室一覧配布グループの数には制限はありませんが、GetRooms で返される会議室の数は 100 件に制限されています。 検証のため、まずは会議室一覧配布グループを作り、110 個のメンバーを追加しておきます。 以下のような状態になります。 そして、C# / EWS Managed API で以下のようなコードを書きます。 結果、特に例外は発生しませんが、100 件しか取得できません。 これはスロットリング ポリシーではなく、1...

NO IMAGE

PowerShell のプロンプトを変更する

PowerShell を利用する際に、コマンドを実行した時刻が記録されると便利だと思うことがあります。 もちろんその都度 Get-Date などを実行してもいいですが、少し面倒です。 そんな時はプロンプト、「PS >」の部分を変更してしまうと便利です。 まずは現在時刻をプロンプトに表示してみましょう。 Exchange 管理シェル風に、色を付けることもできます。 パスが長くなるとコマンドを入力できる文字数が減っていやだというときは、改行してしまうこともできます。 現在のプロンプトの設定を確認するには以下を実行して確認できます。 元に戻すには Powe...

NO IMAGE

Exchange サーバーのバージョン番号と製品名を相互変換する

「この CU のバージョン番号はなんだったか?」や、逆に「このバージョン番号は CU いくつだ?」と思うことが多々あります。もちろん TechNet などにも記載がありますが、わざわざ表示して確認するのも少し面倒。 そこで Get-ExchangeBuildNumber を使用します。使い方は README に書いてある通り、簡単ですね。リポジトリの名前は Get-ExchangeBuildNumber ですが、製品名からバージョン番号を取得する Get-ExchangeBuildNumber と、バージョン番号から製品名を取得する Get-ExchangeProductName が含まれて...

NO IMAGE

Outlook や OWA の予定表のショートカットを EWS で取得する

Outlook や OWA で開いた他人の予定表は画面左側にリスト表示されますが、この情報を EWS で取得したいという話をよく聞きます。 正しい呼び方がわからないのでここでは説明の都合上「予定表のショートカット」と呼びますが、残念ながら EWS にはこの内容を取得する サポートされた API がありません。 それでも情報はメールボックスに保存されているので、情報を取得できないこともないです。 サポートされる API がない以上、今後実装が変わる可能性はありますが、まずはどのように情報が保存されているのかを確認する必要があります。 予定表のショートカットは、メールボックスのルートの中の...

NO IMAGE

インプレース保持の反映時間

Set-MailboxSearch コマンドの InPlaceHoldEnabled を変更すると、以下のように「保留中の設定が有効になるまで最大 60 分かかります。」と表示されます。 英語ではこの警告は「The hold setting may take up to 60 minutes to take effect.」なので翻訳が少しおかしいですが、それはさておき反映まで 60 分かかるようです。ではこの 60 分とは何の時間でしょうか。 答えは、Exchange サーバー内部のキャッシュが切れるまでの最大時間です。インプレース保持の設定はキャッシュされており、その保持時間が最大...

NO IMAGE

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

Microsoft Graph では Exchange Online のメールボックスの作成はできないと思われがちですが、ユーザーの作成とライセンスの割り当てを行うことができるので、結果としてメールボックスの作成を行うことができます。 Step 1. ユーザーの作成 まずはユーザーを作成します。ポイントとしては、この時に usageLocation を指定することです。この例では JP (日本) を指定しています。その他の値は適宜変更してください。 POST { "accountEnabled": true, "displayName": "testUs...

NO IMAGE

EWS でメッセージ クラスを変更する

EWS でメッセージ クラス (ItemClass プロパティ) を変更して Update を行うと、一部を除いてたいていの場合は ObjectTypeChangedException が発生して失敗します。例えばこれは、IPM.Note を IPM.Post.MySubClass に変更をしようとしたときの EWS ログです。 2016-05-24T09:44:41.693Z,34817ede-9d8a-4b81-9b92-2d9c0e2cfe49,15,0,995,12,,Negotiate,True,Administrator@rykoma01.lab,rykoma01.lab,Exch...

NO IMAGE

Outlook.com と Exchange Online の統合

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

NO IMAGE

Office 365 API 入門 – Web アプリケーション編

Office 365 で用意されている Office 365 API を使用すると、例えばプログラムからメールボックスの内容を参照したり、メールを送信したりといったユーザーの操作を行うことができるようになります。Exchange 2007 から使用できる EWS のほうがより高度なことが実現でき、開発者の人口が多く情報が集まりやすいのは事実ですが、Office 365 API はいわゆる REST 通信となるので Windows や .NET 以外のプラットフォームの開発者から好まれるように思います。 Office 365 API のリファレンスは MSDN で公開されていますが、実際に...