Поделиться через


Установка флага распространения по запросу

В следующем примере показано, как задать свойство флага "распространение по запросу" существующего пакета с помощью класса WMI SMS_Package server в Configuration Manager.

Установка флага распространения по запросу

  1. Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.

  2. Загрузите существующий объект пакета с помощью класса WMI сервера SMS_Package .

  3. Заполните свойство флага пакета.

  4. Сохраните свойства пакета и нового пакета.

Пример

В следующем примере метода устанавливается флаг "распространение по запросу" для пакета.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода Configuration Manager.


Sub SetDistributeOnDemandFlag(connection,         _
                              existingPackageID)

    ' Define a constant with the hexadecimal value for the DISTRIBUTE_ON_DEMAND.
    DISTRIBUTE_ON_DEMAND = &H40000000

    ' Get the specific package instance to modify.
    Set packageToModify = connection.Get("SMS_Package.PackageID='" & existingpackageID & "'")

    ' List the existing property values.
    Wscript.Echo " "
    Wscript.Echo "Values before change: "
    Wscript.Echo "--------------------- "
    Wscript.Echo "Package Name:            " & packageToModify.Name
    Wscript.Echo "Package Flags (integer): " & packageToModify.PkgFlags

    ' Set the new property value.
    packageToModify.PkgFlags = packageToModify.PkgFlags OR DISTRIBUTE_ON_DEMAND

    ' Save the package.
    packageToModify.Put_

    ' Output the new property values.
    Wscript.Echo " "
    Wscript.Echo "Values after change:  "
    Wscript.Echo "--------------------- "
    Wscript.Echo "Package Name:             " & packageToModify.Name
    Wscript.Echo "Package Flags (integer):  " & packageToModify.PkgFlags

End Sub


public void SetDistributeOnDemandFlag(WqlConnectionManager connection,
                                      string existingPackageID)
{
    // Define a constant with the hexadecimal value for DISTRIBUTE_ON_DEMAND.
    const Int32 DISTRIBUTE_ON_DEMAND = 0x40000000;

    try
    {
        // Get the specific package instance to modify.
        IResultObject packageToModify = connection.GetInstance(@"SMS_Package.PackageID='" + existingPackageID + "'");

        // List the existing property values.
        Console.WriteLine();
        Console.WriteLine("Values before change:");
        Console.WriteLine("_____________________");
        Console.WriteLine("Package Name:            " + packageToModify["Name"].StringValue);
        Console.WriteLine("Package Flags (integer): " + packageToModify["PkgFlags"].IntegerValue);

        // Modify the PkgFlags value to include the DISTRIBUTE_ON_DEMAND value.
        packageToModify["PkgFlags"].IntegerValue = packageToModify["PkgFlags"].IntegerValue | DISTRIBUTE_ON_DEMAND;

        // Save the package with the new value.
        packageToModify.Put();

        // Reload the package to verify the change.
        packageToModify.Get();

        // List the existing (modified) property values.
        Console.WriteLine();
        Console.WriteLine("Values after change:");
        Console.WriteLine("_____________________");
        Console.WriteLine("Package Name:            " + packageToModify["Name"].StringValue);
        Console.WriteLine("Package Flags (integer): " + packageToModify["PkgFlags"].IntegerValue);
    }
    catch (SmsException ex)
    {
        Console.WriteLine("Failed to modify package. Error: " + ex.Message);
        throw;
    }
}

Метод примера имеет следующие параметры:

Параметр Тип Описание
connection

swebemServices
-Управляемых: WqlConnectionManager
— VBScript: SWbemServices
Допустимое подключение к поставщику SMS.
existingPackageID -Управляемых: String
— VBScript: String
Идентификатор пакета.

Компиляция программы

Для примера C# требуется следующее:

Пространства имен

System;

System.Collections.Generic;

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

Безопасность .NET Framework

Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.

См. также

Обзор распространения программного обеспечения. Общие сведения Об объектахКак подключиться к поставщику SMS в Configuration Manager с помощью управляемого кода. Подключение к поставщику SMS в Configuration Manager с помощьюкласса WMI SMS_Package server WMI