Используя пространства имен Microsoft.EnterpriseManagement, почему функция PartialManagementObject.StopMaintenanceMode игнорирует параметр endTime - PullRequest
1 голос
/ 16 ноября 2011

Я использую PartialMonitoringObject.StopMaintenanceMode для установки режимов обслуживания в Microsoft System Center Operations Manager 2007 R2, отметьте здесь . Независимо от того, что я делаю, кажется, что игнорируется время окончания и немедленно заканчивается окно обслуживания, независимо от того, что я указываю. Код выглядит так:

foreach (string SCOMServer in SCOMServers)
{
    ReadOnlyCollection<PartialMonitoringObject> windowsComputerObjects;          
    ManagementGroup managementGroup;
    MonitoringClass windowsComputerClass;               
    managementGroup = new ManagementGroup(SCOMServer);           
    windowsComputerClass = managementGroup.GetMonitoringClass(SystemMonitoringClass.WindowsComputer);
    windowsComputerObjects = managementGroup.GetPartialMonitoringObjects(new MonitoringObjectGenericCriteria("Name='" + ServerFQDN + "'"), windowsComputerClass);


    foreach (PartialMonitoringObject windowsComputerObject in windowsComputerObjects)
    {
        if (windowsComputerObject.InMaintenanceMode)
        {
            windowsComputerObject.StopMaintenanceMode(DateTime.UtcNow.AddMinutes(DelayInMinutes),Microsoft.EnterpriseManagement.Common.TraversalDepth.Recursive);
            //  windowsComputerObject.ScheduleMaintenanceMode(DateTime.UtcNow,DateTime.UtcNow.AddMinutes(DelayInMinutes)
            RetVal = true;
        }
    }

    `

1 Ответ

0 голосов
/ 17 ноября 2011

Не уверен, почему команда StopMaintenanceMode не работает, как описано в документации, но изменил код на использование UpdateMaintenanceMode, и теперь он делает то, что мне нужно.

foreach (PartialMonitoringObject windowsComputerObject in windowsComputerObjects)
                {
                    if (windowsComputerObject.InMaintenanceMode)
                    {
                        if (DelayInMinutes == 0)
                        {
                            windowsComputerObject.StopMaintenanceMode(DateTime.UtcNow, Microsoft.EnterpriseManagement.Common.TraversalDepth.Recursive);
                        }
                        else
                        {
                            windowsComputerObject.UpdateMaintenanceMode(DateTime.UtcNow.AddMinutes(DelayInMinutes), MaintenanceModeReason.PlannedOther, null, Microsoft.EnterpriseManagement.Common.TraversalDepth.Recursive);
                        }

                        RetVal = true;
                    }
                }

`

...