Exchange Meeting Room Statistics

This script uses Exchange Web Services to connect to one or more meeting rooms and gather statistics regarding their usage between to specific dates.

 
 
 
 
 
5 Star
(1)
2,358 times
Add to favorites
Exchange
12/15/2017
E-mail Twitter del.icio.us Digg Facebook
Sign in to ask a question


  • Capacity
    1 Posts | Last post September 14, 2018
    • Hi Nuno, How can I get the capacity of the rooms
  • While i am running the script i am getting the Csv file created as blank.
    3 Posts | Last post September 10, 2018
    • I am trying to run this in exchange 2010 environment
    • Is it not working? What error do you get?
    • I am getting the blank .csv file after executing scripts.
  • How to report against O365
    4 Posts | Last post August 23, 2018
    • We are in a Hybrid environment.  When I ran this script I got errors because AutoDiscovery blocked a redirection attempt.  It seems AutoDiscovery is trying to direct from the local installation to the cloud.  Any ideas on how I can modify this to bypass this error?
    • Hi Mark,
      
      Instead of using:
      $service.AutodiscoverUrl($Mailbox)
      
      Try manually specifying the URL, such as:
      $service.Url = [System.URI] "https://mail.domain.com/ews/exchange.asmx"  
      
      Regards,
      Nuno
    • Hi Nuno, 
      I tried this as we have a hybrid server with O365. I'm getting stuck at binding with a permission error. I have full access to the 2 resource mailboxes and get this back: 
      please check permissions: Exception calling "Bind" with "2" argument(s): "The response rec
      eived from the service didn't contain valid XML.". Skipping emailaddress@domain.gov.
      
      Any ideas? 
    • I am also having this issue, Tmlittle2, were you able to resolve?
  • date range
    1 Posts | Last post August 21, 2018
    • Great script. I really like it.  I am looking to see if there is a way to run the script on a schedule like monthly basis and produce a monthly and YTD report for a set of resources or is it restricted to a from and to timeframe.
  • Error
    1 Posts | Last post August 14, 2018
    • Hi Nuno,
      
      I'm getting this error: 
      Exception calling "AutodiscoverUrl" with "1" argument(s): "Autodiscover blocked a potentially insecure redirection to https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml. To 
      allow Autodiscover to follow the redirection, use the AutodiscoverUrl(string, AutodiscoverRedirectionUrlValidationCallback) overload."
      At C:\Users\ayauger\Desktop\Get-MeetingRoomStats.ps1:105 char:3
      +         $service.AutodiscoverUrl($Mailbox)
      +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
          + FullyQualifiedErrorId : AutodiscoverLocalException
      
      I think it might have to do with it being for office 365, I'm still trying some other things in your Q and A section, but I haven't seen anyone else with this error.
  • getting error
    1 Posts | Last post July 25, 2018
    • RBOSE: Unable to retrieve data from test@domain.com calendar. Please check
      permissions: Exception calling "FindAppointments" with "2" argument(s): "The SMTP address has no mailbox associated
      with it.". Skipping test@domain.com.
      
      account is on prem. my account that has full access is in the cloud. 
  • Exchange 2010 SP3 Error
    2 Posts | Last post June 27, 2018
    • Hello Nuno,
      
      I've tried to run your script on my work space but it gives me an error:
      
      "Unable to connect ***@***.com. Please check permissions: Exception calling
      "Bind" with "2" argument(s): "Exchange Server doesn't support the requested version.". Skipping ***@***.com."
      
      
      We use Exchange 2010 SP3, so I've already changed your code for it. We also don't use Exchange Online. 
      What do you think could be the source of this error? 
      Thanks!
    • Hello Nuno,
      
      I'm getting the following error while working on the above script.
      
      ====================================================
      PS C:\Users\hvanka\Desktop\ActiveDirectoryFiles\Scripts> .\MeetingRoomStats.ps1 -RoomListSMTP "Huddle7-F@csbs.org, Huddle7-H@csbs.org" -From "01/01/2018" -To "05/01/2018" -Verbose
      VERBOSE: Loading EWS Managed API
      VERBOSE: EWS Managed API not installed. Please download and install the current version of the EWS Managed API from http://go.microsoft.com/fwlink/?LinkId=255472.
       Exiting Script.
      ============================================================================================
      
      Though I downloaded and installed the current version of EWS Managed API, it couldn't help me. Can you please help me to resolve this issue.
      
  • Error in Office 365.
    1 Posts | Last post May 04, 2018
    • Hello I am trying to run this script for all the rooms we have in office 365 and am getting the following error.  
      
      VERBOSE: Binding to the  xyz_room@abc.com. Calendar folder.
      VERBOSE: Unable to connect to  xyz_room@abc.com. Please check permissions: Exception calling "Bind" with "2" argument(s): "The Id property must be set.". Skipping 
       xyz_room@abc.com.
  • Exchange 2016 CU8
    2 Posts | Last post April 19, 2018
    • Hi,
      Is the script working on Windows Server 2016 (Version 1607) and Exchange 2016 CU 8?
      The script worked on earlier Exchange 2016 versions but now I get the following message on CU 8:
      
      VERBOSE: Loading EWS Managed API
      VERBOSE: Creating Exchange Service Object using AutoDiscover
      VERBOSE: Binding to the xyz_room@abc.com Calendar folder.
      VERBOSE: Unable to connect to xyz_room@abc.com. Please check permissions: Exception calling "Bind" with "2" argument(s): "Exchange Server doesn't support t
      he requested version.". Skipping xyz_room@abc.com.
      
      
    • Hi,
      
      I haven't tested it on that particular CU. I will update my lab and test soon.
      
      Regards,
      Nuno
  • Unable to Run against Office365
    4 Posts | Last post March 18, 2018
    • I'm unable to run this against Office365. Can you please help?
      
      PS C:\Scripts> .\Get-MeetingRoomStats_EWS.ps1 -RoomListSMTP "US.CA.Plstn.RM.B1.141.Cap.14.Video@clorox.com" -From "10/01/2017" -To "11/01/2017" -Verbose
      VERBOSE: Loading EWS Managed API
      VERBOSE: Creating Exchange Service Object using AutoDiscover
      VERBOSE: Binding to the US.CA.Plstn.RM.B1.141.Cap.14.Video@clorox.com Calendar folder.
      VERBOSE: Unable to retrieve data from US.CA.Plstn.RM.B1.141.Cap.14.Video@clorox.com calendar. Please check permissions:
       Cannot convert argument "0", with value: "Microsoft.Exchange.WebServices.Data.Appointment 
      Microsoft.Exchange.WebServices.Data.Appointment Microsoft.Exchange.WebServices.Data.Appointment 
      Microsoft.Exchange.WebServices.Data.Appointment Microsoft.Exchange.WebServices.Data.Appointment 
      
      Microsoft.Exchange.WebServices.Data.Appointment Microsoft.Exchange.WebServices.Data.Appointment 
      Microsoft.Exchange.WebServices.Data.Appointment", for "LoadPropertiesForItems" to type 
      "System.Collections.Generic.IEnumerable`1[Microsoft.Exchange.WebServices.Data.Item]": "Cannot convert the 
      "Microsoft.Exchange.WebServices.Data.FindItemsResults`1[Microsoft.Exchange.WebServices.Data.Appointment]" value of type
       "Microsoft.Exchange.WebServices.Data.FindItemsResults`1[[Microsoft.Exchange.WebServices.Data.Appointment, 
      Microsoft.Exchange.WebServices, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]" to type 
      "System.Collections.Generic.IEnumerable`1[Microsoft.Exchange.WebServices.Data.Item]".". Skipping 
    • I fought with this for half a day and had to do the following to get this to work for me in an O365 environment:
      
      1. Modified the Connect-Exchange function for 0365 (see many examples here in this thread)
      
          $service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials('email@dot.com', 'the_password')
      	$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
          #$service.AutodiscoverUrl($Mailbox, {$true});
      
      2.  On or about line 128-130 ===  This is the line choking and bitching about unable to convert type from x to z -- I simply rem'd it out and the code still mostly worked (I do not get attendee data back, no big deal)
      
      #If ($fiItems.Items.Count -gt 0) {[Void] $service.LoadPropertiesForItems($fiItems, $psPropset)}
      
      3. On or about line 180, look for RoomName being assigned -- rem it out and replace it with this:
      RoomName		= $room.DisplayName
      
      		
      
      
    • @DukePresser or @Hariharan GB or @Nuno Mota, have any of you figured out how to fix this issue?  I have the same issue.  Remming out one line like Duke suggested does allow the script to run successfully, but I really do need the attendee data.
    • Hi guys,
      
      Are you using the latest version of the script that supports Exchange Online? Do you still get the same error with this verison?
      
      Regards,
      Nuno
1 - 10 of 19 Items