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.
A Configuration Manager a gyűjteményen keresztüli számbavétel előnyben részesített módszere a használataSMS_FullCollectionMembership Server WMI Class
.
1. lekérdezés: SMS_FullCollectionMembership: Ez a példa bemutatja, hogyan sorolhatja fel a Minden rendszer (SMS00001) gyűjtemény tagjait a SMS_FullCollectionMembership Server WMI Class
használatával.
2. lekérdezés: SMS_CollectionMember_a: Ez a példa egy lassabb alternatívát mutat be a SMS_CollectionMember_a kiszolgálói WMI-osztály osztály használatával.
3. lekérdezés: SMS_Collection: Ez a példa egy további alternatívát mutat be, amely a tagok lekérdezésére szolgál a SMS_Collection kiszolgálói WMI-osztály tulajdonságában MemberClassName
megadott tényleges gyűjteményosztálynév használatával. A tényleges osztály lekérdezése teljesítménybeli előnyöket biztosít, és lehetővé teszi összetettebb lekérdezések, például JOIN-ek létrehozását. A példa megegyezik a korábbi lekérdezések példáival.
Megjegyzés:
Az SMS-szolgáltató első inicializálásakor regisztrálja és dinamikusan betölti az SMS-gyűjtési osztályt a memóriába. Ha a betöltés előtt WQL-lekérdezést végez a gyűjteményosztályon, a rendszer üres lekérdezési eredményhalmazt ad vissza.
A gyűjtemények szorosan kötődnek a csomagokhoz, programokhoz és hirdetésekhez. További információ: A szoftverterjesztés áttekintése.
Ezekhez a példákhoz a következő értékek szükségesek:
Egy Windows Management Instrumentation (WMI) kapcsolatobjektum.
Példa a Visual Basicben a subroutine hívásra:
Call EnumerateCollectionMembers(swbemServices)
Példa a metódushívásra a C#-ban:
EnumerateCollectionMembers(WMIConnection)
Gyűjtemény tagjainak számbavétele
Állítson be egy kapcsolatot az SMS-szolgáltatóval.
Adjon meg egy lekérdezést a gyűjtemény erőforrásainak kiválasztásához.
Hajtsa végre a lekérdezést, és számba adja az eredményeket.
Példa
Az alábbi példametódus egy gyűjtemény tagjait sorolja fel.
A mintakód meghívásával kapcsolatos információkért lásd: Configuration Manager Kódrészletek hívása.
Sub EnumerateCollectionMembers(connection)
Const wbemFlagReturnImmediately = 16 Const wbemFlagForwardOnly = 32
' Set required variables.
' Note: Values must be manually added to the queries below.
Dim Query1 Dim Query2 Dim Query3 Dim ListOfResources1 Dim ListOfResources2 Dim ListOfResources3 Dim Resource1 Dim Resource2 Dim Resource3
' The following example shows how to enumerate the members of the All Systems (SMS00001) collection.
Query1 = "SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID = 'SMS00001'"
' Run query.
Set ListOfResources1 = connection.ExecQuery(Query1, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)
' The query returns a collection that needs to be enumerated.
Wscript.Echo " "
Wscript.Echo "Query: " & Query1
For Each Resource1 In ListOfResources1
Wscript.Echo Resource1.ResourceID
Next
' A slower alternative is to use the SMS_CollectionMember_a association class.
Query2 = "SELECT ResourceID FROM SMS_CollectionMember_a WHERE CollectionID = 'SMS00001'"
' Run query.
Set ListOfResources2 = connection.ExecQuery(Query2, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)
' The query returns a collection that needs to be enumerated.
Wscript.Echo " "
Wscript.Echo "Query: " & Query2
For Each Resource2 In ListOfResources2
Wscript.Echo Resource2.ResourceID
Next
' A further alternative is to query the members by using the actual collection class name specified in the MemberClassName property of SMS_Collection.
Query3 = "SELECT ResourceID FROM SMS_CM_Res_Coll_SMS00001"
' Run query.
Set ListOfResources3 = connection.ExecQuery(Query3, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)
' The query returns a collection that needs to be enumerated.
Wscript.Echo " "
Wscript.Echo "Query: " & Query3
For Each Resource3 In ListOfResources3
Wscript.Echo Resource3.ResourceID
Next
End Sub
public void EnumerateCollectionMembers(WqlConnectionManager connection)
{
// Set required variables.
// Note: Values must be manually added to the queries below.
try
{
// The following example shows how to enumerate the members of the All Systems (SMS00001) collection.
string Query1 = "SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID = 'SMS00001'";
// Run query.
IResultObject ListOfResources1 = connection.QueryProcessor.ExecuteQuery(Query1);
// The query returns a collection that needs to be enumerated.
Console.WriteLine(" ");
Console.WriteLine("Query: " + Query1);
foreach (IResultObject Resource1 in ListOfResources1)
{
Console.WriteLine(Resource1["ResourceID"].IntegerValue);
}
// A slower alternative is to use the SMS_CollectionMember_a association class.
string Query2 = "SELECT ResourceID FROM SMS_CollectionMember_a WHERE CollectionID = 'SMS00001'";
// Run query.
IResultObject ListOfResources2 = connection.QueryProcessor.ExecuteQuery(Query2);
// The query returns a collection that needs to be enumerated.
Console.WriteLine(" ");
Console.WriteLine("Query: " + Query2);
foreach (IResultObject Resource2 in ListOfResources2)
{
Console.WriteLine(Resource2["ResourceID"].IntegerValue);
}
// A further alternative is to query the members by using the actual collection class name specified in the MemberClassName property of SMS_Collection.
string Query3 = "SELECT ResourceID FROM SMS_CM_Res_Coll_SMS00001";
// Run query.
IResultObject ListOfResources3 = connection.QueryProcessor.ExecuteQuery(Query3);
// The query returns a collection that needs to be enumerated.
Console.WriteLine(" ");
Console.WriteLine("Query: " + Query3);
foreach (IResultObject Resource3 in ListOfResources3)
{
Console.WriteLine(Resource3["ResourceID"].IntegerValue);
}
}
catch (SmsException eX)
{
Console.WriteLine("Failed to run queries. 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. |
A kód fordítása
A C#-példához a következőre van szükség:
Névterek
Rendszer
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
SMS_CollectionMember_a kiszolgálói WMI-osztály
SMS_Collection kiszolgálói WMI-osztály
A szoftverterjesztés áttekintése– A központi telepítésekkel kapcsolatos tudnivalók