我怎样才能展望客房,而无需通过整个地址列表

问题描述:

我在PowerShell中的以下打算:我怎样才能展望客房,而无需通过整个地址列表

[System.Collections.ArrayList] $ConfRooms = $Outlook.Session.GetGlobalAddressList().AddressEntries | ?{$_.Name -match "^Conf Room"} | %{$_.Name} 

,并在C#中的以下内容:

Outlook.AddressEntry addEntry in objOutlook.Session.GetGlobalAddressList().AddressEntries 

最后一个是遵循的:

if(Regex.IsMatch(addEntry.Name, "^Conf Room")) 

我遇到的问题是它遍历整个地址簿来查找房间。有什么方法可以得到房间清单吗?当直接通过Outlook时,我点击新项目,选择会议,选择计划助理,然后选择“添加房间”,它只给我地址列表中的房间,所以必须有一个标志,将某个地址条目定义为一个房间(因为它也包括作为一个物业的能力)。这个弹出窗口是直接的,我希望在我正在编写的程序中达到同样的效果。

对于一个房间,PR_DISPLAY_TYPE_EX MAPI属性是DT_ROOM(您可以在OutlookSpy中看到属性 - 单击IAddrBook按钮并深入到任何房间)。

另请注意,GAL公开了“所有房间”容器(您应该可以通过Namespace.AddressLists集合访问它)。请注意,如果您有多个Exchange帐户并且容器名称已本地化,则可以有多个“所有房间”容器。如果您要遍历所有地址簿列表,则“所有房间”列表的PR_CONTAINER_FLAGS MAPI属性将包含0x00000200位。

如果使用Redemption是一个选项,它暴露RDOExchangeAccountAllRoomsRDOAddressBookAllRooms属性(返回RDOAddressList对象)。

+0

说实话...从来没有使用MAPI,所以这对我来说都是希腊人。 – user3377627

+0

如果您需要访问MAPI属性,可以使用'AddressList.PropertyAccessor.GetProperty'来完成。 'PR_DISPLAY_TYPE_EX' DASL属性名称是'http:// schemas.microsoft.com/mapi/proptag/0x39050003'。 'PR_CONTAINER_FLAGS'是'http:// schemas.microsoft.com/mapi/proptag/0x36000003'。您可以在OutlookSpy(DASL编辑框)中看到DASL属性名称。 –