Jak przypisać pakiet do punktu dystrybucji
W poniższym przykładzie pokazano, jak przypisać punkt dystrybucji do pakietu przy użyciu SMS_DistributionPoint
klas i SMS_SystemResourceList
w Configuration Manager. Punkt dystrybucji należy przypisać do pakietu tylko wtedy, gdy pakiet zawiera pliki źródłowe (PkgSourcePath). Pakiet nie jest anonsowany, dopóki pliki źródłowe programu nie zostać propagowane do udziału punktu dystrybucji. Możesz użyć domyślnego udziału punktu dystrybucji lub określić udział do użycia. Można również określić więcej niż jeden punkt dystrybucji do użycia do dystrybucji plików źródłowych pakietu, chociaż ten przykład tego nie pokazuje.
Aby przypisać pakiet do punktu dystrybucji
Skonfiguruj połączenie z dostawcą programu SMS.
Utwórz nowy obiekt punktu dystrybucji (nie jest to rzeczywisty punkt dystrybucji).
Skojarz istniejący pakiet z nowym obiektem punktu dystrybucji.
Zapytanie dotyczące pojedynczego punktu dystrybucji na podstawie podanej nazwy kodu lokacji i serwera.
Użyj wyników zapytania, aby wypełnić
ServerNALPath
właściwość obiektu punktu dystrybucji.Zapisz obiekt i właściwości punktu dystrybucji.
Przykład
Poniższa przykładowa metoda przypisuje pakiet do punktu dystrybucji.
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.
Sub SWDAssignPackageToDistributionPoint(connection, existingPackageID, siteCode, serverName)
Const wbemFlagReturnImmediately = 16
Const wbemFlagForwardOnly = 32
Dim distributionPoint
Dim query
Dim listOfResources
Dim resource
' Create distribution point object (this is not an actual distribution point).
Set distributionPoint = connection.Get("SMS_DistributionPoint").SpawnInstance_
' Associate the existing package with the new distribution point object.
distributionPoint.PackageID = existingPackageID
' This query selects a single distribution point based on the provided SiteCode and ServerName.
query = "SELECT * FROM SMS_SystemResourceList WHERE RoleName='SMS Distribution Point' AND SiteCode='" & siteCode & "' AND ServerName='" & serverName & "'"
Set listOfResources = connection.ExecQuery(query, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)
' The query returns a collection that needs to be enumerated (although we should only get one instance back).
For Each resource In ListOfResources
distributionPoint.ServerNALPath = Resource.NALPath
distributionPoint.SiteCode = Resource.SiteCode
Next
' Save the distribution point instance for the package.
distributionPoint.Put_
' Display notification text.
Wscript.Echo "Assigned package: " & distributionPoint.PackageID
End Sub
public void AssignPackageToDistributionPoint(WqlConnectionManager connection, string existingPackageID, string siteCode, string serverName)
{
try
{
// Create the distribution point object (this is not an actual distribution point).
IResultObject distributionPoint = connection.CreateInstance("SMS_DistributionPoint");
// Associate the package with the new distribution point object.
distributionPoint["PackageID"].StringValue = existingPackageID;
// This query selects a single distribution point based on the provided siteCode and serverName.
string query = "SELECT * FROM SMS_SystemResourceList WHERE RoleName='SMS Distribution Point' AND SiteCode='" + siteCode + "' AND ServerName='" + serverName + "'";
//
IResultObject listOfResources = connection.QueryProcessor.ExecuteQuery(query);
foreach (IResultObject resource in listOfResources)
{
Console.WriteLine(resource["SiteCode"].StringValue);
distributionPoint["ServerNALPath"].StringValue = resource["NALPath"].StringValue;
distributionPoint["SiteCode"].StringValue = resource["SiteCode"].StringValue;
}
// Save the distribution point object and properties.
distributionPoint.Put();
// Output package ID of assigned package.
Console.WriteLine("Assigned package: " + distributionPoint["PackageID"].StringValue);
}
catch (SmsException ex)
{
Console.WriteLine("Failed to create package. Error: " + ex.Message);
throw;
}
}
Przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
connection swbemServices |
-Zarządzane: WqlConnectionManager - VBScript: SWbemServices |
Prawidłowe połączenie z dostawcą programu SMS. |
existingPackageID |
-Zarządzane: String -Vbscript: String |
Identyfikator istniejącego pakietu. |
siteCode |
-Zarządzane: String -Vbscript: String |
Kod witryny. |
serverName |
-Zarządzane: String -Vbscript: String |
Nazwa serwera. |
Kompilowanie kodu
Przykład języka C# wymaga:
Obszary nazw
System
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Zestawu
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Mscorlib
Niezawodne programowanie
Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.
Zobacz też
Omówienie dystrybucji oprogramowaniaO pliku kontroli lokacjiSMS_SCI_Component Server WMI Class (Klasa WMI serwera)
SMS_SystemResourceList Server WMI Class