Hi Readers,
Recently we have got a requirement to provide one group access to all Resource Calendars so that they can book out of policy requests.
They don’t want any delegate appprovals therefore we came up with this approach, created a group of the users that need this kind of feature,
Created the script that will assign Author access to all Resource Calendars, Created a process document on how to book the room directly in
Resource mailbox calendar.
Download & extract the script from below
https://github.com/VikasSukhija/Downloads
Change the variables accordingly & schedule the batch file..
$access = “Author”
$usrgp = “AllRoomsAuthorAccess” # group Name that you want to use
Replace the ExchangeServer Name…
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeServer/PowerShell/ -Authentication Kerberos
You can use this script to apply any of the below permissions
# None
# Owner
# PublishingEditor
# Editor
# PublishingAuthor
# Author
# NonEditingAuthor
# Reviewer
# Contributor
On first run you should change the condition from $_.WhenMailboxCreated -ge $days to $_.WhenMailboxCreated -le $days so that permissions are applied to mailboxes that are already in the enviornment, after that you can change it back to what it is $_.WhenMailboxCreated -ge $days to apply permissions on newly created mailboxes.
############################################################################# # Author: Vikas Sukhija # Reviewer: # Date: 04/06/2015 # Update: # Description: Add group as Author, reviewer or other access to # ALL Rooms/Equipment resources # None # Owner # PublishingEditor # Editor # PublishingAuthor # Author # NonEditingAuthor # Reviewer # Contributor ############################################################################# #########################Define Variables#################################### $access = "Author" # Vaules can be anything from above $usrgp = "AllRoomsAuthorAccess" $days = (get-date).adddays(-1) $limit = (Get-Date).AddDays(-60) #for log recycling $date = get-date -format d $date = $date.ToString().Replace(“/”, “-”) $time = get-date -format t $time = $time.ToString().Replace(":", "-") $time = $time.ToString().Replace(" ", "") $path = ".\logs\" $output1 = ".\logs\" + "Addaccess_" + $date + "_" + $time + "_.log" $output2 = ".\logs\" + "Powershell_" + $date + "_" + $time + "_.log" ###################### Add Exchange Shell#################################### <#If ((Get-PSSnapin | where {$_.Name -match "Microsoft.Exchange.Management.PowerShell.E2010"}) -eq $null) { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 }#> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeServer/PowerShell/ -Authentication Kerberos import-pssession $session start-transcript -Path $output2 ########################Get all Rooms/Equipment mailboxes#################### $Resources = Get-Mailbox -resultsize unlimited | where{($_.RecipientTypeDetails -like "RoomMailbox") -or ($_.RecipientTypeDetails -like "EquipmentMailbox")} if ($Resources){ $Resources | foreach{ if($_.WhenMailboxCreated -ge $days){ $Name = $_.primarysmtpaddress $now = get-date -Format t Write-host "Processing ...........$Name" -foregroundcolor Green Add-MailboxFolderPermission -identity ([string]$Name + ":\Calendar") -User $usrgp -AccessRights $access ADD-content $output1 "$now ...processed ..$Name" } } } ########################Recycle logs ###################################### Get-ChildItem -Path $path | Where-Object { $_.CreationTime -lt $limit } | Remove-Item -recurse -Force stop-transcript ###########################################################################
Now refer the process document
Book Rooms out of Policy
Below outlines the procedure that needs to be followed if room booking is required beyond 360 days. Members of “AllAuthorAccess” group have Author access to all Rooms to leverage this capability.
- Go to File –> Open –>Other User’s Folder
2. Select Calendar from the drop down list.
3. Select the conference room by clicking Name in the Open Other User’s Folder window. Click on the name of the room shown in the Global Address List window. Click OK.
4. Now you will see the calendar of the conference room
5. Right click the calendar of the conference room and create a New Meeting Request.
6. Select the dates beyond 180 days and after filling out the remaining meeting request details, click Send
7. Meeting will now be booked.
8. You can now remove the calendar if there are no other meetings to book.
Note:- If you want to cancel or reschedule the meeting, you have to submit it by going to the Room Calendar and following the example used above for booking.
Tech Wizard
Hi
We have a single room that we would like a select group of users to be allowed to make an “out of policy” booking that does NOT require delegate approval. I have looked at your script above and concluded that all I would need to do is grant these select users (or AD group) the “Author” permission to the rooms calendar – is this correct? Anyway I tried that but out of policy bookings made by this group of users are still being sent to the delegate for approval. What am I missing here please?
Thanks
User has to use a non default way to book the Calendar, He can just go inside the room calendar & create the Booking entry, instead of sending it…