Share via


Basit Liste, Oluşturma, Değiştirme ve Silme Örneği

Aşağıdaki örnekte, SMS Sağlayıcısını kullanarak List, Create, Modify ve Delete işlemlerini göstermek için sınıfını SMS_Package kullanan çok temel yöntemler gösterilmektedir. Bu, temel bir Configuration Manager programının yapısına bir bakıştır; SDK'nın belirli görevleri yerine getiren diğer alanlarında daha kullanışlı yöntem parçacıkları vardır.

Önemli

Kod örneğini basitleştirmek için ek bilgilere (mevcut bir paket tanımlayıcısı) ihtiyaç duyduklarından bazı yöntemler açıklama satırı yapılır. ListPackages ve DeletePackage yöntemleriyle ModifyPackage kullanılmak üzere paket tanımlayıcısını almak için yöntemini kullanın.

Paketleri listelemek için

  1. SMS Sağlayıcısı ile bağlantı kurun.

  2. Bir değişkeni sınıf örnekleri koleksiyonuyla SMS_Package dolduran bir sorgu çalıştırın.

  3. Koleksiyonda numaralandırın ve sorgu tarafından döndürülen paketleri listeleyin.

Paket oluşturmak için

  1. SMS Sağlayıcısı ile bağlantı kurun.

  2. sınıfını kullanarak SMS_Package yeni paket nesnesini oluşturun.

  3. Yeni paket özelliklerini doldurun.

  4. Paketi kaydedin.

Paketi değiştirmek için

  1. SMS Sağlayıcısı ile bağlantı kurun.

  2. sınıfını kullanarak SMS_Package mevcut paket nesnesini yükleyin.

  3. Paket özelliğini değiştirme.

  4. Paketi kaydedin.

Bir paketi silmek için

  1. SMS Sağlayıcısı ile bağlantı kurun.

  2. sınıfını kullanarak SMS_Package mevcut paket nesnesini yükleyin.

  3. delete yöntemini kullanarak paketi silin.

Örnek

Aşağıdaki örnek yöntem, SMS Sağlayıcısını kullanarak List, Create, Modify ve Delete işlemlerini göstermek için sınıfını kullanan SMS_Package çok temel yöntemler kümesini gösterir.

Örnek kodu çağırma hakkında bilgi için bkz. Configuration Manager Kod Parçacıklarını Çağırma.

Not

Aşağıdaki örnek, çağıran kodu koda ekler. SDK'daki diğer örneklerin çoğu, parametreleri olan bir yöntemi gösterir.


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

    }  
}  

Örnek yöntem aşağıdaki parametrelere sahiptir:

Parametre Tür Açıklama
connection -Yönetilen: WqlConnectionManager SMS Sağlayıcısına geçerli bir bağlantı.
newPackageName -Yönetilen: String Yeni paketin adı.
newPackageDescription -Yönetilen: String Yeni paketin açıklaması.
existingPackageID -Yönetilen: String Var olan bir Paket tanımlayıcısı. Bu sınıf için SMS_Package bir anahtar değeridir ve sınıfın belirli bir örneğini döndürmek SMS_Package için kullanılır. Yukarıdaki örnekteki ListPackages yöntemi, geçerli paket örneklerinin adlarını ve PackageID'lerini döndürür.

Kodu Derleme

C# örneği şunları gerektirir:

Ad alanları

Sistem

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Derleme

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

Sağlam Programlama

Hata işleme hakkında daha fazla bilgi için bkz. Configuration Manager Hataları Hakkında.

Ayrıca Bkz

Sunucu WMI Sınıfı SMS_Packageyazılım dağıtımına genel bakış