Site icon Frankys Web

Exchange 2010/2013: Kalender eines Raumpostfachs mit EWS abfragen

Hier mal wieder in kleines Script aus der Quick&Dirty Ecke. Abfragen des Kalenders eines Raumpostfachs per EWS und Powershell. Das Script holt alle Kalendereinträge ab dem aktuellen Zeitpunkt bis 365 Tage in die Zukunft, bzw. maximal 200 Einträge. Die Ergebnisse werden in der Variable $results gespeichert und können dann weiter verarbeitet werden.

$MailboxName = "Besprechungsraum@frankysweb.de"
$EWSPath = "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"

Add-Type -Path $EWSPath
$version = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2 
 
$service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService($version)  
$service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress,$MailboxName);
$service.AutodiscoverUrl($mailboxName)

$calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar)
$calendarView = new-object Microsoft.Exchange.WebServices.Data.CalendarView([System.DateTime]::Now, [System.DateTime]::Now.AddDays(365))
$calendarView.MaxItemsReturned = 200;
$calendarView.PropertySet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)

$results = $calendar.FindAppointments($calendarView)

$results | ft subject,start,end

Damit mittels EWS auf ein Raumpostfach zugegriffen werden kann, muss der Benutzer der das Script ausführt Impersonationsrechte haben. Um einem Benutzer Impersonationsrechte zuzuweisen kann der folgende Befehl verwendet werden:

New-ManagementRoleAssignment -Name impersonationAssignmentName -Role ApplicationImpersonation -User EWSServiceAccount

Damit erhält der Benutzer „EWSServiceAccount“ Impersonationsrechte auf allen Postfächern, dies lässt sich aber auch weiter eingrenzen:

New-ManagementScope -name Besprechungsraum -RecipientRestrictionFilter {Name –eq "Besprechungsraum"}
New-ManagementRoleAssignment –Name impersonationAssignmentName –Role ApplicationImpersonation –User EWSServiceAccount –CustomRecipientWriteScope Besprechungsraum 

Der Befehl oben erzeugt einen neuen Management Bereich der nur den Benutzer „Besprechungsraum“ enthält. Die Impersonationsrechte gelten also nur für den Benutzer EWSServiceAccount für das Postfach „Besprechungsraum“.

Exit mobile version