Partilhar via


Exemplo simples de Lista, Criar, Modificar e Eliminar

O exemplo a seguir mostra um conjunto de métodos muito básicos utilizando a SMS_Package classe para demonstrar as operações de List, Create, Modificar e Eliminar utilizando o Fornecedor DE SMS. Este é um olhar para a estrutura de um programa básico de Gestor de Configuração – existem snippets de métodos mais úteis noutras áreas do SDK que realizam tarefas específicas.

Importante

Para simplificar o exemplo de código, alguns métodos são comentados, uma vez que precisam de informações adicionais (um identificador de pacotes existente). Utilize o ListPackages método para obter o identificador de embalagem para utilização com os ModifyPackage métodos e DeletePackage métodos.

Para listar pacotes

  1. Configurar uma ligação com o Fornecedor DE SMS.

  2. Executar uma consulta, que povoa uma variável com uma coleção de instâncias de SMS_Package classe.

  3. Enumerar através da coleção e listar os pacotes devolvidos pela consulta.

Para criar um pacote

  1. Configurar uma ligação com o Fornecedor DE SMS.

  2. Crie o novo objeto de embalagem utilizando a SMS_Package classe.

  3. Povoar as novas propriedades do pacote.

  4. Guarde o pacote.

Para modificar um pacote

  1. Configurar uma ligação com o Fornecedor DE SMS.

  2. Carregue o objeto de embalagem existente utilizando a SMS_Package classe.

  3. Modifique uma propriedade de pacote.

  4. Guarde o pacote.

Para apagar um pacote

  1. Configurar uma ligação com o Fornecedor DE SMS.

  2. Carregue o objeto de embalagem existente utilizando a SMS_Package classe.

  3. Elimine a embalagem utilizando o método de eliminação.

Exemplo

O método de exemplo a seguir mostra um conjunto de métodos muito básicos utilizando SMS_Package a classe para demonstrar as operações de List, Create, Modificar e Eliminar utilizando o Fornecedor de SMS.

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

Nota

O exemplo abaixo incorpora o código de chamada no código. A maioria dos outros exemplos em SDK mostram simplesmente um método com parâmetros.


using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  

// Added the below Configuration Manager DLL references to support basic SMS Provider operations:  
//    C:\Program Files (x86)\Microsoft Endpoint Manager\AdminConsole\bin\Microsoft.ConfigurationManagement.ManagementProvider.dll  
//    C:\Program Files (x86)\Microsoft Endpoint Manager\AdminConsole\bin\AdminUI.WqlQueryEngine.dll  
// Added the below Configuration Manager namespaces to support basic SMS Provider operations:  
      using Microsoft.ConfigurationManagement.ManagementProvider;                    
      using Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine;     

//  
// A set of very basic methods using the SMS_Package class to demonstrate List, Create, Modify and Delete operations using the SMS Provider.  
//   
// Note: To simplify the code example, some methods are commented out, as they need additional information (an existing package identifier).   
// Use the ListPackages method to obtain the package identifier for use with the ModifyPackage and DeletePackage methods.   
//  
namespace BasicApp  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            // Setup Objects  
            SnippetClass BasicCMAppSnippets = new SnippetClass();  

            // Setup a connection to the SMS Provider.  
            // Passing in <server name>, <domain\\account>, <password>.   
            WqlConnectionManager WMIConnection = BasicCMAppSnippets.Connect("CMLABSERVER", "CMLABSERVER\\cmlabuser", "password");  

            // List all packages (instances of SMS_Package).  
            BasicCMAppSnippets.ListPackages(WMIConnection);  

            // Create a new package.  
            // Note: This is not a useful package (too few properties), just a demonstration of creating a Configuration Manager object.  
            BasicCMAppSnippets.CreatePackage(WMIConnection, "New Package", "This is the new package.");  

            // Modifies a specific package (instance of SMS_Package).  
            // A valid PackageID needs to be passed to the ModifyPackage method - replace "ABC00000".  
            //BasicCMAppSnippets.ModifyPackage(WMIConnection, "ABC00000");  

            // Deletes a specific package (instance of SMS_Package).  
            // A valid PackageID needs to be passed to the DeletePackage method - replace "ABC00000".  
            //BasicCMAppSnippets.DeletePackage(WMIConnection, "ABC00000");  

            // Delay to keep the console output visible.  
            Console.ReadLine();  
        }  
    }  

    class SnippetClass  
    {  
        public WqlConnectionManager Connect(string serverName, string userName, string userPassword)  
        {  
            try  
            {  
                SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary();  
                WqlConnectionManager connection = new WqlConnectionManager(namedValues);  
                if (System.Net.Dns.GetHostName().ToUpper() == serverName.ToUpper())  
                {  
                    connection.Connect(serverName);  
                }  
                else  
                {  
                    connection.Connect(serverName, userName, userPassword);  
                }  
                return connection;  
            }  
            catch (SmsException ex)  
            {  
                Console.WriteLine("Failed to connect. Error: " + ex.Message);  
                return null;  

            }  
            catch (UnauthorizedAccessException ex)  
            {  
                Console.WriteLine("Failed to authenticate. Error:" + ex.Message);  
                throw;  
            }  
        }  

        public void ListPackages(WqlConnectionManager connection)  
        {  
            try  
            {  
                // This query selects all packages (instances of SMS_Package).  
                string query = "SELECT * FROM SMS_Package";  

                // Run query, which populates 'listOfPackages' with a collection of package objects.   
                IResultObject listOfPackages = connection.QueryProcessor.ExecuteQuery(query);  

                // Output header for list of distribution points.  
                Console.WriteLine(" ");   
                Console.WriteLine("List of packages:  ");  
                Console.WriteLine("-------------------");  

                // Enumerate through the collection of objects returned by the query.  
                foreach (IResultObject package in listOfPackages)  
                {  
                    // Output the package name for each package object.  
                    Console.WriteLine("Package ID: {0} Package Name: {1}", package["PackageID"].StringValue, package["Name"].StringValue);    
                }  
            }  
            catch (SmsException ex)  
            {  
                Console.WriteLine("Failed to list packages. Error: " + ex.Message);  
                throw;  
            }  
        }  

        public void CreatePackage(WqlConnectionManager connection, string newPackageName, string newPackageDescription)  
        {  
            try  
            {  
                // Create new package object.  
                IResultObject newPackage = connection.CreateInstance("SMS_Package");  

                // Populate new package properties.  
                newPackage["Name"].StringValue = newPackageName;  
                newPackage["Description"].StringValue = newPackageDescription;  

                // Save the new package and the new package properties.  
                newPackage.Put();  
                // The key value 'PackageID' is created on the put, so getting the package object to output the unique 'PackageID' ('Name' is not guaranteed to be unique).   
                newPackage.Get();  

                // Output new package name.  
                Console.WriteLine("Created Package ID: {0} Package Name: {1}", newPackage["PackageID"].StringValue, newPackage["Name"].StringValue);    
            }  
            catch (SmsException ex)  
            {  
                Console.WriteLine("Failed to create package. Error: " + ex.Message);  
                throw;  
            }  
        }  

        public void ModifyPackage(WqlConnectionManager connection, string existingPackageID)  
        {  
            try  
            {  
                // Get the specific package instance to modify (PackageID is a key value).   
                IResultObject packageToModify = connection.GetInstance(@"SMS_Package.PackageID='" + existingPackageID + "'");  

                // Modify a package properties (in this case description).  
                packageToModify["Description"].StringValue = "This package has been modified. " + packageToModify["Description"].StringValue;  

                // Save the new package and the new package properties.  
                packageToModify.Put();  
            }  
            catch (SmsException ex)  
            {  
                Console.WriteLine("Failed to delete package. Error: " + ex.Message);  
                throw;  
            }  
        }  

        public void DeletePackage(WqlConnectionManager connection, string existingPackageID)  
        {  
            try  
            {                  
                // Get the specific package instance to delete (PackageID is a key value).   
                IResultObject packageToDelete = connection.GetInstance(@"SMS_Package.PackageID='" + existingPackageID + "'");  

                // Output package ID and name being deleted.  
                Console.WriteLine("Deleting Package ID: {0} Package Name: {1}", packageToDelete["PackageID"].StringValue, packageToDelete["Name"].StringValue);       

                // Delete the package.  
                packageToDelete.Delete();             
            }  
            catch (SmsException ex)  
            {  
                Console.WriteLine("Failed to delete package. Error: " + ex.Message);  
                throw;  
            }  
        }  

    }  
}  

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

Parâmetro Tipo Description
connection - Gerido: WqlConnectionManager Uma ligação válida ao Fornecedor de SMS.
newPackageName - Gerido: String O nome do novo pacote.
newPackageDescription - Gerido: String A descrição do novo pacote.
existingPackageID - Gerido: String Um identificador de pacote existente. Este é um valor chave para a SMS_Package classe e é usado para devolver uma instância específica da SMS_Package classe. O método ListPackages na amostra acima devolve os nomes e os Pacotes das instâncias de embalagem atuais.

A Compilar o Código

O exemplo C# requer:

Espaços de nomes

Sistema

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assemblagem

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Programação Robusta

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

Consulte também

Visão geral da distribuição de software SMS_Package Classe WMI do servidor