## SCOM 2016 – Agent Maintenance Mode

I was pleased to present a session about “Why we want you to migrate to SCOM 2016” with Bob Cornelissen at MMSMOA in Minneapolis. During this session I presented about SCOM 2016 Agent maintenance mode.

With System Center Operations Manager 2016 we finally have our scheduled maintenance mode and also the option to directly set the maintenance mode from the agent. We do not need custom management packs/solutions anymore to get this functionality. Everything is build in :-).

When I tried the Agent maintenance mode first, I followed this blog post. I want to share some details here:

• Open PowerShell as Administrator, otherwise the module does not work. I tried to set permissions on the registry key, which is used, but that did not help. The module itself seems to check the permissions.
• You need to load the module with the full path, otherwise it is not working:
import-module “C:\Program Files\Microsoft Monitoring Agent\Agent\MaintenanceMode.dll”
• The Syntax to start maintenance mode is this:
Start-SCOMAgentMaintenanceMode -Duration 10 -Reason ApplicationInstallation -Comment “Test”

I recommend to use the PowerShell ISE as you then also get the entries for the reason.
• The cmdlet writes the information into the registry.
hklm:\Software\Microsoft\Microsoft Operations Manager\3.0\MaintenanceMode\Record
• When you try again to set the maintenance mode and the system is not in maintenance mode yet, then you get this feedback:

Last Maintenance Mode Request pending. Try afterwards.
• There is a rule running on the agent, which checks the registry key every 5 min.

The rule runs a PowerShell script (ReadMaintenanceModeRegEntry,ps1), which writes a OperationsManager Event Log entry with the EventID 2222. After that appears, the maintenance mode should been set successfully.

After the maintenance mode is set, you get this message when you try to set it again during the maintenance mode:
• If you want to unset the maintenance mode and set a new one, then you can delete the registry key, unset the maintenance mode in the console and then set the maintenance mode again.
• You can also easily read the key through PowerShell and give users who normally do not have registry access the possibility to check the current maintenance mode window.
function Get-SCOMAgentMaintenanceMode {
$mm=(Get-ItemProperty “hklm:\software\microsoft\microsoft operations manager\3.0\maintenancemode”).Record$split=$mm.split(“|”) write-host “Duration:”$split[0]”
Reason:”$split[1]” User:”$split[2].split(“:”)[0]”
Comment:”$split[2].split(“:”)[1]” StartTime:”$split[3]
}
Get-SCOMAgentMaintenanceMode

Have fun with it!

## SCOM: Sample Maintenance Mode MP works on SCOM 2016

With all the great changes related to Maintenance Mode in SCOM 2016 you probably only miss the possibility to easily set Maintenance Mode on the agent without the need of knowing the PowerShell script details.

My old Sample Maintenance Mode management pack can help you with this also on SCOM 2016. I have imported it into my SCOM 2016 test environment and set a server into maintenance mode through it without any problem.

It was required in the past, that you deploy the files separately to the agents to have the Splash Screen available. Now I have added the files to the Visual Studio solution and deploy them to c:\it\mom\mm. The solution also adds a shortcut to the default user desktop and to the public startup folder on Windows Server 2012 and above (also applies to the corresponding client versions). I have used the examples from David Allen’s blog post.

I have posted the sample sealed mpb file on github including also the whole solution.

To adjust the solution to your needs I recommend to change the text in the file OpsMgrMM.ps1 which runs the Splash Screen.
Also you can change the target directory in the DeployableFile.ps1:

\$TargetDirectory = “C:\IT\MOM\MM”

You will find both files in the Resources folder.

When you have done your adjustments, then build the solution (seal the mps) and import the mpb file into your SCOM environment. If you had a previous version installed, then you will need to remove that first.

Have fun with it!