목록, 만들기, 수정 및 삭제의 간단한 예Simple Example of List, Create, Modify, and Delete

다음 예제에서는 클래스를 사용 하 여 SMS_Package SMS 공급자를 사용 하 여 목록, 만들기, 수정 및 삭제 작업을 보여 주는 매우 기본적인 메서드 집합을 보여 줍니다.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. 이는 기본 Configuration Manager 프로그램의 구조를 살펴보세요. 특정 작업을 수행 하는 SDK의 다른 영역에는 보다 유용한 메서드 조각이 있습니다.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.

중요

코드 예제를 간소화 하기 위해 일부 메서드는 추가 정보 (기존 패키지 식별자)가 필요 하므로 주석 처리 됩니다.To simplify the code example, some methods are commented out, as they need additional information (an existing package identifier). 메서드를 사용 ListPackages 하 여 및 메서드와 함께 사용할 패키지 식별자를 ModifyPackage 가져옵니다 DeletePackage .Use the ListPackages method to obtain the package identifier for use with the ModifyPackage and DeletePackage methods.

패키지를 나열 하려면To list packages

  1. SMS 공급자에 대한 연결을 설정합니다.Set up a connection to the SMS Provider.

  2. 변수를 클래스 인스턴스 컬렉션으로 채우는 쿼리를 실행 SMS_Package 합니다.Run a query, which populates a variable with a collection of SMS_Package class instances.

  3. 컬렉션을 열거 하 고 쿼리에서 반환 된 패키지를 나열 합니다.Enumerate through the collection and list the packages returned by the query.

패키지를 만들려면To create a package

  1. SMS 공급자에 대한 연결을 설정합니다.Set up a connection to the SMS Provider.

  2. 클래스를 사용 하 여 새 패키지 개체를 만듭니다 SMS_Package .Create the new package object by using the SMS_Package class.

  3. 새 패키지 속성을 채웁니다.Populate the new package properties.

  4. 패키지를 저장합니다.Save the package.

패키지를 수정 하려면To modify a package

  1. SMS 공급자에 대한 연결을 설정합니다.Set up a connection to the SMS Provider.

  2. 클래스를 사용 하 여 기존 패키지 개체를 로드 합니다 SMS_Package .Load the existing package object by using the SMS_Package class.

  3. Package 속성을 수정 합니다.Modify a package property.

  4. 패키지를 저장합니다.Save the package.

패키지를 삭제하려면To delete a package

  1. SMS 공급자에 대한 연결을 설정합니다.Set up a connection to the SMS Provider.

  2. 클래스를 사용 하 여 기존 패키지 개체를 로드 합니다 SMS_Package .Load the existing package object by using the SMS_Package class.

  3. Delete 메서드를 사용 하 여 패키지를 삭제 합니다.Delete the package by using the delete method.

예제Example

다음 예제 메서드는 클래스를 사용 하 여 SMS_Package SMS 공급자를 사용 하는 목록, 만들기, 수정 및 삭제 작업을 보여 주는 매우 기본적인 메서드 집합을 보여 줍니다.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.

샘플 코드를 호출하는 방법에 대한 자세한 내용은 Configuration Manager 코드 조각 호출을 참조하세요.For information about calling the sample code, see Calling Configuration Manager Code Snippets.

참고

아래 예제에서는 코드에 호출 코드를 포함 합니다.The below example embeds the calling code in the code. SDK에 포함 된 대부분의 다른 예제에서는 매개 변수가 있는 메서드를 간단히 보여 줍니다.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;  
            }  
        }  

    }  
}  

예제 메서드에는 다음과 같은 매개 변수가 포함되어 있습니다.The example method has the following parameters:

매개 변수Parameter TypeType 설명Description
connection - 관리 코드: WqlConnectionManager- Managed: WqlConnectionManager SMS 공급자에 대한 유효한 연결입니다.A valid connection to the SMS Provider.
newPackageName - 관리 코드: String- Managed: String 새 패키지의 이름입니다.The name of the new package.
newPackageDescription - 관리 코드: String- Managed: String 새 패키지에 대 한 설명입니다.The description for the new package.
existingPackageID - 관리 코드: String- Managed: String 기존 패키지 식별자입니다.An existing Package identifier. 클래스의 키 값 SMS_Package 이며 클래스의 특정 인스턴스를 반환 하는 데 사용 됩니다 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. 위의 샘플에서 ListPackages 메서드는 현재 패키지 인스턴스의 이름 및 PackageIDs를 반환 합니다.The ListPackages method in the sample above returns the names and PackageIDs of the current package instances.

코드 컴파일Compiling the Code

C# 예제에서는 다음 항목이 필요합니다.The C# example requires:

네임스페이스Namespaces

시스템System

Microsoft.ConfigurationManagement.ManagementProviderMicrosoft.ConfigurationManagement.ManagementProvider

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

어셈블리Assembly

adminui.wqlqueryengineadminui.wqlqueryengine

microsoft.configurationmanagement.managementprovidermicrosoft.configurationmanagement.managementprovider

mscorlibmscorlib

강력한 프로그래밍Robust Programming

오류 처리에 대한 자세한 내용은 Configuration Manager 오류 정보를 참조하세요.For more information about error handling, see About Configuration Manager Errors.

참고 항목See Also

소프트웨어 배포 개요 SMS_Package 서버 WMI 클래스Software distribution overview SMS_Package Server WMI Class