Nach vieler Recherche und dank this post fand ich eine Antwort # 1 und # 2
1) in Frage zu stellen für die ganzen Konferenzraum in Ihrer Organisation erhalten:
string filter = "(&(objectClass=*)(msExchRecipientDisplayType=7))";
//Assembly System.DirectoryServices.dll
DirectorySearcher search = new DirectorySearcher(filter);
List<AttendeeInfo> rooms = new List<AttendeeInfo>();
foreach (SearchResult result in search.FindAll())
{
ResultPropertyCollection r = result.Properties;
DirectoryEntry entry = result.GetDirectoryEntry();
// entry.Properties["displayName"].Value.ToString() will bring the room name
rooms.Add(new AttendeeInfo(entry.Properties["mail"].Value.ToString().Trim()));
}
2) Holen sie sich den Meeting-Kalender für jedes Zimmer (für 2 Tage):
List<AttendeeInfo> attend = new List<AttendeeInfo>();
foreach (AttendeeInfo inf in rooms)
{
attend.Clear();
attend.Add(inf.SmtpAddress);
AvailabilityOptions options = new AvailabilityOptions();
options.MaximumSuggestionsPerDay = 48;
// service is ExchangeService object contains your authentication with exchange server
GetUserAvailabilityResults results = service.GetUserAvailability(attend, new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)), AvailabilityData.FreeBusyAndSuggestions, options);
foreach (AttendeeAvailability attendeeAvailability in results.AttendeesAvailability)
{
Console.WriteLine();
Console.WriteLine();
if (attendeeAvailability.ErrorCode == ServiceError.NoError)
{
foreach (Microsoft.Exchange.WebServices.Data.CalendarEvent calendarEvent in
attendeeAvailability.CalendarEvents)
{
Console.WriteLine("Calendar event");
Console.WriteLine(" Starttime: " + calendarEvent.StartTime.ToString());
Console.WriteLine(" Endtime: " + calendarEvent.EndTime.ToString());
if (calendarEvent.Details != null)
{
Console.WriteLine(" Subject:" + calendarEvent.Details.Subject);
}
}
}
}
}
über Frage # 3, ist es nicht einfach, diese Informationen zu erhalten, weil es privat ist Die Informationen und als normaler Benutzer haben Sie keine Erlaubnis, es zu sehen.