Udostępnij za pośrednictwem


Jak utworzyć okno konserwacji dla kolekcji

Aplikacja może utworzyć okno obsługi Configuration Manager przy użyciu klas i właściwości klasy WMI serwera SMS_CollectionSettings Server oraz klasy SMS_ServiceWindow Server WMI.

Aby utworzyć okno obsługi

  1. Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.

  2. Pobierz istniejące wystąpienie ustawień kolekcji przy użyciu podaneego identyfikatora kolekcji.

  3. Utwórz i wypełnij właściwości nowego obiektu okna usługi przy użyciu klasy WMI serwera SMS_ServiceWindow .

  4. Dodaj nowy SMS_ServiceWindow obiekt do wystąpienia ustawień kolekcji uzyskanego wcześniej.

  5. Zapisz wystąpienie i właściwości ustawień kolekcji.

Uwaga

Poniższy przykład zawiera dodatkowe kroki, głównie w celu obsługi narzutu związanego z obsługą obiektów okna obsługi, które są przechowywane jako obiekty osadzone w wystąpieniu ustawień kolekcji.

Przykład

Poniższa przykładowa metoda tworzy okno obsługi dla kolekcji przy założeniu, że wystąpienie kolekcji może być zmodyfikowane. Może tak nie być w witrynach podrzędnych, w których kolekcje są własnością lokacji nadrzędnych.

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu 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;  
    }  
}  

Przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
connection

swebemServices
-Zarządzane: WqlConnectionManager
- VBScript: SWbemServices
Prawidłowe połączenie z dostawcą programu SMS.
targetCollectionID -Zarządzane: String
-Vbscript: String
Identyfikator kolekcji.
newMaintenanceWindowName -Zarządzane: String
-Vbscript: String
Nazwa nowego okna obsługi.
newMaintenanceWindowDescription -Zarządzane: String
-Vbscript: String
Opis nowego okna obsługi.
newMaintenanceWindowServiceWindowSchedules -Zarządzane: String
-Vbscript: String
Usługa planuje nowe okno obsługi.
newMaintenanceWindowIsEnabled -Zarządzane: Boolean
-Vbscript: Boolean
true jeśli nowe okno obsługi jest włączone.
newMaintenanceWindowServiceWindowType -Zarządzane: Integer
-Vbscript: Integer
Wpisz dla nowego okna obsługi.

Kompilowanie kodu

Przykład języka C# wymaga:

Obszary nazw

System

System.collections.generic

System.componentmodel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Zestawu

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Niezawodne programowanie

Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.

zabezpieczenia .NET Framework

Aby uzyskać więcej informacji na temat zabezpieczania aplikacji Configuration Manager, zobacz Configuration Manager administracja oparta na rolach.

Zobacz też

Informacje o konserwacji systemu WindowsOmówienie dystrybucji oprogramowaniaOmówienie obiektów wdrożeńJak nawiązać połączenie z dostawcą Configuration Manager przy użyciu kodu zarządzanego
Jak nawiązać połączenie z dostawcą Configuration Manager przy użyciu usługi WMI
SMS_CollectionSettings Server WMI Class
SMS_ServiceWindow Server WMI Class
Informacje o harmonogramachJak utworzyć token harmonogramu