C# 如何在不查看整个地址列表的情况下获取Outlook Rooms

C# 如何在不查看整个地址列表的情况下获取Outlook Rooms,c#,powershell,outlook,C#,Powershell,Outlook,我在Powershell中有以下内容: [System.Collections.ArrayList] $ConfRooms = $Outlook.Session.GetGlobalAddressList().AddressEntries | ?{$_.Name -match "^Conf Room"} | %{$_.Name} C#中的以下内容: 最后一个后面是一个: if(Regex.IsMatch(addEntry.Name, "^Conf Room")) 我对两者都有一个问题,那就是它

我在Powershell中有以下内容:

[System.Collections.ArrayList] $ConfRooms = $Outlook.Session.GetGlobalAddressList().AddressEntries | ?{$_.Name -match "^Conf Room"} | %{$_.Name}
C#中的以下内容:

最后一个后面是一个:

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

我对两者都有一个问题,那就是它会遍历整个地址簿来查找房间。有什么办法我可以拿到房间清单吗?直接通过Outlook访问时,我会单击“新建项目”,选择“会议”,选择“日程安排助手”,然后选择“添加会议室”,它只会显示地址列表中的会议室,因此必须在某个位置设置一个标志,将地址条目定义为会议室(因为它还包括容量属性)。这个弹出窗口是即时的,我希望在我正在编写的程序中实现同样的效果。

对于房间,
PR\u DISPLAY\u TYPE\u EX MAPI
属性是
DT\u room
(您可以在中看到属性-单击IAddrBook按钮并向下钻取到任何房间)

还要注意,GAL公开了“所有房间”容器(您应该能够通过
名称空间.addressList
集合访问它)。请注意,如果您有多个Exchange帐户,并且容器名称已本地化,则可以有多个“所有文件室”容器。如果在所有通讯簿列表中循环,则“所有房间”列表的PR_CONTAINER_FLAGS MAPI属性将包含0x00000200位


如果使用是一个选项,则会显示。
AllRooms
和。
AllRooms
属性(返回对象)。

对于一个房间,
PR\u-DISPLAY\u-EX-MAPI
属性是
DT\u-roome
(您可以在中看到属性-单击IAddrBook按钮并向下钻取到任何房间)

还要注意,GAL公开了“所有房间”容器(您应该能够通过
名称空间.addressList
集合访问它)。请注意,如果您有多个Exchange帐户,并且容器名称已本地化,则可以有多个“所有文件室”容器。如果在所有通讯簿列表中循环,则“所有房间”列表的PR_CONTAINER_FLAGS MAPI属性将包含0x00000200位


如果使用是一个选项,它会公开。
AllRooms
和。
AllRooms
属性(返回对象)。

老实说……从未使用过MAPI,所以我完全不懂。如果需要访问MAPI属性,可以使用
AddressList.PropertyAccessor.GetProperty
进行访问<代码>PR\U显示类型\U EXDASL属性名称为
http://schemas.microsoft.com/mapi/proptag/0x39050003
<代码>PR_容器_标志is
http://schemas.microsoft.com/mapi/proptag/0x36000003
。您可以在OutlookSpy(DASL编辑框)中看到DASL属性名称。老实说,我从未使用过MAPI,所以它对我来说完全是希腊语。如果您需要访问MAPI属性,可以使用
AddressList.PropertyAccessor.GetProperty
来访问<代码>PR\U显示类型\U EXDASL属性名称为
http://schemas.microsoft.com/mapi/proptag/0x39050003
<代码>PR_容器_标志is
http://schemas.microsoft.com/mapi/proptag/0x36000003
。您可以在OutlookSpy(DASL编辑框)中看到DASL属性名称。
if(Regex.IsMatch(addEntry.Name, "^Conf Room"))