How to List All Programs and Their Maximum Run Time Value

No Configuration Manager, pode listar todos os programas com os respetivos valores máximos de tempo de execução ao utilizar as SMS_PackageSMS_Program propriedades e classes e classes.

Para listar todos os programas e os respetivos tempos de execução máximos

  1. Configure uma ligação ao Fornecedor de SMS.

  2. Carregue os pacotes disponíveis com a SMS_Package classe .

  3. Enumerar através de cada conjunto de programas com a SMS_Program classe e a PackageID propriedade de cada pacote.

  4. Produza o nome do pacote, o nome do programa e o valor máximo do tempo de execução para cada programa.

Exemplo

O seguinte método de exemplo mostra como listar todos os programas, com o nome do pacote correspondente, o nome do programa e os tempos de execução máximos.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.


Sub ListPackagesProgramsandMaximumRunTimeValue(connection)
    Const wbemFlagReturnImmediately = 16    Const wbemFlagForwardOnly = 32    Dim packageQuery    Dim allPackages    Dim package    Dim packageID    Dim program    Dim programsForPackage
    ' Build query to get all of the packages.
    packageQuery = "SELECT * FROM SMS_Package"

    ' Run query.
    Set allPackages = connection.ExecQuery(packageQuery, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)

    ' The query returns a collection of package objects that needs to be enumerated.
    For Each package In allPackages

        ' Output package name and get the PackageID value to use in program query.
        WScript.Echo ""
        WScript.Echo "Package: "  & package.Name
        packageID = package.PackageID

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

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

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

            ' Output Maximum Runtime Value for each program found.
            WScript.Echo "  Program: "  & program.ProgramName
            WScript.Echo "  Maximum Runtime Value: "  & program.Duration

        Next
    Next

End Sub


public void ListPackagesProgramsandMaximumRunTimeValue(WqlConnectionManager connection)
{
    try
    {
        // Build query to get the packages.
        string packageQuery = "SELECT * FROM SMS_Package";

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

        // The query returns a collection of packages that needs to be enumerated.
        foreach(IResultObject package in allPackages)
        {
            // Output package name and get the PackageID value to use in program query.
            Console.WriteLine();
            Console.WriteLine("Package: "  + package["Name"].StringValue);
            string packageID = package["PackageID"].StringValue;

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

            // Load the all programs belonging to the package.
            IResultObject programsForPackage = connection.QueryProcessor.ExecuteQuery(programQuery);

            // The query returns a collection of programs that needs to be enumerated.
            foreach(IResultObject program in programsForPackage)
            {
                // Output Maximum Runtime Value for each program found.
                Console.WriteLine("   Program: "  + program["ProgramName"].StringValue);
                Console.WriteLine("   Maximum Runtime Value: "  + program["Duration"].IntegerValue);
            }
        }
    }
    catch (SmsException ex)
    {
        Console.WriteLine("Failed to list the packages and programs. Error: " + ex.Message);
        throw;
    }
}

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.

Compilando o código

O exemplo de C# requer:

Namespaces

Sistema

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Programação robusta

Para obter mais informações sobre o processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Confira também

Visão geral da distribuição de software