목록, 만들기, 수정 및 삭제의 간단한 예
다음 예제에서는 클래스를 사용하여 SMS 공급자를 SMS_Package
사용하여 목록, 만들기, 수정 및 삭제 작업을 보여 주는 매우 기본적인 메서드 집합을 보여 줍니다. 이는 기본 Configuration Manager 프로그램의 구조를 살펴보는 것입니다. 특정 작업을 수행하는 SDK의 다른 영역에는 더 유용한 메서드 조각이 있습니다.
중요
코드 예제를 간소화하기 위해 일부 메서드는 추가 정보(기존 패키지 식별자)가 필요하기 때문에 주석 처리됩니다. 메서드를 ListPackages
사용하여 및 DeletePackage
메서드와 함께 ModifyPackage
사용할 패키지 식별자를 가져옵니다.
패키지를 나열하려면
SMS 공급자에 대한 연결을 설정합니다.
클래스 인스턴스 컬렉션
SMS_Package
으로 변수를 채우는 쿼리를 실행합니다.컬렉션을 열거하고 쿼리에서 반환된 패키지를 나열합니다.
패키지를 만들려면
SMS 공급자에 대한 연결을 설정합니다.
클래스를 사용하여 새 패키지 개체를 만듭니다
SMS_Package
.새 패키지 속성을 채웁 수 있습니다.
패키지를 저장합니다.
패키지를 수정하려면
SMS 공급자에 대한 연결을 설정합니다.
클래스를 사용하여 기존 패키지 개체를 로드합니다
SMS_Package
.패키지 속성을 수정합니다.
패키지를 저장합니다.
패키지를 삭제하려면
SMS 공급자에 대한 연결을 설정합니다.
클래스를 사용하여 기존 패키지 개체를 로드합니다
SMS_Package
.delete 메서드를 사용하여 패키지를 삭제합니다.
예시
다음 예제 메서드는 클래스를 사용하여 SMS 공급자를 사용하여 SMS_Package
목록, 만들기, 수정 및 삭제 작업을 보여 주는 매우 기본적인 메서드 집합을 보여 줍니다.
샘플 코드 호출에 대한 자세한 내용은 코드 조각 Configuration Manager 호출을 참조하세요.
참고
아래 예제에서는 호출 코드를 코드에 포함합니다. SDK의 대부분의 다른 예제에서는 매개 변수가 있는 메서드를 표시하기만 하면 됩니다.
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;
}
}
}
}
예제 메서드에는 다음 매개 변수가 있습니다.
매개 변수 | 형식 | 설명 |
---|---|---|
connection |
-관리: WqlConnectionManager |
SMS 공급자에 대한 유효한 연결입니다. |
newPackageName |
-관리: String |
새 패키지의 이름입니다. |
newPackageDescription |
-관리: String |
새 패키지에 대한 설명입니다. |
existingPackageID |
-관리: String |
기존 패키지 식별자입니다. 이는 클래스의 SMS_Package 키 값이며 클래스의 SMS_Package 특정 인스턴스를 반환하는 데 사용됩니다. 위의 샘플에서 ListPackages 메서드는 현재 패키지 인스턴스의 이름과 PackageID를 반환합니다. |
코드 컴파일
C# 예제에는 다음이 필요합니다.
네임 스페이스
시스템
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
어셈블리
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Mscorlib
강력한 프로그래밍
오류 처리에 대한 자세한 내용은 Configuration Manager 오류 정보를 참조하세요.