Enkelt exempel på lista, skapa, ändra och ta bort
I följande exempel visas en uppsättning mycket grundläggande metoder som använder SMS_Package
klassen för att demonstrera åtgärderna List, Create, Modify och Delete med hjälp av SMS-providern. Det här är en titt på strukturen för ett grundläggande Configuration Manager program – det finns mer användbara metodfragment i andra delar av SDK:et som utför specifika uppgifter.
Viktigt
För att förenkla kodexemplet kommenteras vissa metoder ut eftersom de behöver ytterligare information (en befintlig paketidentifierare).
ListPackages
Använd metoden för att hämta paketidentifieraren för användning med ModifyPackage
metoderna och DeletePackage
.
Så här listar du paket
Konfigurera en anslutning till SMS-providern.
Kör en fråga som fyller i en variabel med en samling
SMS_Package
klassinstanser.Räkna upp genom samlingen och lista de paket som returneras av frågan.
Så här skapar du ett paket
Konfigurera en anslutning till SMS-providern.
Skapa det nya paketobjektet med hjälp
SMS_Package
av klassen .Fyll i de nya paketegenskaperna.
Spara paketet.
Ändra ett paket
Konfigurera en anslutning till SMS-providern.
Läs in det befintliga paketobjektet med hjälp
SMS_Package
av klassen .Ändra en paketegenskap.
Spara paketet.
Ta bort ett paket
Konfigurera en anslutning till SMS-providern.
Läs in det befintliga paketobjektet med hjälp
SMS_Package
av klassen .Ta bort paketet med hjälp av borttagningsmetoden.
Exempel
Följande exempelmetod visar en uppsättning mycket grundläggande metoder med hjälp SMS_Package
av klassen för att demonstrera åtgärderna Lista, Skapa, Ändra och Ta bort med HJÄLP av SMS-providern.
Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.
Obs!
I exemplet nedan bäddas den anropande koden in i koden. De flesta andra exempel i SDK visar helt enkelt en metod med parametrar.
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;
}
}
}
}
Exempelmetoden har följande parametrar:
Parameter | Typ | Beskrivning |
---|---|---|
connection |
-Hanterade: WqlConnectionManager |
En giltig anslutning till SMS-providern. |
newPackageName |
-Hanterade: String |
Namnet på det nya paketet. |
newPackageDescription |
-Hanterade: String |
Beskrivningen för det nya paketet. |
existingPackageID |
-Hanterade: String |
En befintlig paketidentifierare. Detta är ett nyckelvärde för SMS_Package klassen och används för att returnera en specifik instans av SMS_Package klassen. Metoden ListPackages i exemplet ovan returnerar namnen och PackageID:erna för de aktuella paketinstanserna. |
Kompilera koden
C#-exemplet kräver:
Namnområden
System
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Församlingen
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
mscorlib
Robust programmering
Mer information om felhantering finns i Om Configuration Manager fel.
Se även
Översikt över programvarudistributionSMS_Package serverns WMI-klass