Entfernen einer Kategorie aus einem Windows-Treiber
In Configuration Manager entfernen Sie eine Kategorie aus einem Windows-Treiber, indem Sie den eindeutigen Bezeichner für die Kategorie aus der Arrayeigenschaft SMS_Driver Server-WMI-KlasseCategoryInstance_UniqueIDs
entfernen.
So entfernen Sie eine Kategorie aus einem Windows-Treiber
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, aus dem Sie die Kategorie entfernen möchten.
Rufen Sie den Kategorienamensbezeichner aus dem SMS_CategoryInstance Server-WMI-Klassenobjekt ab, das der gewünschten Kategorie entspricht.
Entfernen Sie den Kategoriebezeichner aus der Objektarrayeigenschaft
CategoryInstance_UniqueIDs
SMS_Driver Server WMI Class.Committen Sie die Änderungen der SMS_Driver Server-WMI-Klasse .
Beispiel
Die folgende Beispielmethode entfernt eine Kategorie aus einem Windows-Treiber.
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 RemoveDriverCategory(connection,driver,categoryName)
Dim results
Dim driverCategoryID
Dim category
Dim categories
Dim i
If IsNull(driver.CategoryInstance_UniqueIDs) _
or UBound (driver.CategoryInstance_UniqueIDs) = -1 Then
' There are no categories, so quit.
Wscript.Echo "No categories found"
Exit Sub
End If
Set results = _
connection.ExecQuery("SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" _
+ categoryName+ "'")
' If the category was found, delete, if it is there, from the driver.
For Each category In results
' Destination for copied categories.
categories = Array(driver.CategoryInstance_UniqueIDs)
i=0
For Each driverCategoryID in driver.CategoryInstance_UniqueIDs
If driverCategoryID = category.CategoryInstance_UniqueID Then
' Found it, so skip it.
Redim Preserve categories (UBound(categories))
Else
' Copy the category.
categories(i) = driverCategoryID
i=i+1
End If
Next
' Make sure the array is empty.
if i = 0 Then
Redim categories(-1)
End If
driver.CategoryInstance_UniqueIDs = categories
driver.Put_
Next
End Sub
public void RemoveDriverCategory(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);
// Remove the category from the driver.
foreach (IResultObject category in results)
{
driverCategories.Remove(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 remove 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 Classe LocalizedCategoryInstanceName . |
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
Hinzufügen einer Kategorie zu einem Windows-Treiber