SCOM 2016 Schedule Maintenance Script
With Operation Manager 2016 we finally have the ability to Schedule maintenance for Objects.
Doing that in GUI is pretty straitght forward, altough i have seen some blog post on issues With conflicting maintenance schedules. Besides scheduling maintenance mode in the GUI we have gotten some New PS CMDlet’s to manage maintance schedules.
One of them are New-SCOMMaintenanceSchedule.
Based on this i have created the following script wich will take parameters for servername, comments, start and end date before creating a New maintenance Schedule With the supplied server Objects (Linux/Windows)
Feel free to use and please give me feedback on improvements and bugs. Beware that this Version has some limitations and little error handling.
<# .SYNOPSIS System Center Operations Manager 2016 Schedule maintenance mode script. .DESCRIPTION Adding a SCOM 2016 maintencance shedule to specified servers. Works with Linux and Windows servers. .EXAMPLE New-SCOMServerMaintenanceSchedule.ps1 -ServerName SERVER01 -start '01/01/2017 18:30' -end '02/01/2017' -comment "your comment" Adds a new maintenance schedule with server SERVER01 starting Jan. 1. 2017 18:30 and ending Jan 2. 2017 00:00 .EXAMPLE New-SCOMServerMaintenanceSchedule.ps1 -ServerName SERVER01 -start NOW -end 02/01/2017 -comment "your comment" Adds a new maintenance schedule with server SERVER01 starting NOW (adding 30 seconds by default) ending Jan 2. 2017 .EXAMPLE New-SCOMServerMaintenanceSchedule.ps1 -ServerName SERVER01 -start NOW -end 02/01/2017 -comment "your comment" -ManagementServer OPSMGR123.DOMAIN Adds a new maintenance schedule with server SERVER01 starting NOW (adding 30 seconds by default) ending Jan 2. 2017 connecting to specific management server .NOTES Author: Martin Ehrnst /Intility AS Date: November 2016 Version 0.9 Beta This version has a default of non reccuring schedule and has a hard coded reason for maintenance. You can change this by altering the script directly Use at own risk #> param( [Parameter(Mandatory=$True)] [string[]]$ServerName, [Parameter(Mandatory=$True)] [string]$ManagementServer = 'localhost', [Parameter(Mandatory=$True)] [string]$start, [Parameter(Mandatory=$True)] [string]$End, [Parameter(Mandatory=$True)] [string]$Comment) #####FUNCTIONS####### function Input-Date{ param( [string]$dateTime) Do { $Inputdate = $dateTime if ($Inputdate -eq "NOW"){ $Inputdate = (Get-Date).AddSeconds(30)} Else{ $Inputdate = $Inputdate -as [datetime]} if (!$Inputdate) { "Not A valid date and time" break} } while ($Inputdate -isnot [datetime]) $Inputdate } Function Get-SCOMServers{ Param( [STRING[]]$Name ) #Getting servers from Windows and Linux Computer Class foreach ($O in $Name){ $Server = Get-ScomClass -id 'e817d034-02e8-294c-3509-01ca25481689','d3344825-d5d1-2656-852e-1053269703c0' | Get-SCOMClassInstance | where {$_.DisplayName -like "$o.*"} if(!$Server){ Write-Host "Could not find server. Please check input" break} else{ $server} } } ######END FUNCTIONS#### #Maintenance start time $InputStart = Input-Date -dateTime $start -ErrorAction Stop #Maintenance end time $InputEnd = Input-Date -dateTime $End -ErrorAction Stop #Checking if module is loaded. if not load and connect to MS $Module = Get-Module -Name OperationsManager if (!$Module){ Import-Module OperationsManager} New-SCOMManagementGroupConnection -ComputerName $ManagementServer $Object = (Get-SCOMServers -Name $ServerName).ID [STRING]$SheduleName = $ServerName + ":" + "Created with Script" $Duration = (New-TimeSpan -Start $InputStart -End $InputEnd).TotalMinutes $Reason = 'PlannedApplicationMaintenance' $Frequency = '1' #1 Equals no frequency or 'once' try{ New-SCOMMaintenanceSchedule -Name $SheduleName -Enabled $true -MonitoringObjects $Object -ActiveStartTime $InputStart -ActiveEndDate $InputEnd -Duration $Duration -ReasonCode $Reason -FreqType 1 -Comments $Comment -ErrorAction Stop } catch{ write-host "Something went wrong" $_.Exception.Message}
3 COMMENTS
script is running fine but scheduler not creating in SCOM
Hi. It’s been years, but do you get any errors. Event log or script?
script is working fine but no scheduler is creating in SCOM Console