Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pakiet dla sterownika wdrażania systemu operacyjnego można utworzyć w Configuration Manager, tworząc obiekt klasy WMI serwera SMS_DriverPackage. Aby dodać sterownik do pakietu, należy wywołać metodę AddDriverContent w klasie SMS_DriverPackage.
Pakiety sterowników są używane do przechowywania zawartości skojarzonej ze sterownikami. Podczas tworzenia pakietu sterowników lokalizacja źródłowa powinna początkowo być pustym udziałem, do których dostawca programu SMS ma dostęp do odczytu i zapisu. Po dodaniu sterownika do pakietu sterowników przy użyciu AddDriverContentprogramu dostawca programu SMS skopiuje zawartość z lokalizacji źródłowej sterownika do podkatalogu w udziale pakietów sterowników.
Należy dodać zawartość skojarzoną ze sterownikiem do pakietu sterowników i przypisać ją do punktu dystrybucji, zanim klient będzie mógł z niego korzystać. Zawartość sterownika jest pobierana z obiektu klasy WMI serwera SMS_CIToContent, gdzie CI_ID właściwość jest zgodna z identyfikatorem sterownika.
Uwaga
Wiele sterowników może udostępniać tę samą zawartość. Zwykle dzieje się tak, gdy w tym samym katalogu znajduje się wiele plików inf.
AddDriverContent Może służyć do dodawania wielu sterowników do pakietu jednocześnie. W tym celu dodaj wiele identyfikatorów zawartości. Parametr bRefreshDPs powinien być ustawiony na false wartość , jeśli zostanie wykonane kolejne wywołanie. Dzięki temu pakiet jest aktualizowany tylko raz w punkcie dystrybucji.
Podczas wywoływania AddDriverContentpolecenia należy określić zestaw lokalizacji źródłowych pakietów. Zazwyczaj jest to właściwość obiektu ContentSourcePathklasy WMI serwera SMS_Driver, ale można ją zastąpić, jeśli dostawca nie ma dostępu do oryginalnej lokalizacji źródłowej.
Aby utworzyć pakiet sterowników i dodać zawartość sterownika
Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.
Utwórz obiekt SMS_DriverPackage .
Ustaw właściwość
PkgSourceFlagobiektu naSMS_DriverPackage(Bezpośrednie miejsce do2magazynowania).SMS_DriverPackageZatwierdź obiekt.SMS_DriverPackagePobierz obiekt.Umieść listę sterowników, które chcesz dodać do pakietu w metodzie
ContentIDsAddDriverContent w parametrze.Umieść listę ścieżek źródła zawartości sterownika w metodzie
AddDriverContentContentSourcePathw parametrze.Wywołaj
AddDriverContentmetodę .Wywołaj metodę RefreshPkgSource w klasie SMS_DriverPackage , aby ukończyć operację.
Przypisz pakiet sterowników do punktu dystrybucji. Aby uzyskać więcej informacji, zobacz How to Assign a Package to a Distribution Point (Jak przypisać pakiet do punktu dystrybucji).
Przykład
Poniższa przykładowa metoda tworzy pakiet dla podanego identyfikatora sterownika reprezentowanego przez CI_ID właściwość obiektu klasy WMI serwera SMS_Driver . Metoda przyjmuje również nową nazwę pakietu, opis i ścieżkę źródłową pakietu jako parametry.
Uwaga
Parametr packageSourcePath musi być podany jako ścieżka sieciowa uniwersalnej konwencji nazewnictwa (UNC), na przykład \\localhost\Drivers\ATIVideo\.
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.
Sub CreateDriverPackage(connection, driverId, newPackageName, newPackageDescription, newPackageSourcePath)
Dim newPackage
Dim driver
Dim packageSources
Dim refreshDPs
Dim content
Dim path
Dim contentIds
Dim index
Dim item
' Create the new driver package object.
Set newPackage = connection.Get("SMS_DriverPackage").SpawnInstance_
' Populate the new package properties.
newPackage.Name = newPackageName
newPackage.Description = newPackageDescription
newPackage.PkgSourceFlag = 2 ' Storage direct
newPackage.PkgSourcePath = newPackageSourcePath
' Save the package.
path=newPackage.Put_
' Get the newly created package (Do this to call AddDriverContent).
Set newPackage=connection.Get(path)
' Get the driver
Set driver = connection.Get("SMS_Driver.CI_ID=" & driverId )
' Get the driver content.
Set content = connection.ExecQuery("Select * from SMS_CIToContent where CI_ID=" & driverId)
If content.Count = 0 Then
Wscript.Echo "No content found"
Exit Sub
End If
' Create Array to hold driver content identifiers.
contentIds = Array()
ReDim contentIds(content.Count-1)
index = 0
For Each item In content
contentIds(index) = item.ContentID
index = index+1
Next
' Create sources path Array.
packageSources = Array(driver.ContentSourcePath)
refreshDPs = False
' Add the driver content.
Call newPackage.AddDriverContent(contentIds,packageSources,refreshDPs)
wscript.echo "Done"
End Sub
public void CreateDriverPackage(
WqlConnectionManager connection,
int driverId,
string newPackageName,
string newPackageDescription,
string newPackageSourcePath)
{
try
{
if (Directory.Exists(newPackageSourcePath) == false)
{
throw new DirectoryNotFoundException("Package source path does not exist");
}
// Create new package object.
IResultObject newPackage = connection.CreateInstance("SMS_DriverPackage");
IResultObject driver = connection.GetInstance("SMS_Driver.CI_ID=" + driverId);
newPackage["Name"].StringValue = newPackageName;
newPackage["Description"].StringValue = newPackageDescription;
newPackage["PkgSourceFlag"].IntegerValue = (int)PackageSourceFlag.StorageDirect;
newPackage["PkgSourcePath"].StringValue = newPackageSourcePath;
// Save new package and new package properties.
newPackage.Put();
newPackage.Get();
// Get the content identifier.
List<int> contentIDs = new List<int>();
IResultObject content = connection.QueryProcessor.ExecuteQuery("Select * from SMS_CIToContent where CI_ID=" + driverId);
foreach (IResultObject ro in content)
{
contentIDs.Add(ro["ContentID"].IntegerValue);
}
// Get the package source.
List<string> packageSources = new List<string>();
packageSources.Add(driver["ContentSourcePath"].StringValue);
Dictionary<string, Object> inParams = new Dictionary<string, object>();
inParams.Add("bRefreshDPs", true);
inParams.Add("ContentIDs", contentIDs.ToArray());
inParams.Add("ContentSourcePath", packageSources.ToArray());
newPackage.ExecuteMethod("AddDriverContent", inParams);
}
catch (SmsException ex)
{
Console.WriteLine("Failed to create package. Error: " + ex.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. |
driverId |
-Zarządzane: Integer- VBScript: Integer |
Identyfikator sterownika (SMS_Driver.CI_ID). |
newPackageName |
-Zarządzane: String- VBScript: String |
Nazwa pakietu. |
newPackageDescription |
-Zarządzane: String- VBScript: String |
Opis nowego pakietu. |
newPackageSourcePath |
-Zarządzane: String- VBScript: String |
Prawidłowa ścieżka sieci UNC do sterownika. |
Kompilowanie kodu
Ten przykład języka C# wymaga:
Przestrzenie nazw
System
System.Collections.Generic
System.Text
System.IO
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 Informacje o błędach Configuration Manager.
zabezpieczenia .NET Framework
Aby uzyskać więcej informacji na temat zabezpieczania aplikacji Configuration Manager, zobacz Configuration Manager administracja oparta na rolach.
Zobacz też
SMS_Driver Server WMI ClassAddDriverContent Method in Class SMS_DriverPackage