Einfaches Beispiel für auflisten, erstellen, ändern und löschenSimple Example of List, Create, Modify, and Delete

Das folgende Beispiel zeigt eine Reihe von sehr grundlegenden Methoden mithilfe der- SMS_Package Klasse, um Vorgänge mit dem SMS-Anbieter zu veranschaulichen.The following example shows set of very basic methods using the SMS_Package class to demonstrate List, Create, Modify and Delete operations using the SMS Provider. Dies ist ein Blick auf die Struktur eines grundlegenden Configuration Manager Programms – es gibt weitere nützliche Methoden Ausschnitte in anderen Bereichen des SDK, die bestimmte Aufgaben ausführen.This is a look at the structure of a basic Configuration Manager program – there are more useful method snippets in other areas of the SDK that accomplish specific tasks.

Wichtig

Um das Codebeispiel zu vereinfachen, werden einige Methoden auskommentiert, da Sie zusätzliche Informationen benötigen (ein vorhandener Paket Bezeichner).To simplify the code example, some methods are commented out, as they need additional information (an existing package identifier). Verwenden ListPackages Sie die-Methode, um den Paket Bezeichner für die Verwendung mit den ModifyPackage -und- DeletePackage Methoden abzurufen.Use the ListPackages method to obtain the package identifier for use with the ModifyPackage and DeletePackage methods.

So Listen Sie Pakete aufTo list packages

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein.Set up a connection to the SMS Provider.

  2. Führen Sie eine Abfrage aus, die eine Variable mit einer Auflistung von SMS_Package Klassen Instanzen auffüllt.Run a query, which populates a variable with a collection of SMS_Package class instances.

  3. Listet die Auflistung auf und listet die von der Abfrage zurückgegebenen Pakete auf.Enumerate through the collection and list the packages returned by the query.

So erstellen Sie ein PaketTo create a package

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein.Set up a connection to the SMS Provider.

  2. Erstellen Sie das neue Paket Objekt mithilfe der- SMS_Package Klasse.Create the new package object by using the SMS_Package class.

  3. Füllen Sie die neuen Paket Eigenschaften auf.Populate the new package properties.

  4. Speichern Sie das Paket.Save the package.

So ändern Sie ein PaketTo modify a package

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein.Set up a connection to the SMS Provider.

  2. Laden Sie das vorhandene Paket Objekt mithilfe der- SMS_Package Klasse.Load the existing package object by using the SMS_Package class.

  3. Ändern Sie eine Paket Eigenschaft.Modify a package property.

  4. Speichern Sie das Paket.Save the package.

So löschen Sie ein PaketTo delete a package

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein.Set up a connection to the SMS Provider.

  2. Laden Sie das vorhandene Paket Objekt mithilfe der- SMS_Package Klasse.Load the existing package object by using the SMS_Package class.

  3. Löschen Sie das Paket mit der Delete-Methode.Delete the package by using the delete method.

BeispielExample

Die folgende Beispiel Methode zeigt eine Reihe von sehr grundlegenden Methoden mithilfe SMS_Package der-Klasse, um Vorgänge mit dem SMS-Anbieter zu veranschaulichen.The following example method shows set of very basic methods using SMS_Package class to demonstrate List, Create, Modify and Delete operations using the SMS Provider.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager-Codeausschnitten.For information about calling the sample code, see Calling Configuration Manager Code Snippets.

Hinweis

Das folgende Beispiel bettet den aufrufenden Code in den Code ein.The below example embeds the calling code in the code. In den meisten anderen Beispielen im SDK wird einfach eine Methode mit Parametern angezeigt.Most other examples in SDK the simply show a method with parameters.


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

    }  
}  

Die Beispielmethode verfügt über die folgenden Parameter:The example method has the following parameters:

ParameterParameter typeType BESCHREIBUNGDescription
connection - Verwaltet: WqlConnectionManager- Managed: WqlConnectionManager Eine gültige Verbindung mit dem SMS-Anbieter.A valid connection to the SMS Provider.
newPackageName - Verwaltet: String- Managed: String Der Name des neuen Pakets.The name of the new package.
newPackageDescription - Verwaltet: String- Managed: String Die Beschreibung für das neue Paket.The description for the new package.
existingPackageID - Verwaltet: String- Managed: String Ein vorhandener Paket Bezeichner.An existing Package identifier. Dabei handelt es sich um einen Schlüsselwert für die SMS_Package -Klasse, der verwendet wird, um eine bestimmte Instanz der-Klasse zurückzugeben SMS_Package .This is a key value for the SMS_Package class and is used to return a specific instance of the SMS_Package class. Die listpackages-Methode im obigen Beispiel gibt die Namen und packageids der aktuellen Paket Instanzen zurück.The ListPackages method in the sample above returns the names and PackageIDs of the current package instances.

Kompilieren des CodesCompiling the Code

Für das C#-Beispiel ist Folgendes erforderlich:The C# example requires:

NamespacesNamespaces

SystemSystem

Microsoft.ConfigurationManagement.ManagementProviderMicrosoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngineMicrosoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

AssemblyAssembly

adminui.wqlqueryengineadminui.wqlqueryengine

microsoft.configurationmanagement.managementprovidermicrosoft.configurationmanagement.managementprovider

mscorlibmscorlib

Stabile ProgrammierungRobust Programming

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager-Fehlern.For more information about error handling, see About Configuration Manager Errors.

Weitere InformationenSee Also

Übersicht über die Software Verteilung SMS_Package Server-WMI-KlasseSoftware distribution overview SMS_Package Server WMI Class