Partilhar via


Como Adicionar uma Categoria a um Controlador do Windows

No Gestor de Configuração, adiciona-se uma categoria a um controlador Windows adicionando o identificador exclusivo para a categoria à propriedade SMS_Driver classe WMI do servidor. CategoryInstance_UniqueIDs A matriz contém um ou mais identificadores de cordas que correspondem ao valor da propriedade classe WMI do SMS_CategoryInstance servidor. CategoryInstance_UniqueID Existe um exemplo de SMS_CategoryInstance objeto classe WMI do servidor para cada categoria do sistema.

Nota

O identificador único para uma categoria de condutor é pré-preparado com o texto "DriverCategories". Outros tipos de categoria têm texto diferente.

Uma categoria tem informações de localização, e é a partir da propriedade classe WMI do SMS_CategoryInstance servidor que o nome de LocalizedCategoryInstanceName exibição da categoria é obtido.

Para adicionar uma categoria a um condutor Windows

  1. Configurar uma ligação com o Fornecedor DE SMS. Para mais informações, consulte os fundamentos do Fornecedor de SMS.

  2. Obtenha o SMS_Driver objeto para o condutor a que pretende adicionar uma categoria.

  3. Obtenha o identificador de nome de categoria do SMS_CategoryInstance objeto da Classe WMI do servidor que corresponda à categoria desejada.

  4. Adicione o identificador de categoria à propriedade de matriz de objetos SMS_Driver Classe WMI do CategoryInstance_UniqueIDs servidor.

  5. Comprometa as alterações da classe WMI do SMS_Driver Servidor.

Exemplo

Os seguintes métodos de exemplo adicionam uma categoria a um condutor Windows. driverIDé um objeto válido SMS_Driver classe WMI do servidor. Para obter mais informações, consulte sobre a gestão do controlador de implementação do sistema operativo.

Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.

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;  
    }  
}  

O método exemplo tem os seguintes parâmetros:

Parâmetro Tipo Description
Connection - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
driver - Gerido: IResultObject
- VBScript: SWbemObject
O motorista Windows. É um exemplo de SMS_Driver Classe WMI do servidor.
categoryName - Gerido: String
- VBScript: String
O nome de uma categoria existente. Isto corresponde à propriedade SMS_CategoryInstance Classe WMI do servidor. LocalizedCategoryInstanceName

A Compilar o Código

Este exemplo C# requer:

Espaços de nomes

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assemblagem

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação Robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.

Segurança do .NET Framework

Para obter mais informações sobre a segurança das aplicações do Gestor de Configuração, consulte a administração baseada em funções do Gestor de Configuração.

Consulte também

Sobre a gestão do condutor de implementação do sistema operativo
Como Remover uma Categoria de um Controlador do Windows