Figures… roughly 15 seconds after posting OpsMgr Maintenance Mode report, I found a better way to get my collection of “inMaintenanceMode” objects. I wouldn’t call this script ‘light’ by any means but at least I query more directly.
param (
$RootMS,
$filename
)
#Initializing the Ops Mgr 2007 Powershell provider
add-pssnapin "Microsoft.EnterpriseManagement.OperationsManager.Client" -ErrorVariable errSnapin;
set-location "OperationsManagerMonitoring::" -ErrorVariable errSnapin;
new-managementGroupConnection -ConnectionString:$rootMS -ErrorVariable errSnapin;
set-location $rootMS -ErrorVariable errSnapin;
#create my array for output
$colOut = New-Object System.Collections.ArrayList
#set query criteria and get collection of objects in Maintenance
$criteria = new-object Microsoft.EnterpriseManagement.Monitoring.MonitoringObjectGenericCriteria("InMaintenanceMode=1")
$objectsInMM = (Get-ManagementGroupConnection).ManagementGroup.GetPartialMonitoringObjects($criteria)
#loop to populate the array
foreach ($mm in $objectsInMM) {
$MWin = $mm.getmaintenancewindow()
#create an object to hold our variables
$out = "" | select Name,Path,DisplayName,FullName,StartTime,ScheduledEndTime, Reason, Comments, User, LastModified
$out.Name = $mm.name
$out.Path = $mm.Path
$out.DisplayName = $mm.Displayname
$out.FullName = $mm.Fullname
$out.Starttime = $Mwin.Starttime
$out.ScheduledEndTime = $MWin.ScheduledEndTime
$out.Reason = $MWin.Reason
$out.Comments = $MWin.Comments
$out.User = $Mwin.User
$out.LastModified = $Mwin.LastModified
#add to our array
$colOut.Add($out)
}
#change providers for file work
C:
#spit to csv
$colOut | Export-Csv $filename
No comments:
Post a Comment