Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Állítson be egy kapcsolatot az SMS-szolgáltatóval.
Szerezzen be egy meglévő csomagobjektumot a
SMS_Package
osztály használatával.Szerezzen be egy meglévő programobjektumot a
SMS_Program
osztály használatával.Hozza létre és töltse fel az osztály egy példányát
SMS_OS_Details
.Adja hozzá az új
SMS_OS_Details
példányt aSupportedOperatingSystems
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 ProgramName
a 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.