Jak dodać kategorię do sterownika systemu Windows

W Configuration Manager należy dodać kategorię do sterownika systemu Windows, dodając unikatowy identyfikator kategorii do właściwości tablicy klasy CategoryInstance_UniqueIDsSMS_Driver Server WMI. Tablica zawiera co najmniej jeden identyfikator ciągu zgodny z wartością właściwości klasy WMICategoryInstance_UniqueID serwera SMS_CategoryInstance. Istnieje wystąpienie obiektu klasy WMI serwera SMS_CategoryInstance dla każdej kategorii w systemie.

Uwaga

Unikatowy identyfikator kategorii sterownika jest uzupełniony tekstem "DriverCategories". Inne typy kategorii mają inny tekst.

Kategoria zawiera informacje o lokalizacji i to z właściwości SMS_CategoryInstance Server WMI ClassLocalizedCategoryInstanceName jest uzyskiwana nazwa wyświetlana kategorii.

Aby dodać kategorię do sterownika systemu Windows

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

  2. Pobierz obiekt SMS_Driver dla sterownika, do który chcesz dodać kategorię.

  3. Pobierz identyfikator nazwy kategorii z obiektu klasy WMI serwera SMS_CategoryInstance, który odpowiada żądanej kategorii.

  4. Dodaj identyfikator kategorii do właściwości tablicy obiektów CategoryInstance_UniqueIDsklasy WMI serwera SMS_Driver.

  5. Zatwierdź zmiany klasy WMI serwera SMS_Driver .

Przykład

Poniższa przykładowa metoda dodaje kategorię do sterownika systemu Windows. driverID jest prawidłowym obiektem klasy WMI serwera SMS_Driver . Aby uzyskać więcej informacji, zobacz About Operating System Deployment Driver Management (Informacje o zarządzaniu sterownikami wdrażania systemu operacyjnego).

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.

Sub AddDriverCategory(connection,driver,categoryName)  

    Dim categories  
    Dim category  
    Dim driverCategoryID  
    Dim categoryID  
    Dim results  
    Dim existingCategory  

    ' Find the category that matches the supplied category name.  
    Set results = _  
      connection.ExecQuery("SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" _  
      + categoryName+ "'")  

    ' If the category was found, add it to the driver.  
    For Each category in results  

        If IsNull(driver.CategoryInstance_UniqueIDs) or UBound (driver.CategoryInstance_UniqueIDs) = -1 Then  
            ' It is empty. Add the category.  
            driver.CategoryInstance_UniqueIDs =  Array(category.CategoryInstance_UniqueID)  
         Else  

            ' Determine if the category is already applied to the driver.  
            For each existingCategory in driver.CategoryInstance_UniqueIDs   
                if existingCategory = category.CategoryInstance_UniqueID Then  
                    WScript.Echo "Already added"  
                    Exit Sub  
                End If  
            Next      

            ' Add the category.  
            categories = driver.CategoryInstance_UniqueIDs  
            Redim Preserve categories (UBound (driver.CategoryInstance_UniqueIDs)+1)  
            categories (Ubound (categories)) =  category.CategoryInstance_UniqueID   
            driver.CategoryInstance_UniqueIDs = categories  
        End If  

        driver.Put_         
    Next      
End Sub  
public void AddDriverCategory(  
    WqlConnectionManager connection,  
    IResultObject driver,  
    string categoryName)  
{  
    try  
    {  
        // Get the category.  
        IResultObject results = connection.QueryProcessor.ExecuteQuery(  
        "SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" + categoryName + "'");  

       ArrayList driverCategories = new ArrayList(driver["CategoryInstance_UniqueIDs"].StringArrayValue);//;driverCategories);  

        foreach (IResultObject category in results)  
        {  
            foreach (string driverCategory in driverCategories)  
            {  
                // Do nothing if the driver already has the category.  
                if (driverCategory == category["CategoryInstance_UniqueID"].StringValue)  
                {  
                    Console.WriteLine("Already exists");  
                    return;  
                }  
           }  

            // Add the category to the action.  
           driverCategories.Add(category["CategoryInstance_UniqueID"].StringValue);  
        }  

        // Update the driver.  
        driver["CategoryInstance_UniqueIDs"].StringArrayValue = (string[])driverCategories.ToArray(typeof(string));  
        driver.Put();  

    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed to add the category" + e.Message);  
        throw;  
    }  
}  

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

Parametr Wpisać Opis
Connection -Zarządzane: WqlConnectionManager
- VBScript: SWbemServices
Prawidłowe połączenie z dostawcą programu SMS.
driver -Zarządzane: IResultObject
-Vbscript: SWbemObject
Sterownik systemu Windows. Jest to wystąpienie klasy WMI serwera SMS_Driver.
categoryName -Zarządzane: String
-Vbscript: String
Nazwa istniejącej kategorii. Jest to zgodne z właściwością klasy LocalizedCategoryInstanceNameWMI serwera SMS_CategoryInstance.

Kompilowanie kodu

Ten przykład języka C# wymaga:

Obszary nazw

System

System.collections.generic

System.text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Zestawu

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

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 zarządzaniu sterownikami wdrażania systemu operacyjnego
Jak usunąć kategorię ze sterownika systemu Windows