Sdílet prostřednictvím


Přiřazení balíčku k distribučnímu bodu

Následující příklad ukazuje, jak přiřadit distribuční bod balíčku pomocí SMS_DistributionPoint tříd a SMS_SystemResourceList v Configuration Manager. Distribuční bod stačí přiřadit k balíčku pouze v případě, že balíček obsahuje zdrojové soubory (PkgSourcePath). Balíček se neinzeruje, dokud se zdrojové soubory programu nerozšíšily do sdílené složky distribučního bodu. Můžete použít výchozí sdílenou složku distribučního bodu nebo můžete určit sdílenou složku, která se má použít. Můžete také zadat více než jeden distribuční bod, který se má použít k distribuci zdrojových souborů balíčku, i když to tento příklad neukazuje.

Přiřazení balíčku k distribučnímu bodu

  1. Nastavte připojení k poskytovateli serveru SMS.

  2. Vytvořte nový objekt distribučního bodu (nejedná se o skutečný distribuční bod).

  3. Přidružte existující balíček k novému objektu distribučního bodu.

  4. Zadejte dotaz na jeden distribuční bod na základě zadaného kódu lokality a názvu serveru.

  5. Výsledky dotazu použijte k naplnění ServerNALPath vlastnosti objektu distribučního bodu.

  6. Uložte objekt a vlastnosti distribučního bodu.

Příklad

Následující příklad metoda přiřadí balíček distribučnímu bodu.

Informace o volání ukázkového kódu najdete v tématu Volání Configuration Manager fragmentů kódu.


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;  
    }  
}  

Ukázková metoda má následující parametry:

Parametr Typ Popis
connection

swbemServices
-Spravované: WqlConnectionManager
- VBScript: SWbemServices
Platné připojení k poskytovateli serveru SMS.
existingPackageID -Spravované: String
-Vbscript: String
ID existujícího balíčku.
siteCode -Spravované: String
-Vbscript: String
Kód lokality.
serverName -Spravované: String
-Vbscript: String
Název serveru.

Kompilace kódu

Příklad jazyka C# vyžaduje:

Obory názvů

Systému

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Sestavení

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

Robustní programování

Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.

Viz taky

Přehled distribuce softwaruO souboru řízení lokalitySMS_SCI_Component serverové třídě služby WMI
Serverová třída služby WMI SMS_SystemResourceList