Vytvoření balíčku ovladače pro ovladač systému Windows v Configuration Manager
Balíček pro ovladač nasazení operačního systému vytvoříte v Configuration Manager vytvořením objektu třídy WMI serveru SMS_DriverPackage Server. Pokud chcete do balíčku přidat ovladač, zavolejte metodu AddDriverContent v SMS_DriverPackage třídy.
Balíčky ovladačů se používají k ukládání obsahu přidruženého k ovladačům. Při vytváření balíčku ovladačů by zdrojovým umístěním měla být zpočátku prázdná sdílená složka, ke které má poskytovatel serveru SMS přístup ke čtení a zápisu. Při přidání ovladače do balíčku ovladačů pomocí AddDriverContent
nástroje zkopíruje poskytovatel serveru SMS obsah ze zdrojového umístění ovladače do podadresáře ve sdílené složce balíčku ovladače.
Obsah přidružený k ovladači je nutné přidat do balíčku ovladače a přiřadit ho distribučnímu bodu, aby ho klient mohl použít. Obsah ovladače získáte z objektu třídy služby WMI serveru SMS_CIToContent, kde CI_ID
vlastnost odpovídá identifikátoru ovladače.
Poznámka
Stejný obsah může sdílet více ovladačů. K tomu obvykle dochází v případě, že je ve stejném adresáři více souborů .inf.
AddDriverContent
lze použít k přidání více ovladačů do balíčku současně. Uděláte to tak, že přidáte několik ID obsahu. Parametr bRefreshDPs
by měl být nastaven na false
hodnotu , pokud se provede další volání. Tím se zajistí, že se balíček v distribučním bodě aktualizuje jenom jednou.
Při volání zadáte AddDriverContent
sadu zdrojových umístění balíčků. Obvykle se jedná o vlastnost objektuContentSourcePath
třídy služby WMI serveru SMS_Driver, ale pokud zprostředkovatel nemá přístup k původnímu zdrojovému umístění, může být přepsána.
Vytvoření balíčku ovladače a přidání obsahu ovladače
Nastavte připojení k poskytovateli serveru SMS. Další informace najdete v tématu Základy poskytovatele serveru SMS.
Vytvořte objekt SMS_DriverPackage .
Nastavte
PkgSourceFlag
vlastnost objektuSMS_DriverPackage
na2
(Storage Direct).Potvrďte
SMS_DriverPackage
objekt.SMS_DriverPackage
Získejte objekt.Do metody
ContentIDs
AddDriverContent v parametru vložte seznam ovladačů, které chcete přidat do balíčku.Do parametru vložte seznam cest ke zdroji obsahu ovladače v
AddDriverContent
metoděContentSourcePath
.Zavolejte metodu
AddDriverContent
.K dokončení operace zavolejte metodu RefreshPkgSource ve třídě SMS_DriverPackage .
Přiřaďte balíček ovladače k distribučnímu bodu. Další informace najdete v tématu Přiřazení balíčku k distribučnímu bodu.
Příklad
Následující ukázková metoda vytvoří balíček pro zadaný identifikátor ovladače reprezentovaný CI_ID
vlastností objektu SMS_Driver Server WMI Class . Metoda také přebírá nový název balíčku, popis a cestu ke zdroji balíčku jako parametry.
Poznámka
Parametr packageSourcePath
musí být zadán jako síťová cesta UNC (Universal Naming Convention), například \\localhost\Drivers\ATIVideo\.
Informace o volání ukázkového kódu najdete v tématu Volání Configuration Manager fragmentů kódu.
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;
}
}
Ukázková metoda má následující parametry:
Parametr | Typ | Popis |
---|---|---|
connection |
-Spravované: WqlConnectionManager - VBScript: SWbemServices |
Platné připojení k poskytovateli serveru SMS. |
driverId |
-Spravované: Integer -Vbscript: Integer |
Identifikátor ovladače (SMS_Driver.CI_ID ). |
newPackageName |
-Spravované: String -Vbscript: String |
Název balíčku. |
newPackageDescription |
-Spravované: String -Vbscript: String |
Popis nového balíčku. |
newPackageSourcePath |
-Spravované: String -Vbscript: String |
Platná síťová cesta UNC k ovladači. |
Kompilace kódu
Tento příklad jazyka C# vyžaduje:
Obory názvů
Systému
System.collections.generic
System.text
System.io
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Sestavení
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
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_Driver
Metoda AddDriverContent v SMS_DriverPackage třídy