Megosztás a következőn keresztül:


A program által támogatott platformok módosítása

Az alkalmazás támogatott platformokat adhat hozzá egy csomaghoz a Configuration Manager, ha beszerzi a és SMS_Program osztály SMS_Package adott példányait, majd hozzáadja az SMS_OS_Details osztály egy példányát a SupportedOperatingSystems tulajdonsághoz.

A program által támogatott platformok módosítása

  1. Állítson be egy kapcsolatot az SMS-szolgáltatóval.

  2. Szerezzen be egy meglévő csomagobjektumot a SMS_Package osztály használatával.

  3. Szerezzen be egy meglévő programobjektumot a SMS_Program osztály használatával.

  4. Hozza létre és töltse fel az osztály egy példányát SMS_OS_Details .

  5. Adja hozzá az új SMS_OS_Details példányt a SupportedOperatingSystems programobjektum tulajdonságához (a 3. lépésben).

Példa

Az alábbi példametódus bemutatja, hogyan adhat hozzá támogatott platformokat egy programhoz.

Megjegyzés:

A példa egy kis változata megváltoztathatja az adott csomaghoz társított összes program tulajdonságértékét. Példaként tekintse meg az Összes program listázása és a Maximális futási idő értékének kódja című példát. Egy adott program elérésének hatékonyabb módja érdekében azonban a és ProgramNamea PackageID használatával tekintse meg a Program tulajdonságainak módosítása példakódot.

A mintakód meghívásával kapcsolatos információkért lásd: Configuration Manager Kódrészletek hívása.

Sub ModifySupportedPlatformsForProgram(connection,          _  
                                       existingPackageID,   _  
                                       existingProgramName, _  
                                       newMaxVersion,       _  
                                       newMinVersion,       _  
                                       newName,             _  
                                       newPlatform)   

' Define a constant with the hexadecimal value for RUN_ON_ANY_PLATFORM.   
    Const wbemFlagReturnImmediately = 16  
    Const wbemFlagForwardOnly = 32  
    Const RUN_ON_ANY_PLATFORM = &H08000000  
    Dim packageQuery  
    Dim package  
    Dim allProgramsForPackage  
    Dim programQuery  
    Dim program  
    Dim programPath  
    Dim checkPlatformValue  
    Dim tempSupportedPlatform  
    Dim tempSupportedPlatformsArray  
    ' Build a query to get the specified package.   
     packageQuery = "SMS_Package.PackageID='" & existingPackageID & "'"  
    ' Run the query to get the package.   
    Set package = connection.Get(packageQuery)      
    ' Output package name and ID.   
    WScript.Echo "Package ID:     "  & package.PackageID  
    WScript.Echo "Package Name:   "  & package.Name      
    ' Build a query to get the programs for the package.   
    programQuery = "SELECT * FROM SMS_Program WHERE PackageID='" & existingPackageID & "'"      
    ' Run the query to get the programs.   
    Set allProgramsForPackage = connection.ExecQuery(programQuery, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)      
    'The query returns a collection of program objects that needs to be enumerated.   
    For Each program In allProgramsForPackage                         
        If program.ProgramName = existingProgramName Then              
            ' Get all program object properties (in this case we specifically need some lazy properties).   
            programPath = program.Put_  
            programPath = Mid(programPath, InStr(1, programPath, ":") + 1)   
            Set program = connection.Get(programPath)   
            ' Check whether RUN_ON_ANY_PLATFORM is set.   
            checkPlatformValue = (program.ProgramFlags AND RUN_ON_ANY_PLATFORM)   
            If checkPlatformValue <> 0 Then  
               ' RUN_ON_ANY_PLATFORM is set. Removing RUN_ON_ANY_PLATFORM value.   
                program.ProgramFlags = (program.ProgramFlags XOR RUN_ON_ANY_PLATFORM)   
            End If                           
            ' Output the program name that is being checked for supported platforms.   
            WScript.Echo "Program Name: "  & program.ProgramName             
            ' Create  
            Set tempSupportedPlatform = connection.Get("SMS_OS_Details").SpawnInstance_  
            ' Populate tempSupportedPlatform values.   
            tempSupportedPlatform.MaxVersion = newMaxVersion  
            tempSupportedPlatform.MinVersion = newMinVersion  
            tempSupportedPlatform.Name       = newName  
            tempSupportedPlatform.Platform   = newPlatform  
            ' Get the array of supported operating systems.   
            tempSupportedPlatformsArray = program.SupportedOperatingSystems  
            ' Add the new supported platform values (object) to the temporary array.   
            ReDim Preserve tempSupportedPlatformsArray (Ubound(tempSupportedPlatformsArray) + 1)   
            Set tempSupportedPlatformsArray(Ubound(tempSupportedPlatformsArray)) = tempSupportedPlatform  
            ' Replace the SupportedOperatingSystems object array with the new updated array.   
            program.SupportedOperatingSystems = tempSupportedPlatformsArray  
            ' Save the program.   
            program.Put_  
            ' Output success message.   
            WScript.Echo "Supported Platforms Updated "  
        End If  
    Next  
End Sub  

public void ModifyProgramSupportedPlatforms(WqlConnectionManager connection,  
                                    string existingPackageID,  
                                    string existingProgramNameToModify,  
                                    string newMaxVersion,  
                                    string newMinVersion,  
                                    string newName,  
                                    string newPlatform)  
{  
    try  
    {  
        // Define a constant with the hexadecimal value for RUN_ON_ANY_PLATFORM.   
        const Int32 RUN_ON_ANY_PLATFORM = 0x08000000;  

        // 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)  
            {  
                // Get all properties, specifically the lazy properties, for the program object.  
                program.Get();  

                // Check whether RUN_ON_ANY_PLATFORM is already set.  
                Int32 checkPlatformValue = (program["ProgramFlags"].IntegerValue & RUN_ON_ANY_PLATFORM);  

                if (checkPlatformValue != 0)  
                {  
                    // RUN_ON_ANY_PLATFORM is set. Removing RUN_ON_ANY_PLATFORM value.  
                    program["ProgramFlags"].IntegerValue = program["ProgramFlags"].IntegerValue ^ RUN_ON_ANY_PLATFORM;  
                }  

                // Create a new array list to hold the supported platform window objects.  
                List<IResultObject> tempSupportedPlatformsArray = new List<IResultObject>();  

                // Create and populate a temporary SMS_OS_Details object with the new operating system values.  
                IResultObject tempSupportedPlatformsObject = connection.CreateEmbeddedObjectInstance("SMS_OS_Details");  

                // Populate temporary SMS_OS_Details object with the new supported platforms values.  
                tempSupportedPlatformsObject["MaxVersion"].StringValue = newMaxVersion;  
                tempSupportedPlatformsObject["MinVersion"].StringValue = newMinVersion;  
                tempSupportedPlatformsObject["Name"].StringValue = newName;  
                tempSupportedPlatformsObject["Platform"].StringValue = newPlatform;  

                // Populate the local array list with the existing supported platform objects (type SMS_OS_Details).  
                tempSupportedPlatformsArray = program.GetArrayItems("SupportedOperatingSystems");  

                // Add the newly created service window object to the local array list.  
                tempSupportedPlatformsArray.Add(tempSupportedPlatformsObject);  

                // Replace the existing service window objects from the target collection with the temporary array that includes the new service window.  
                program.SetArrayItems("SupportedOperatingSystems", tempSupportedPlatformsArray);  

                // Save the new values in the collection settings instance associated with the Collection ID.  
                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;  
    }  
}  

A példametódus a következő paraméterekkel rendelkezik:

Paraméter Típus Leírás
connection -Kezelt: WqlConnectionManager
- VBScript: SWbemServices
Érvényes kapcsolat az SMS-szolgáltatóval.
existingPackageID -Kezelt: String
-Vbscript: String
Egy meglévő csomag csomagazonosítója.
existingProgramName -Kezelt: String
-Vbscript: String
Egy meglévő program programneve.
newMaxVersion -Kezelt: String
-Vbscript: String
A maximális támogatott verzió.
newMinVersionsion -Kezelt: String
-Vbscript: String
A minimálisan támogatott verzió.
newName -Kezelt: String
-Vbscript: String
A módosított program neve.
newPlatform -Kezelt: String
-Vbscript: String
Az új platform.

A kód fordítása

A C#-példához a következőre van szükség:

Névterek

Rendszer

System.Collections.Generic

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Összeszerelés

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Robusztus programozás

A hibakezeléssel kapcsolatos további információkért lásd: A Configuration Manager hibák ismertetése.

Lásd még

Szoftverterjesztés áttekintése