Jak dodać kategorię do sterownika systemu Windows
W programie Configuration Manager należy dodać kategorię do sterownika systemu Windows, dodając unikatowy identyfikator kategorii do właściwości tablicy klasy CategoryInstance_UniqueIDs
SMS_Driver Server WMI. Tablica zawiera co najmniej jeden identyfikator ciągu zgodny z wartością właściwości SMS_CategoryInstance Server WMI ClassCategoryInstance_UniqueID
. Istnieje wystąpienie obiektu klasy WMI serwera SMS_CategoryInstance dla każdej kategorii w systemie.
Uwaga
Unikatowy identyfikator kategorii sterownika jest uzupełniony tekstem "DriverCategories". Inne typy kategorii mają inny tekst.
Kategoria zawiera informacje o lokalizacji i to z właściwości SMS_CategoryInstance Server WMI ClassLocalizedCategoryInstanceName
jest uzyskiwana nazwa wyświetlana kategorii.
Aby dodać kategorię do sterownika systemu Windows
Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.
Pobierz obiekt SMS_Driver dla sterownika, do który chcesz dodać kategorię.
Pobierz identyfikator nazwy kategorii z obiektu klasy WMI serwera SMS_CategoryInstance, który odpowiada żądanej kategorii.
Dodaj identyfikator kategorii do właściwości tablicy obiektów
CategoryInstance_UniqueIDs
klasy WMI serwera SMS_Driver.Zatwierdź zmiany klasy WMI serwera SMS_Driver .
Przykład
Poniższa przykładowa metoda dodaje kategorię do sterownika systemu Windows.
driverID
jest prawidłowym obiektem klasy WMI serwera SMS_Driver . Aby uzyskać więcej informacji, zobacz About Operating System Deployment Driver Management (Informacje o zarządzaniu sterownikami wdrażania systemu operacyjnego).
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu programu Configuration Manager.
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;
}
}
Przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
Connection |
-Zarządzane: WqlConnectionManager - VBScript: SWbemServices |
Prawidłowe połączenie z dostawcą programu SMS. |
driver |
-Zarządzane: IResultObject - VBScript: SWbemObject |
Sterownik systemu Windows. Jest to wystąpienie klasy WMI serwera SMS_Driver. |
categoryName |
-Zarządzane: String - VBScript: String |
Nazwa istniejącej kategorii. Jest to zgodne z właściwością klasy LocalizedCategoryInstanceName WMI serwera SMS_CategoryInstance. |
Kompilowanie kodu
Ten przykład języka C# wymaga:
Przestrzenie nazw
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Montaż
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Niezawodne programowanie
Aby uzyskać więcej informacji na temat obsługi błędów, zobacz About Configuration Manager Errors (Informacje o błędach programu Configuration Manager).
Zabezpieczenia programu .NET Framework
Aby uzyskać więcej informacji na temat zabezpieczania aplikacji programu Configuration Manager, zobacz Administracja oparta na rolach programu Configuration Manager.
Zobacz też
Informacje o zarządzaniu sterownikami wdrażania systemu operacyjnego
Jak usunąć kategorię ze sterownika systemu Windows