Compartilhar via


Putting a Group of Computers into Maintenance Mode via Powershell

image Have you ever found yourself in need of putting a group of systems into Maintenance Mode in System Center Operations Manager 2007 R2?  If so you can use the script below.  Note that in SCOM 2007 R2 there is no need to put the health service and health service watcher into Maintenance Mode separately, we just need to put the computer itself into Maintenance Mode and it will take care of other components automatically.

*************Script*********

param($rootMS,$group,$numberOfHoursInMaintenanceMode,$comment)

Add-PSSnapin "Microsoft.EnterpriseManagement.OperationsManager.Client" -ErrorVariable errSnapin;
Set-Location "OperationsManagerMonitoring::" -ErrorVariable errSnapin;
new-managementGroupConnection -ConnectionString:$rootMS -ErrorVariable errSnapin;
set-location $rootMS -ErrorVariable errSnapin;

$groupObject = get-monitoringobject | where {$_.DisplayName -eq $group};
$groupagents = $groupObject.getrelatedmonitoringobjects()

foreach ($agent in $groupAgents)

{

$computerPrincipalName = $agent.displayname
$computerPrincipalName

$computerClass = get-monitoringclass -name:Microsoft.Windows.Computer
$healthServiceClass = get-monitoringclass -name:Microsoft.SystemCenter.HealthService
$healthServiceWatcherClass = get-monitoringclass -name:Microsoft.SystemCenter.HealthServiceWatcher

$computerCriteria = "PrincipalName='" + $computerPrincipalName + "'"
$computer = get-monitoringobject -monitoringclass:$computerClass | Where{$_.Displayname -like $computerPrincipalName}
$startTime = [System.DateTime]::Now
$endTime = $startTime.AddHours($numberOfHoursInMaintenanceMode)

"Putting " + $computerPrincipalName + " into maintenance mode"
New-MaintenanceWindow -startTime:$startTime -endTime:$endTime -monitoringObject:$computer -comment:$comment

}

*************************

Save the above script with a ps1 extension.

Schedule the script using the Task Scheduler and command line below:

Powershell c:\MMode.ps1 -rootMS: <RMS server name> -group: <Group name> - Numberofhoursinmaintenancemode: 1 -Comment: 'This is a test'

Hope this helps,

Ritesh Grover | System Center Technical Lead

Comments

  • Anonymous
    January 01, 2003
    Has anyone tried this on OM 2012? I need a PS script to put servers into Maintenance mode on 2012. Thanks!

  • Anonymous
    January 01, 2003
    I would really like to do something similar, where the script would point to a text file with a list of servers.  It would place all servers in that file, into Maintenance Mode. Is this possible?  We are currently doing this with MOM2005.

  • Anonymous
    February 20, 2011
    The comment has been removed

  • Anonymous
    May 10, 2012
    Your thought processing is wonderful. The way you tell the thing is awesome. You are really a master. Great Blog!! That was amazing <a href="www.pickmeindia.com/" title= “Mobile Repair” ><b>Mobile Repair

  • Anonymous
    June 04, 2014
    The comment has been removed

  • Anonymous
    June 04, 2014
    The comment has been removed

  • Anonymous
    December 03, 2015
    The comment has been removed