Hinzufügen einer Kategorie zu einem Windows-Treiber
In Configuration Manager fügen Sie einem Windows-Treiber eine Kategorie hinzu, indem Sie den eindeutigen Bezeichner für die Kategorie der SMS_Driver Server-WMI-KlassenarrayeigenschaftCategoryInstance_UniqueIDs
hinzufügen. Das Array enthält mindestens einen Zeichenfolgenbezeichner, der dem Eigenschaftswert der SMS_CategoryInstance Server WMI ClassCategoryInstance_UniqueID
entspricht. Es gibt eine Instanz von SMS_CategoryInstance WMI-Serverklasseobjekt für jede Kategorie im System.
Hinweis
Dem eindeutigen Bezeichner für eine Treiberkategorie wird der Text "DriverCategories" vorangestellt. Andere Kategorietypen weisen einen anderen Text auf.
Eine Kategorie enthält Lokalisierungsinformationen, und aus der Eigenschaft SMS_CategoryInstance Server WMI ClassLocalizedCategoryInstanceName
wird der Anzeigename der Kategorie abgerufen.
So fügen Sie einem Windows-Treiber eine Kategorie hinzu
Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.
Rufen Sie das SMS_Driver-Objekt für den Treiber ab, dem Sie eine Kategorie hinzufügen möchten.
Rufen Sie den Kategorienamensbezeichner aus dem SMS_CategoryInstance Server-WMI-Klassenobjekt ab, das der gewünschten Kategorie entspricht.
Fügen Sie den Kategoriebezeichner der Objektarrayeigenschaft SMS_Driver Server-WMI-Klasse
CategoryInstance_UniqueIDs
hinzu.Committen Sie die Änderungen der SMS_Driver Server-WMI-Klasse .
Beispiel
Die folgende Beispielmethode fügt einem Windows-Treiber eine Kategorie hinzu.
driverID
ist ein gültiges SMS_Driver Server-WMI-Klassenobjekt . Weitere Informationen finden Sie unter Informationen zur Treiberverwaltung für die Betriebssystembereitstellung.
Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.
Sub AddDriverCategory(connection,driver,categoryName)
Dim categories
Dim category
Dim driverCategoryID
Dim categoryID
Dim results
Dim existingCategory
' Find the category that matches the supplied category name.
Set results = _
connection.ExecQuery("SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" _
+ categoryName+ "'")
' If the category was found, add it to the driver.
For Each category in results
If IsNull(driver.CategoryInstance_UniqueIDs) or UBound (driver.CategoryInstance_UniqueIDs) = -1 Then
' It is empty. Add the category.
driver.CategoryInstance_UniqueIDs = Array(category.CategoryInstance_UniqueID)
Else
' Determine if the category is already applied to the driver.
For each existingCategory in driver.CategoryInstance_UniqueIDs
if existingCategory = category.CategoryInstance_UniqueID Then
WScript.Echo "Already added"
Exit Sub
End If
Next
' Add the category.
categories = driver.CategoryInstance_UniqueIDs
Redim Preserve categories (UBound (driver.CategoryInstance_UniqueIDs)+1)
categories (Ubound (categories)) = category.CategoryInstance_UniqueID
driver.CategoryInstance_UniqueIDs = categories
End If
driver.Put_
Next
End Sub
public void AddDriverCategory(
WqlConnectionManager connection,
IResultObject driver,
string categoryName)
{
try
{
// Get the category.
IResultObject results = connection.QueryProcessor.ExecuteQuery(
"SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" + categoryName + "'");
ArrayList driverCategories = new ArrayList(driver["CategoryInstance_UniqueIDs"].StringArrayValue);//;driverCategories);
foreach (IResultObject category in results)
{
foreach (string driverCategory in driverCategories)
{
// Do nothing if the driver already has the category.
if (driverCategory == category["CategoryInstance_UniqueID"].StringValue)
{
Console.WriteLine("Already exists");
return;
}
}
// Add the category to the action.
driverCategories.Add(category["CategoryInstance_UniqueID"].StringValue);
}
// Update the driver.
driver["CategoryInstance_UniqueIDs"].StringArrayValue = (string[])driverCategories.ToArray(typeof(string));
driver.Put();
}
catch (SmsException e)
{
Console.WriteLine("Failed to add the category" + e.Message);
throw;
}
}
Die Beispielmethode verfügt über die folgenden Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
Connection |
-Verwalteten: WqlConnectionManager – VBScript: SWbemServices |
Eine gültige Verbindung mit dem SMS-Anbieter. |
driver |
-Verwalteten: IResultObject -Vbscript: SWbemObject |
Der Windows-Treiber. Es handelt sich um eine Instanz von SMS_Driver Server-WMI-Klasse. |
categoryName |
-Verwalteten: String -Vbscript: String |
Der Name einer vorhandenen Kategorie. Dies entspricht der eigenschaft SMS_CategoryInstance Server WMI ClassLocalizedCategoryInstanceName . |
Kompilieren des Codes
Für dieses C#-Beispiel ist Folgendes erforderlich:
Namespaces
System
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robuste Programmierung
Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.
.NET Framework-Sicherheit
Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.
Siehe auch
Informationen zur Treiberverwaltung für die Betriebssystembereitstellung
Entfernen einer Kategorie aus einem Windows-Treiber