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 az alkalmazás a SMS_Collection kiszolgálói WMI-osztályt használja egy gyűjtemény attribútumainak meghatározásához, például a tagsági szabályokhoz és a frissítési ütemezéshez. A MemberClassName
tulajdonság tartalmazza a rendszer által létrehozott osztálynevet, amely a gyűjtemény tagjait tartalmazza.
A gyűjtemények tagjai közvetlen szabályokkal, lekérdezési szabályokkal vagy mindkettővel vannak megadva. A közvetlen szabályok explicit erőforrást határoznak meg, míg a lekérdezési szabályok dinamikus gyűjteményt határoznak meg, amelyet a rendszer rendszeresen kiértékel a hely aktuális állapota alapján.
Megjegyzés:
Közvetlen tagsági szabály létrehozásakor ne feledje, hogy a szabálynak mindig ugyanazzal a névvel kell rendelkeznie, mint a szabály által megadott számítógépnek.
Az alkalmazás a SMS_CollectionRuleQuery kiszolgálói WMI-osztály osztályt használja a lekérdezési szabályok meghatározásához. A lekérdezésnek érvényesnek kell lennie, és megadhatja azt a gyűjteményt, amely a következőhöz hasonló erőforrásokat tartalmaz: "A vállalati tartomány minden felhasználója". Az alkalmazás ezután a lekérdezés használatával biztosíthatja, hogy a program a feltételeknek megfelelő számítógépekre történő szoftverterjesztést célozza meg. A webhely változásával és a gyűjtemény újraértékelésével a rendszer automatikusan hozzáadja és törli a gyűjtemény tagjait.
Megjegyzés:
Ha dinamikus gyűjteményen futtat lekérdezést, győződjön meg arról, hogy az SMS-szolgáltató be van töltve, vagy hogy már futott egy másik metódus vagy lekérdezés.
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.
Új dinamikus gyűjteménynév.
Új dinamikus gyűjtemény-megjegyzés.
A "webhely tulajdonosa" jelző.
Egy lekérdezés (sztring).
Egy statikus szabály neve.
Gyűjteményazonosító a tagság hatókörének korlátozásához.
Megjegyzés:
Ha a Minden rendszer (SMS00001) gyűjtemény el lett távolítva a helykiszolgálóról, a VBScript-példa nem működik.
Példa a Visual Basicben a subroutine hívásra:
Call CreateDynamicCollection(swbemconnection, "New Dynamic Collection Name", "New dynamic collection comment.", true, "SELECT * from SMS_R_System", "New Rule Name", "SMS00001")
Példa a metódushívásra a C#-ban:
CreateDynamicCollection(WMIConnection, "New Dynamic Collection Name", "New dynamic collection comment.", true, "SELECT * from SMS_R_System", "New Rule Name", "SMS00001")
Dinamikus gyűjtemény létrehozása
Állítson be egy kapcsolatot az SMS-szolgáltatóval. További információ: Az SMS-szolgáltató alapjai.
Hozza létre az új gyűjteményobjektumot a SMS_Collection kiszolgálói WMI-osztály osztály használatával.
Hozza létre a szabályt a SMS_CollectionRuleQuery kiszolgálói WMI-osztály osztály használatával.
Adja hozzá a szabályt a gyűjteményhez.
Frissítse a gyűjteményt.
Példa
Az alábbi példametódus dinamikus gyűjteményt hoz létre a SMS_Collection kiszolgálói WMI-osztály és a SMS_CollectionRuleQuery kiszolgálói WMI-osztályosztályok és -osztálytulajdonságok használatával.
A mintakód meghívásával kapcsolatos információkért lásd: Configuration Manager Kódrészletek hívása.
' Setup a connection to the local provider.
Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set swbemconnection= swbemLocator.ConnectServer(".", "root\sms")
Set providerLoc = swbemconnection.InstancesOf("SMS_ProviderLocation")
For Each Location In providerLoc
If location.ProviderForLocalSite = True Then
Set swbemconnection = swbemLocator.ConnectServer(Location.Machine, "root\sms\site_" + Location.SiteCode)
Exit For
End If
Next
Call CreateDynamicCollection(swbemconnection, "New Dynamic Collection Name", "New dynamic collection comment.", true, "SELECT * from SMS_R_System", "New Rule Name", "SMS00001")
Sub CreateDynamicCollection(connection, newCollectionName, newCollectionComment, ownedByThisSite, queryForRule, ruleName, limitToCollectionID)
' Create the collection.
Set newCollection = connection.Get("SMS_Collection").SpawnInstance_
newCollection.Name = newCollectionName
newCollection.Comment = newCollectionComment
newCollection.OwnedByThisSite = ownedByThisSite
newCollection.LimitToCollectionID = limitToCollectionID
' Save the new collection and save the collection path for later.
Set collectionPath = newCollection.Put_
' Create a new collection rule object for validation.
Set queryRule = connection.Get("SMS_CollectionRuleQuery")
' Validate the query (good practice before adding it to the collection).
validQuery = queryRule.ValidateQuery(queryForRule)
' Continue with processing, if the query is valid.
If validQuery Then
' Create the query rule.
Set newQueryRule = QueryRule.SpawnInstance_
newQueryRule.QueryExpression = queryForRule
newQueryRule.RuleName = ruleName
' Add the new query rule to a variable.
Set newCollectionRule = newQueryRule
' Get the collection.
Set newCollection = connection.Get(collectionPath.RelPath)
' Add the rules to the collection.
newCollection.AddMembershipRule newCollectionRule
' Call RequestRefresh to initiate the collection evaluator.
newCollection.RequestRefresh False
End If
End Sub
public void CreateDynamicCollection(WqlConnectionManager connection, string newCollectionName, string newCollectionComment, bool ownedByThisSite, string query, string ruleName, string LimitToCollectionID){ try { // Create new SMS_Collection object. IResultObject newCollection = connection.CreateInstance("SMS_Collection"); // Populate the new collection object properties. newCollection["Name"].StringValue = newCollectionName; newCollection["Comment"].StringValue = newCollectionComment; newCollection["OwnedByThisSite"].BooleanValue = ownedByThisSite; newCollection["LimitToCollectionID"].StringValue = LimitToCollectionID; // Save the new collection object and properties. // In this case, it seems necessary to 'get' the object again to access the properties. newCollection.Put(); newCollection.Get(); // Validate the query. Dictionary<string, object> validateQueryParameters = new Dictionary<string, object>(); validateQueryParameters.Add("WQLQuery", query); IResultObject result = connection.ExecuteMethod("SMS_CollectionRuleQuery", "ValidateQuery", validateQueryParameters); // Create query rule. IResultObject newQueryRule = connection.CreateInstance("SMS_CollectionRuleQuery"); newQueryRule["QueryExpression"].StringValue = query; newQueryRule["RuleName"].StringValue = ruleName; // Add the rule. Although not used in this sample, QueryID contains the query identifier. Dictionary<string, object> addMembershipRuleParameters = new Dictionary<string, object>(); addMembershipRuleParameters.Add("collectionRule", newQueryRule); IResultObject queryID = newCollection.ExecuteMethod("AddMembershipRule", addMembershipRuleParameters); // Start collection evaluator. newCollection.ExecuteMethod("RequestRefresh", null); Console.WriteLine("Created collection: " + newCollectionName); } catch (SmsException ex) { Console.WriteLine("Failed to create collection. 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. |
newCollectionName |
-Kezelt: String -Vbscript: String |
A gyűjteményt a Configuration Manager konzolon jelölő egyedi név. |
newCollectionComment |
-Kezelt: String -Vbscript: String |
A gyűjteményt dokumentáló általános megjegyzés vagy megjegyzés. |
ownedByThisSite |
-Kezelt: Boolean -Vbscript: Boolean |
true ha a gyűjtemény a helyi Configuration Manager helyről származik. |
query |
-Kezelt: String -Vbscript: String |
A WQL SELECT utasítás a gyűjtemény feltöltéséhez használt eredményekkel rendelkezik. A utasításnak meg kell adnia egy erőforrásosztály nevét. |
ruleName |
-Kezelt: String -Vbscript: String |
Leíró név, amely azonosítja a szabályt. |
limitToCollectionID |
-Kezelt: String -Vbscript: String |
Gyűjteményazonosító a tagság hatókörének korlátozásához. |
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
System.ComponentModel
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Összeszerelés
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Robusztus programozás
A hibakezeléssel kapcsolatos további információkért lásd: A Configuration Manager hibák ismertetése.
.NET-keretrendszer Security
A Configuration Manager alkalmazások biztonságossá tételével kapcsolatos további információkért lásd: Configuration Manager szerepköralapú felügyelet.
Lásd még
SMS_Collection kiszolgálói WMI-osztály
SMS_CollectionRuleQuery kiszolgálói WMI-osztály
Szoftverterjesztés áttekintéseA központi telepítésekről Objektumokáttekintése– Csatlakozás SMS-szolgáltatóhoz a Configuration Manager-ben felügyelt kód használatával
Csatlakozás SMS-szolgáltatóhoz Configuration Manager WMI használatával