Asignación de un paquete a un punto de distribución

En el ejemplo siguiente se muestra cómo asignar un punto de distribución a un paquete mediante las SMS_DistributionPoint clases y SMS_SystemResourceList de Configuration Manager. Solo tiene que asignar un punto de distribución a un paquete si el paquete contiene archivos de origen (PkgSourcePath). El paquete no se anuncia hasta que los archivos de origen del programa se hayan propagado a un recurso compartido de punto de distribución. Puede usar el recurso compartido de punto de distribución predeterminado o puede especificar un recurso compartido para usarlo. También puede especificar más de un punto de distribución para distribuir los archivos de origen del paquete, aunque este ejemplo no lo demuestra.

Para asignar un paquete a un punto de distribución

  1. Configure una conexión con el proveedor de SMS.

  2. Cree un nuevo objeto de punto de distribución (no es un punto de distribución real).

  3. Asocie el paquete existente al nuevo objeto de punto de distribución.

  4. Consulta de un único punto de distribución basado en el código de sitio y el nombre del servidor proporcionados.

  5. Use los resultados de la consulta para rellenar la ServerNALPath propiedad del objeto de punto de distribución.

  6. Guarde el objeto y las propiedades del punto de distribución.

Ejemplo

El siguiente método de ejemplo asigna un paquete a un punto de distribución.

Para obtener información sobre cómo llamar al código de ejemplo, vea Llamar a fragmentos de código de 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;  
    }  
}  

El método de ejemplo tiene los parámetros siguientes:

Parámetro Tipo Descripción
connection

swbemServices
-Administrado: WqlConnectionManager
- VBScript: SWbemServices
Una conexión válida al proveedor de SMS.
existingPackageID -Administrado: String
-Vbscript: String
Identificador del paquete existente.
siteCode -Administrado: String
-Vbscript: String
El código del sitio.
serverName -Administrado: String
-Vbscript: String
Nombre del servidor.

Compilar el código

El ejemplo de C# requiere:

Espacios de nombres

Sistema

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Ensamblado

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Programación sólida

Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.

Consulta también

Información general sobre la distribución de softwareAcerca del archivo de control de sitioSMS_SCI_Component clase WMI de servidor
SMS_SystemResourceList clase WMI de servidor