SharePoint 2013 Maintenance Window Notifications
SharePoint 2013 introduced a new class called SPMaintenanceWindow. SPMaintenanceWindow encapsulates a maintenance window message you can post to end users at the content database level. The maintenance window message is somewhat limited by the fact that you can not compose your own custom message on the status bar. The functionality does allow you to do is set the start and end time (NotificationStartDate and NotificationEndDate) the message will be displayed to end users, as well as the start and end time (MaintenanceStartDate and MaintenanceEndDate) of the actual maintenance work, which is used to build the maintenance window text. You can also, optionally, choose to provide a work duration and hyperlink to a location that could provide additional details. To leverage the hyperlink capability, you must specify a duration.
To better understand the types of messages you can craft to users, below are samples of some of the different message options, and the corresponding PowerShell variables used to create the message. The PowerShell code at the end of the page will leverage the sample variables and set the message on every content database in the SharePoint 2013 farm.
Single Day Maintenance Planned
$maintenanceStartDate = "9/28/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/28/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/28/2013 10:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenancePlanned" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = 0 # duration days
$readOnlyHours = 0 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Multi-day Maintenance Planned
$maintenanceStartDate = "9/27/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/28/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/28/2013 02:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenancePlanned" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = 0 # duration days
$readOnlyHours = 0 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Single Day Maintenance Warning
$maintenanceStartDate = "9/27/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/27/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 12:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/27/2013 02:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenanceWarning" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = 0 # duration days
$readOnlyHours = 0 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Multi-day Maintenance Warning
$maintenanceStartDate = "9/27/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/28/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/28/2013 02:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenanceWarning" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = 0 # duration days
$readOnlyHours = 0 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Single Day Maintenance Warning With a Duration Greater Than Zero
$maintenanceStartDate = "9/28/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/28/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/28/2013 02:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenanceWarning" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = 1 # duration days
$readOnlyHours = 6 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Single Day Maintenance Warning With a Duration Less Than Zero and a Hyperlink
$maintenanceStartDate = "9/28/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/28/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/28/2013 02:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "https://www.bing.com" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenanceWarning" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = -1 # duration days
$readOnlyHours = 0 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Single Day Maintenance Warning With a Duration Greater Than Zero and a Hyperlink
$maintenanceStartDate = "9/28/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/28/2013 02:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/28/2013 02:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "https://www.bing.com" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenanceWarning" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = 1 # duration days
$readOnlyHours = 6 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
Multi-day Maintenance Warning with Duration Less Than Zero and a Hyperlink
$maintenanceStartDate = "9/28/2013 08:00:00 AM" # Date when the maintenance will start
$maintenanceEndDate = "9/29/2013 10:00:00 PM" # Date when the maintenance will stop
$notificationStartDate = "9/23/2013 06:00:00 AM" # Date when the message will start being displayed
$notificationEndDate = "9/29/2013 10:00:00 PM" # Date when the message will stop being displayed
$maintenanceLink = "https://www.bing.com" # This link will only appear if the maintenance duration is defined.
$maintenanceType = "MaintenanceWarning" # OPTIONS ARE: MaintenancePlanned | MaintenanceWarning
$readOnlyDays = -1 # duration days
$readOnlyHours = 0 # duration hours.
$readOnlyMinutes = 0 # duration minutes only appears if days and minutes are both zero
This PowerShell code leverages the variables used in the samples above to set the message on every content database in the farm.
$maintenanceWindow = New-Object Microsoft.SharePoint.Administration.SPMaintenanceWindow
$maintenanceWindow.MaintenanceEndDate = $maintenanceEndDate
$maintenanceWindow.MaintenanceStartDate = $maintenanceStartDate
$maintenanceWindow.NotificationEndDate = $notificationEndDate
$maintenanceWindow.NotificationStartDate = $notificationStartDate
$maintenanceWindow.MaintenanceType = $maintenanceType
$maintenanceWindow.Duration = New-Object System.TimeSpan( $readOnlyDays, $readOnlyHours, $readOnlyMinutes, 0)
$maintenanceWindow.MaintenanceLink = $maintenanceLink
Get-SPContentDatabase | % {
$_.MaintenanceWindows.Clear()
$_.MaintenanceWindows.Add($maintenanceWindow)
$_.Update()
}
If you need to clear the maintenance window message queue, perhaps your maintenance window was cancelled, execute this PowerShell code.
Get-SPContentDatabase | % { $_.MaintenanceWindows.Clear(); $_.Update() }
Comments
Anonymous
September 30, 2013
That is awesome, I had no idea. Thanks for sharing.Anonymous
September 30, 2013
http://denledhanoi.com cung cap den led tai Viet NamAnonymous
December 19, 2013
http://www.dailydenled.com mang den cho ban giai phap tiet kiem dienAnonymous
December 19, 2013
tks for help ! i like http://www.dailydenled.comAnonymous
April 15, 2014
Nice! thi is what i'm looking for Thanks for your sharing! ........................................ LED lighting http://elek.vnAnonymous
August 13, 2014
I wrote scripts that are working with this objects. You can select Content DB, Site,Web App or all content DBs on the farm. gallery.technet.microsoft.com/to-Add-Remove-and-Get-d4321b66Anonymous
October 08, 2014
http://www.ledsieusang.com cung cap den led tai HCMAnonymous
November 28, 2014
vào đây mua đèn led giá rẻ http://denled.hanoi.vn/Anonymous
January 02, 2015
http://denledchieusang.com/ Cung cap den LED chieu sang chat luong cao tai Viet NamAnonymous
January 12, 2015
I have tested this and it works great. But I have one issue and that is that the date/time is not adjusting to time zones. The date/time that you set to your SPMaintenanceWindow object is shown to everyone, regardless of which time zone you're in. Is there a solution to this?Anonymous
March 19, 2015
I try to post my comment... Why i alway get a notification: "your comment has been flaged as a spam"????Anonymous
March 19, 2015
Thanks for sharing. I find the quality of your productsAnonymous
May 25, 2015
Thanks For Sharing. I'm Tien. I'm From Viet Nam My Website is http://tongdailapmangfpt.net/ Please commentsAnonymous
May 26, 2015
denchieusang.vn/.../206311.html chuyen cung cap den led am tranAnonymous
May 29, 2015
Đèn led Kingled chuyên cung cấp đèn led chiếu sáng uy tín, chất lượng toàn quốc. Bảo hành 2 năm! http://kingled.vn/Anonymous
October 28, 2015
I liked it. Thanks a lot. I have created a custom page in the Admin Panel which takes the values to be stored in the maintenance window. But I need to know where in the content database the maintenance window notifications are stored so that I can override. Second, requirement is I want only the logged in users should see the notifications.