Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V Configuration Manager aplikace používá serverovou třídu služby WMI SMS_Collection k definování atributů kolekce, jako jsou pravidla členství a plán aktualizace. Vlastnost MemberClassName
obsahuje název třídy vygenerované systémem, který obsahuje členy kolekce.
Členové kolekce jsou určeni pomocí přímých pravidel, pravidel dotazů nebo obojího. Přímá pravidla definují explicitní prostředek a pravidla dotazů definují dynamickou kolekci, která se pravidelně vyhodnocuje na základě aktuálního stavu webu.
Poznámka
Při vytváření pravidla přímého členství nezapomeňte, že pravidlo musí mít vždy stejný název jako počítač, který pravidlo určuje.
Vaše aplikace používá třídu služby WMI SMS_CollectionRuleDirect Server k definování přímých pravidel. Tento přístup se používá pro prostředky, které jsou statické povahy. Pokud máte například omezený počet licencí pro konkrétní softwarovou aplikaci, měla by aplikace používat přímá pravidla k inzerování konkrétním počítačům nebo uživatelům.
Kolekce jsou úzce svázány s balíčky, programy a reklamami. Další informace najdete v tématu Přehled distribuce softwaru.
Následující příklady vyžadují následující hodnoty:
Objekt připojení rozhraní WMI (Windows Management Instrumentation).
Nový název statické kolekce.
Nový komentář ke statické kolekci.
Příznak "vlastníkem tohoto webu".
Název třídy prostředků.
ID prostředku.
Identifikátor kolekce pro omezení rozsahu členství.
Poznámka
Pokud byla ze serveru lokality odebrána kolekce Všechny systémy (SMS00001), nebude příklad jazyka VBScript fungovat.
Příklad volání podprogramu v jazyce Visual Basic:
Call CreateStaticCollection(swbemconnection, "New Static Collection Name", "New static collection comment.", true, "SMS_R_System", 2, "SMS00001")
Příklad volání metody v jazyce C#:
CreateStaticCollection (WMIConnection, "New Static Collection Name", "New static collection comment.", true, "SMS_R_System", 2, "SMS00001")
Vytvoření statické kolekce
Nastavte připojení k poskytovateli serveru SMS. Další informace najdete v tématu Základy poskytovatele serveru SMS.
Vytvořte nový objekt kolekce pomocí třídy služby WMI SMS_Collection Server .
Vytvořte přímé pravidlo pomocí třídy služby WMI SMS_CollectionRuleDirect Server .
Přidejte pravidlo do kolekce.
Aktualizujte kolekci.
Příklad
Následující ukázková metoda vytvoří kolekci.
Informace o volání ukázkového kódu najdete v tématu Volání Configuration Manager fragmentů kódu.
' Set up 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 CreateStaticCollection(swbemconnection, "New Static Collection Name", "New static collection comment.", true, "SMS_R_System", 2, "SMS00001")
Sub CreateStaticCollection(connection, newCollectionName, newCollectionComment, ownedByThisSite, resourceClassName, resourceID, limitToCollectionID)
' Create the collection.
Set newCollection = connection.Get("SMS_Collection").SpawnInstance_
newCollection.Comment = newCollectionComment
newCollection.Name = newCollectionName
newCollection.OwnedByThisSite = ownedByThisSite
newCollection.LimitToCollectionID = limitToCollectionID
' Save the new collection and save the collection path for later.
Set collectionPath = newCollection.Put_
' Create the direct rule.
Set newDirectRule = connection.Get("SMS_CollectionRuleDirect").SpawnInstance_
newDirectRule.ResourceClassName = resourceClassName
newDirectRule.ResourceID = resourceID
' Add the new query rule to a variable.
Set newCollectionRule = newDirectRule
' 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 Sub
public void CreateStaticCollection(WqlConnectionManager connection, string newCollectionName, string newCollectionComment, bool ownedByThisSite, string resourceClassName, int resourceID, string limitToCollectionID)
{
try
{
// Create a new SMS_Collection object.
IResultObject newCollection = connection.CreateInstance("SMS_Collection");
// Populate new collection 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();
// Create a new static rule object.
IResultObject newStaticRule = connection.CreateInstance("SMS_CollectionRuleDirect");
newStaticRule["ResourceClassName"].StringValue = resourceClassName;
newStaticRule["ResourceID"].IntegerValue = resourceID;
// Add the rule. Although not used in this sample, staticID contains the query identifier.
Dictionary<string, object> addMembershipRuleParameters = new Dictionary<string, object>();
addMembershipRuleParameters.Add("collectionRule", newStaticRule);
IResultObject staticID = newCollection.ExecuteMethod("AddMembershipRule", addMembershipRuleParameters);
// Start collection evaluator.
Dictionary<string, object> requestRefreshParameters = new Dictionary<string, object>();
requestRefreshParameters.Add("IncludeSubCollections", false);
newCollection.ExecuteMethod("RequestRefresh", requestRefreshParameters);
// Output message.
Console.WriteLine("Created collection" + newCollectionName);
}
catch (SmsException ex)
{
Console.WriteLine("Failed to create collection. Error: " + ex.Message);
throw;
}
}
Ukázková metoda má následující parametry:
Parametr | Typ | Popis |
---|---|---|
connection |
-Spravované: WqlConnectionManager - VBScript: SWbemServices |
Platné připojení k poskytovateli serveru SMS. |
newCollectionName |
-Spravované: String -Vbscript: String |
Jedinečný název, který představuje kolekci v konzole Configuration Manager. |
newCollectionComment |
-Spravované: String -Vbscript: String |
Obecný komentář nebo poznámka, že dokumentuje kolekci. |
ownedByThisSite |
-Spravované: Boolean -Vbscript: Boolean |
true pokud kolekce pochází z místního webu Configuration Manager. |
resourceClassName |
-Spravované: String -Vbscript: String |
Název prostředku objektu statického pravidla. |
resourceID |
-Spravované: Integer -Vbscript: Integer |
ID prostředku. |
limitToCollectionID |
-Spravované: String -Vbscript: String |
Identifikátor kolekce pro omezení rozsahu členství. |
Kompilace kódu
Příklad jazyka C# vyžaduje:
Obory názvů
Systému
System.collections.generic
System.componentmodel
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Sestavení
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Robustní programování
Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.
Zabezpečení rozhraní .NET Framework
Další informace o zabezpečení Configuration Manager aplikací najdete v tématu Configuration Manager správa na základě rolí.
Viz taky
Serverová třída služby WMI SMS_Collection
Serverová třída služby WMI SMS_CollectionRuleDirect
Přehled distribuce softwaruO nasazení ObjektyPřehledPřipojení k poskytovateli serveru SMS v Configuration Manager pomocí spravovaného kódu
Připojení k poskytovateli serveru SMS v Configuration Manager pomocí rozhraní WMI