Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложение может создать период обслуживания Configuration Manager с помощью классов и свойств класса WMI сервера SMS_CollectionSettings и класса WMI сервера SMS_ServiceWindow.
Создание периода обслуживания
Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.
Получение существующего экземпляра параметров коллекции с помощью предоставленного идентификатора коллекции.
Создайте и заполните свойства нового объекта окна службы с помощью класса WMI сервера SMS_ServiceWindow .
Добавьте новый
SMS_ServiceWindow
объект в экземпляр параметров коллекции, полученный ранее.Сохраните экземпляр и свойства параметров коллекции.
Примечание.
В приведенном ниже примере приведены дополнительные шаги, в основном для обработки затрат на работу с объектами периода обслуживания, которые хранятся в экземпляре параметров коллекции как внедренные объекты.
Пример
В следующем примере метода создается период обслуживания для коллекции, при условии, что экземпляр коллекции может быть изменен. Это может быть не так на дочерних сайтах, где коллекции принадлежат родительским сайтам.
Сведения о вызове примера кода см. в разделе Вызов фрагментов кода Configuration Manager.
Sub CreateMaintenanceWindow(connection, _
targetCollectionID, _
newMaintenanceWindowName, _
newMaintenanceWindowDescription, _
newMaintenanceWindowServiceWindowSchedules, _
newMaintenanceWindowIsEnabled, _
newMaintenanceWindowServiceWindowType)
' Build a query to get the specified collection.
collectionSettingsQuery = "SMS_CollectionSettings.CollectionID='" & targetCollectionID & "'"
' Get the collection settings instance for the targetCollectionID.
Set allCollectionSettings = connection.ExecQuery("Select * From SMS_CollectionSettings Where CollectionID = '" & targetCollectionID & "'")
' If a collection settings instance does not exist for the target collection, create one.
If allCollectionSettings.Count = 0 Then
Wscript.Echo "Creating collection settings instance."
Set collectionSettingsInstance = connection.Get("SMS_CollectionSettings").SpawnInstance_
collectionSettingsInstance.CollectionID = targetCollectionID
collectionSettingsInstance.Put_
End If
' Get the specific collection settings instance.
Set collectionSettingsInstance = connection.Get("SMS_CollectionSettings.CollectionID='" & targetCollectionID &"'" )
' Create and populate a temporary SMS_ServiceWindow object with the new maintenance window values.
Set tempServiceWindowObject = connection.Get("SMS_ServiceWindow").SpawnInstance_
' Populate temporary SMS_ServiceWindow object with the new maintenance window values.
tempServiceWindowObject.Name = newMaintenanceWindowName
tempServiceWindowObject.Description = newMaintenanceWindowDescription
tempServiceWindowObject.ServiceWindowSchedules = newMaintenanceWindowServiceWindowSchedules
tempServiceWindowObject.IsEnabled = newMaintenanceWindowIsEnabled
tempServiceWindowObject.ServiceWindowType = newMaintenanceWindowServiceWindowType
' Populate the local array list with the existing service window objects (from the target collection).
tempServiceWindowArray = collectionSettingsInstance.ServiceWindows
' Add the newly created service window object to the temporary array.
ReDim Preserve tempServiceWindowArray (Ubound(tempServiceWindowArray) + 1)
Set tempServiceWindowArray(Ubound(tempServiceWindowArray)) = tempServiceWindowObject
' Replace the existing service window objects from the target collection with the temporary array that includes the new service window.
collectionSettingsInstance.ServiceWindows = tempServiceWindowArray
' Save the collection settings instance with the new service window object.
collectionSettingsInstance.Put_
' Output success message.
wscript.echo "New Maintenance Window created."
End Sub
public void CreateMaintenanceWindow(WqlConnectionManager connection,
string targetCollectionID,
string newMaintenanceWindowName,
string newMaintenanceWindowDescription,
string newMaintenanceWindowServiceWindowSchedules,
bool newMaintenanceWindowIsEnabled,
int newMaintenanceWindowServiceWindowType)
{
try
{
// Create an object to hold the collection settings instance (used to check whether a collection settings instance exists).
IResultObject collectionSettingsInstance = null;
// Get the collection settings instance for the targetCollectionID.
IResultObject allCollectionSettings = connection.QueryProcessor.ExecuteQuery("Select * from SMS_CollectionSettings where CollectionID='" + targetCollectionID + "'");
// Enumerate the allCollectionSettings collection (there should be just one item) and save the instance.
foreach (IResultObject collectionSetting in allCollectionSettings)
{
collectionSettingsInstance = collectionSetting;
}
// If a collection settings instance does not exist for the target collection, create one.
if (collectionSettingsInstance == null)
{
collectionSettingsInstance = connection.CreateInstance("SMS_CollectionSettings");
collectionSettingsInstance["CollectionID"].StringValue = targetCollectionID;
collectionSettingsInstance.Put();
collectionSettingsInstance.Get();
}
// Create a new array list to hold the service window object.
List<IResultObject> tempServiceWindowArray = new List<IResultObject>();
// Create and populate a temporary SMS_ServiceWindow object with the new maintenance window values.
IResultObject tempServiceWindowObject = connection.CreateEmbeddedObjectInstance("SMS_ServiceWindow");
// Populate temporary SMS_ServiceWindow object with the new maintenance window values.
tempServiceWindowObject["Name"].StringValue = newMaintenanceWindowName;
tempServiceWindowObject["Description"].StringValue = newMaintenanceWindowDescription;
tempServiceWindowObject["ServiceWindowSchedules"].StringValue = newMaintenanceWindowServiceWindowSchedules;
tempServiceWindowObject["IsEnabled"].BooleanValue = newMaintenanceWindowIsEnabled;
tempServiceWindowObject["ServiceWindowType"].IntegerValue = newMaintenanceWindowServiceWindowType;
// Populate the local array list with the existing service window objects (from the target collection).
tempServiceWindowArray = collectionSettingsInstance.GetArrayItems("ServiceWindows");
// Add the newly created service window object to the local array list.
tempServiceWindowArray.Add(tempServiceWindowObject);
// Replace the existing service window objects from the target collection with the temporary array that includes the new service window.
collectionSettingsInstance.SetArrayItems("ServiceWindows", tempServiceWindowArray);
// Save the new values in the collection settings instance associated with the target collection.
collectionSettingsInstance.Put();
}
catch (SmsException ex)
{
Console.WriteLine("Failed. Error: " + ex.InnerException.Message);
throw;
}
}
Метод примера имеет следующие параметры:
Параметр | Тип | Описание |
---|---|---|
connection swebemServices |
-Управляемых: WqlConnectionManager — VBScript: SWbemServices |
Допустимое подключение к поставщику SMS. |
targetCollectionID |
-Управляемых: String -Vbscript: String |
Идентификатор коллекции. |
newMaintenanceWindowName |
-Управляемых: String -Vbscript: String |
Имя нового периода обслуживания. |
newMaintenanceWindowDescription |
-Управляемых: String -Vbscript: String |
Описание нового периода обслуживания. |
newMaintenanceWindowServiceWindowSchedules |
-Управляемых: String -Vbscript: String |
Расписание службы для нового периода обслуживания. |
newMaintenanceWindowIsEnabled |
-Управляемых: Boolean -Vbscript: Boolean |
true Значение , если новый период обслуживания включен. |
newMaintenanceWindowServiceWindowType |
-Управляемых: Integer -Vbscript: Integer |
Введите новый период обслуживания. |
Компиляция программы
Для примера C# требуется следующее:
Пространства имен
System;
System.Collections.Generic;
System.ComponentModel
Майкрософт. ConfigurationManagement.ManagementProvider
Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Надежное программирование
Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.
Безопасность .NET Framework
Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.
См. также
Сведения о периоде обслуживания в windowsОбзор распространения программного обеспеченияОбщие сведения об объектах развертыванияКак подключиться к поставщику Configuration Manager с помощью управляемого кода
Подключение к поставщику Configuration Manager с помощью WMI
Класс WMI сервера SMS_CollectionSettings
Класс WMI сервера SMS_ServiceWindow
Сведения о расписанияхСоздание маркера расписания