Using PowerShell to Remove the "Use a Meeting Workspace" Option from SharePoint Calendars

I’ve just deployed a custom meeting site to a customer to handle multiple meetings within one site. Hence the option to “Use a Meeting Workspace” when creating a new or updating a calendar item is unnecessary, so they asked me to remove it to prevent anyone using it by mistake.

When creating a calendar item (or updating) this is the dialog you get, with the Use a Meeting Workspace highlighted.

meetingWorkspace

From SharePoint Blues I discovered that if you set the calendar list field to hidden then this option would no longer display. Taking this concept, I created a PowerShell script to set this to hidden on a one off basis.

The script is:

# Script to remove Use a Meeting Workspace from a specific calendar

function RemoveWorkspaceLink ([String]$siteUrl, [String]$calendarName)
{
[system.reflection.assembly]::LoadWithPartialName(“Microsoft.Sharepoint”) > $null
$site = New-Object Microsoft.SharePoint.SPSite($siteUrl)
if ($site -eq $null)
{
return
}

$web = $site.OpenWeb()
$list = $web.Lists[$calendarName]
if ($list -eq $null)
{
“Invalid list name ” + $calendarName
}
else
{
$field = $list.Fields[[Microsoft.SharePoint.SPBuiltInFieldId]::WorkspaceLink]
$field.Hidden = $true
$field.Update()
“Updated ” + $calendarName + ” on ” + $siteUrl
}

# Dispose of the SharePoint objects
if ($web) {$web.Dispose()}
if ($site) {$site.Dispose()}
}

RemoveWorkspaceLink “http://myserver/sites/site1″ “Calendar1”
RemoveWorkspaceLink “http://myserver/sites/site2″ “Calendar2”

I’ve written this as a function so that you can update multiple calendars at the time. If you saved this as a .ps1 file and then run it, the 2 calendars referenced at the bottom would be updated. Alternatively you could . source the file and use the function interactively, or just hard code the $siteUrl and $calendarName variables each time you run it.

The option is removed immediately you have run the script with no iisreset or application pool recycle required.

So with the script is run this is what you see with the Meeting Workspace option removed:

meetingWorkspaceAfter

This works well for hiding it on individual calendar lists, but doesn’t affect any other existing calendars or ones created afterwards.

I’ve since found a way to update all calendars in a site collection.

Richard

I am Managing Director of SalamanderSoft Limited a company devoted to improving IT in education. I am also the project co-ordinator for the open source projects SharePoint Learning Kit and Microsoft Learning Gateway.

10 thoughts on “Using PowerShell to Remove the "Use a Meeting Workspace" Option from SharePoint Calendars

  1. Hi Richard,

    I had tried this option, but the WorkSpace option appears even after running the script.

    Note: The option of removing in a site collection which works fine.

    Can you pls. let me know if there are any steps to be done so that this option is removed only in a individual calendar.

  2. Good spot. I was flicking it around while testing and posted the wrong version. Thanks for pointing it out and I’ve updated the post now.

  3. Thank you so much for this!!
    I think it’s weird that even if you make a new content type derived from the Event contenttype, you can hide fiels like “location”, but you can’t hide the “Use a meeting workspace” option.
    This certainly inspires me to dive into PowerShell more.

  4. Sorry,just one quick question – I want to the same as above but for the “Recurrence” and “All Day Event” field for one particular calendar. Are you able to advise of the Link names..?? (ie. Workspace is “WorkspaceLink”).

    Any help would be appreciated.

  5. Where exactly do we run this script? And what fields do we have to change to put our actual information in it. Is Siteurl & Calendar name the only ones?

  6. You need to run it on one of your SharePoint servers. Yes it’s just the url and calendar name you have to change.

Leave a Reply

Your email address will not be published. Required fields are marked *