Cedric 0 Geschrieben 27. April 2019 Melden Teilen Geschrieben 27. April 2019 Hallo zusammen, ich habe in Exchange 2016 ein Raumpostfach erstellt. Nun möchte ich auslesen, ob es gebucht ist oder nicht. Leider kenne ich mich mit EWS oder was man dafür braucht, nicht aus und bitte daher um eure Hilfe, wie man das Ganze, z. B. als Powershell-Skript (wird auf dem Server ausgeführt), realisieren kann. Natürlich habe ich schon mal die Google-Suche bemüht und bin dabei u. a. auf ein recht vielversprechend aussehendes Skript gestoßen: https://www.frankysweb.de/exchange-20102013-kalender-eines-raumpostfachs-mit-ews-abfragen/ Beim Versuch, es entsprechend anzupassen und schließlich auszuführen, bin ich aber auf Probleme gestoßen: $MailboxName = "Besprechungsraum-KS@proj-cl.hessenmobil.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]::Exchange2016 $service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService($version) $service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::,$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 = 5; $calendarView.PropertySet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) $results = $calendar.FindAppointments($calendarView) $results | ft subject,start,end In der vierten Zeile habe ich als ExchangeVersion einfach "Exchange2016" angegeben, allerdings ohne zu wissen, ob das so richtig ist (vermutlich nicht ). Jedenfalls erscheinen bei der Ausführung des Skripts in der Exchange-Konsole zwei Fehlermeldungen: Danke schon mal für eure Hilfe. Viele Grüße, Cedric Zitieren Link zu diesem Kommentar
Nobbyaushb 1.471 Geschrieben 27. April 2019 Melden Teilen Geschrieben 27. April 2019 Mir fehlt die Zeile mit der Impersonation Mal abwarten, was Franky dir antwortet. Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 27. April 2019 Melden Teilen Geschrieben 27. April 2019 Objekt sind kein Wunschkonzert. Da muss man im Zweifel schon nachschlagen. Die genannte „Version“ muss nicht zum Exchange passen, laut Microsoft Dokumentation. Heißt für Dich: Einfach stehen lassen was stand https://docs.microsoft.com/de-de/dotnet/api/microsoft.exchange.webservices.data.exchangeversion?view=exchange-ews-api 1 Zitieren Link zu diesem Kommentar
Cedric 0 Geschrieben 27. April 2019 Autor Melden Teilen Geschrieben 27. April 2019 (bearbeitet) Danke für eure schnellen Antworten! vor 3 Stunden schrieb Nobbyaushb: Mir fehlt die Zeile mit der Impersonation Mal abwarten, was Franky dir antwortet. Die Impersonation hatte ich vorher schon ausgeführt:. Bin ich auch mal gespannt, ob bzw. was er antwortet.. vor 2 Stunden schrieb MurdocX: Objekt sind kein Wunschkonzert. Da muss man im Zweifel schon nachschlagen. Die genannte „Version“ muss nicht zum Exchange passen, laut Microsoft Dokumentation. Heißt für Dich: Einfach stehen lassen was stand https://docs.microsoft.com/de-de/dotnet/api/microsoft.exchange.webservices.data.exchangeversion?view=exchange-ews-api Ok, dann will ich das mal probieren (mangels Remote-Zugriff leider erst am Montag ). Ich hatte die verlinkte Seite auch gefunden, konnte mir aber keinen Reim drauf machen und hätte eher vermutet, dass Exchange 2016 oder neuer vielleicht nicht unterstützt wird.. bearbeitet 27. April 2019 von Cedric Ergänzung Zitieren Link zu diesem Kommentar
Cedric 0 Geschrieben 29. April 2019 Autor Melden Teilen Geschrieben 29. April 2019 So, ich konnte es nun ausprobieren und habe entsprechend @MurdocX's Vorschlag aus Exchange2016 wieder Exchange2010_SP2 gemacht: $MailboxName = "besprechungsraum-ks@xxxx" $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]::,$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 = 5; $calendarView.PropertySet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) $results = $calendar.FindAppointments($calendarView) $results | ft subject,start,end Es sieht zwar schon besser aus, aber die Fehlermeldung "Ausnahme beim Aufrufen von "Bind" mit 2 Argumenten: "The Id property must be set."" bleibt leider Bestehen. Darunter habe ich $service mal ausgegeben, kann der ImpersonatedUserId-Eintrag so stimmen? Eigentlich soll ja der User "Administrator" impersonated sein und ein entsprechendes Objekt ist ja auch bereits erstellt (s. o.). Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 Vor der Impersonifizierung hast du ein '#' gesetzt. Zeile 10 von Oben. Das steht für ein Kommentar. Ich kann Dir übrigens die ISE an Herz legen, denn dann musst du nicht über "Copy & Paste" arbeiten. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 Oder gleich VS-Code. Die ISE wird nicht mehr weiter entwickelt. Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 vor 12 Minuten schrieb Dukel: Die ISE wird nicht mehr weiter entwickelt. Plain ISE ist einfach quick & dirty Wobei ich auf ISE-Steroids setze. Zitieren Link zu diesem Kommentar
Cedric 0 Geschrieben 29. April 2019 Autor Melden Teilen Geschrieben 29. April 2019 (bearbeitet) vor 15 Minuten schrieb MurdocX: Vor der Impersonifizierung hast du ein '#' gesetzt. Zeile 10 von Oben. Das steht für ein Kommentar. Ich kann Dir übrigens die ISE an Herz legen, denn dann musst du nicht über "Copy & Paste" arbeiten. Ups, ja das war ein Test, den ich zwischendurch mal im Code drin hatte. Hat aber nicht funktioniert. Ich habe das Ganze ja in der ISE, aber ich muss den Code doch in der Exchange Management Shell ausführen, oder? vor 13 Minuten schrieb Dukel: Oder gleich VS-Code. Die ISE wird nicht mehr weiter entwickelt. Wäre mir an sich auch recht, nur wie muss ich da vorgehen? bearbeitet 29. April 2019 von Cedric Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 (bearbeitet) Du kannst das Exchange Addin in jeder Powershell laden und brauchst somit keine Exchange Shell. EDIT: Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 bearbeitet 29. April 2019 von Dukel 1 Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 Hier hast du etwas entfernt aber nicht wieder hinzugefügt.... ConnectingIdType:: ???? Schau Dir mal das Original an 1 Zitieren Link zu diesem Kommentar
Cedric 0 Geschrieben 29. April 2019 Autor Melden Teilen Geschrieben 29. April 2019 vor 38 Minuten schrieb MurdocX: Hier hast du etwas entfernt aber nicht wieder hinzugefügt.... ConnectingIdType:: ???? Schau Dir mal das Original an Zitat $service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress,$MailboxName); Habe ich gemacht, vielen Dank! Nun funktioniert es auch auf einmal. Zitieren Link zu diesem Kommentar
MurdocX 952 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 Super, das freut mich Zitieren Link zu diesem Kommentar
v-rtc 88 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 vor einer Stunde schrieb Dukel: Oder gleich VS-Code. Die ISE wird nicht mehr weiter entwickelt. Wo steht das eigentlich? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 29. April 2019 Melden Teilen Geschrieben 29. April 2019 https://docs.microsoft.com/en-us/powershell/scripting/components/ise/introducing-the-windows-powershell-ise?view=powershell-6 Quote The ISE was first introduced with Windows PowerShell V2 and was re-designed with PowerShell V3. The ISE is supported in all supported versions of Windows PowerShell up to and including Windows PowerShell V5.1. The ISE, however, is in maintenance mode and no new features are likely to be added. Additionally, there is no support for the ISE with PowerShell v6 and beyond. Users wanting a graphical tool with which to manage PowerShell scripts, etc, should consider Visual Studio Code. 2 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.