前言
要如何透過 Exchange Web Service (EWS) 來取得所有的 會議室(Room) 呢?
EWS 可取得 RoomList ,可以取得會議室群組,
但是各別的 會議室 要怎麼取得呢?
Exchange Shell 可以透過 filter 來取得,如下,Get-Mailbox -Filter "RecipientTypeDetails -eq 'RoomMailbox'"
或是Get-Mailbox | Where {$_.ResourceType -eq "Room"}
但是用 C# 要如何取得 會議室(Room) 呢?
實作
會議室也會將資料寫到 AD ,
所以可以透過 AD 來 Filter ,
取出 DirectoryEntry 中 mail
的屬性,
以下程式節取自Exchange Development: Finding Rooms and Busy/Free status with Suggestions for Meeting,如下,
1 | using System.DirectoryServices; |
- 註: 要加入 System.DirectoryServices 參考
- 註: msExchRecipientDisplayType 7 代表 會議室(ConferenceRoomMailbox),詳細參考 Every last msExchRecipientDisplayType and msExchRecipientTypeDetails value
- 註: 當出現
Unknown error (0x80005000)
的錯誤,請檢查LDAP
是否為大寫 - 註: 當出現
無法指出的錯誤
的錯誤,請檢查adHost
是否有加LDAP://
,例如var adHost = "LDAP://你要連的 AD Server";
而非var adHost = "你要連的 AD Server";
參考資源
Exchange Development: Finding Rooms and Busy/Free status with Suggestions for Meeting
Explore the EWS Managed API, EWS, and web services in Exchange
Every last msExchRecipientDisplayType and msExchRecipientTypeDetails value