Compartir a través de


Cómo cambiar el tiempo máximo de ejecución de un programa

En el ejemplo siguiente se muestra cómo modificar un programa, en Configuration Manager, mediante las SMS_Package clases y propiedades y SMS_Program .

Importante

Cualquier programa anunciado no se puede ejecutar cuando las ventanas de mantenimiento definidas en el equipo cliente se establecen durante un período menor que el de Maximum allowed run time settingese programa. Consulte el tema "Escenario de ejecución del programa mediante ventanas de mantenimiento" en la documentación de Configuration Manager para obtener más información.

Para cambiar el tiempo máximo de ejecución de un programa

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

  2. Consulte los programas asociados al identificador de paquete existente proporcionado.

  3. Enumere los programas hasta que se encuentre una coincidencia con el nombre del programa.

  4. Reemplace la propiedad de tiempo de ejecución máximo del programa por la que se pasa al método .

  5. Guarde el objeto y las propiedades del programa.

Ejemplo

El método de ejemplo siguiente cambia el tiempo máximo de ejecución de un programa existente.

Nota:

Una ligera variación de este ejemplo podría cambiar los valores de propiedad de todos los programas asociados a un paquete específico. Para obtener un ejemplo, vea el ejemplo de código How to List All Programs and Their Maximum Run Time Value (Cómo enumerar todos los programas y su valor máximo de tiempo de ejecución ). Sin embargo, para obtener un método más eficaz para acceder a un programa específico, use y PackageIDProgramName, vea el ejemplo de código How to Modify Program Properties (Cómo modificar propiedades del programa ).

Para obtener información sobre cómo llamar al código de ejemplo, vea Llamar a fragmentos de código de Configuration Manager.


Sub ModifyProgram(connection, existingpackageID, existingProgramNameToModify, newMaxRunTime)

    Const wbemFlagReturnImmediately = 16
    Const wbemFlagForwardOnly = 32
    Dim query
    Dim programsForPackage
    Dim program

    ' Build a query to get the programs for the package.
    query = "SELECT * FROM SMS_Program WHERE PackageID='" & existingPackageID & "'"

    ' Run the query.
    Set programsForPackage = connection.ExecQuery(query, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)

    ' The query returns a collection that needs to be enumerated.
    For Each program In programsForPackage

        ' If a match for the program name is found, make the change(s).
        If program.ProgramName=existingProgramNameToModify Then

            ' Replace the existing package property (in this case the package description).
            program.Duration = newMaxRunTime

            ' Save the program with the modified properties.
            program.Put_

            ' Output program name.
            wscript.echo "Modified program: "  & program.ProgramName

            Exit For
        End If
    Next

End Sub
public void ModifyProgram(WqlConnectionManager connection, string existingPackageID, string existingProgramNameToModify, int newMaxRunTime)
{

    try
    {
        // Build query to get the programs for the package.
        string query = "SELECT * FROM SMS_Program WHERE PackageID='" + existingPackageID + "'";

        // Load the specific program to change (programname is a key value and must be unique).
        IResultObject programsForPackage = connection.QueryProcessor.ExecuteQuery(query);

        // The query returns a collection that needs to be enumerated.
        foreach(IResultObject program in programsForPackage)
        {
            // If a match for the program name is found, make the change(s).
            if (program["ProgramName"].StringValue == existingProgramNameToModify)
            {
                 // Replace the existing package property (in this case the package description).
                 program["Duration"].IntegerValue = newMaxRunTime;

                 // Save the program with the modified properties.
                 program.Put();

                 // Output program name.
                 Console.WriteLine("Modified program: "  + program["ProgramName"].StringValue);
            }
        }

    }

    catch (SmsException ex)
    {
        Console.WriteLine("Failed to modify the program. 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 de un paquete existente con el que asociar el programa.
existingProgramNameToModify -Administrado: String
-Vbscript: String
Nombre del programa que se va a modificar.
newMaxRunTime -Administrado: Integer
-Vbscript: Integer
Nueva duración aproximada, en minutos, de la ejecución del programa en el equipo cliente.

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

Introducción a la distribución de software