Freigeben über


So ändern Sie die maximale Laufzeit für ein Programm

Das folgende Beispiel zeigt, wie Ein Programm in Configuration Manager mithilfe der SMS_Package Klassen und SMS_Program Eigenschaften und geändert wird.

Wichtig

Jedes angekündigte Programm kann nicht ausgeführt werden, wenn die auf dem Clientcomputer definierten Wartungsfenster für einen Zeitraum festgelegt sind, der kleiner als der dieses Maximum allowed run time settingProgramms ist. Weitere Informationen finden Sie im Thema "Programmausführungsszenario mit Wartungsfenstern" in der Configuration Manager-Dokumentation.

So ändern Sie die maximale Laufzeit für ein Programm

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein.

  2. Fragen Sie die Programme ab, die der vorhandenen Paket-ID zugeordnet sind.

  3. Listen Sie die Programme auf, bis eine Übereinstimmung für den Programmnamen gefunden wird.

  4. Ersetzen Sie die Eigenschaft für die maximale Laufzeit des Programms durch die Eigenschaft, die an die -Methode übergeben wird.

  5. Speichern Sie das Programmobjekt und die Eigenschaften.

Beispiel

Die folgende Beispielmethode ändert die maximale Laufzeit für ein vorhandenes Programm.

Hinweis

Eine geringfügige Variation dieses Beispiels könnte Eigenschaftswerte für alle Programme ändern, die einem bestimmten Paket zugeordnet sind. Ein Beispiel finden Sie im Codebeispiel How to List All Programs and Their Maximum Run Time Value .For an example, see the How to List All Programs and Their Maximum Run Time Value . Eine effizientere Methode für den Zugriff auf ein bestimmtes Programm mithilfe von PackageID und ProgramNamefinden Sie im Codebeispiel Ändern von Programmeigenschaften .

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.


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

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
connection

swbemServices
-Verwalteten: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
existingPackageID -Verwalteten: String
-Vbscript: String
Die ID eines vorhandenen Pakets, dem das Programm zugeordnet werden soll.
existingProgramNameToModify -Verwalteten: String
-Vbscript: String
Der Name für das zu ändernde Programm.
newMaxRunTime -Verwalteten: Integer
-Vbscript: Integer
Neue ungefähre Dauer der Programmausführung auf dem Clientcomputer in Minuten.

Kompilieren des Codes

Für das C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

Siehe auch

Übersicht über die Softwareverteilung