Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az operációs rendszer központi telepítési illesztőprogramjának csomagja Configuration Manager egy SMS_DriverPackage kiszolgálói WMI-osztályobjektum létrehozásával hozható létre. Ha hozzá szeretne adni egy illesztőprogramot a csomaghoz, hívja meg az AddDriverContent metódust a Class SMS_DriverPackage.
Az illesztőprogram-csomagok az illesztőprogramokhoz társított tartalmak tárolására szolgálnak. Illesztőprogram-csomag létrehozásakor a forráshelynek kezdetben üres megosztásnak kell lennie, amelyhez az SMS-szolgáltató olvasási és írási hozzáféréssel rendelkezik. Amikor hozzáad egy illesztőprogramot egy illesztőprogram-csomaghoz a használatával AddDriverContent
, az SMS-szolgáltató átmásolja a tartalmat az illesztőprogram forráshelyéről az illesztőprogram-csomagmegosztás egyik alkönyvtárára.
Az illesztőprogramhoz társított tartalmat hozzá kell adni egy illesztőprogram-csomaghoz, és hozzá kell rendelni egy terjesztési ponthoz, mielőtt az ügyfél használhatja. Az illesztőprogram tartalmát a SMS_CIToContent kiszolgálói WMI-osztály objektumból kapja, ahol a CI_ID
tulajdonság megegyezik az illesztőprogram-azonosítóval.
Megjegyzés:
Több illesztőprogram is megoszthatja ugyanazt a tartalmat. Ez általában akkor fordul elő, ha ugyanabban a könyvtárban több .inf fájl található.
AddDriverContent
segítségével egyszerre több illesztőprogramot is hozzáadhat egy csomaghoz. Ehhez adjon hozzá több tartalomazonosítót. A bRefreshDPs
paramétert értékre false
kell állítani, ha újabb hívásra kerül sor. Ez biztosítja, hogy a csomag csak egyszer frissül a terjesztési ponton.
A hívásakor AddDriverContent
meg kell adnia a csomag forráshelyeit. Ez általában a SMS_Driver kiszolgálói WMI-osztály objektumtulajdonság ContentSourcePath
, de felül lehet bírálni, ha a szolgáltató nem rendelkezik hozzáféréssel az eredeti forráshelyhez.
Illesztőprogram-csomag létrehozása és illesztőprogram-tartalom hozzáadása
Állítson be egy kapcsolatot az SMS-szolgáltatóval. További információ: Az SMS-szolgáltató alapjai.
Hozzon létre egy SMS_DriverPackage objektumot.
Állítsa az
PkgSourceFlag
objektum tulajdonságát aSMS_DriverPackage
(Közvetlen tárolás) értékre2
.Véglegesítse az
SMS_DriverPackage
objektumot.Az objektum lekérése
SMS_DriverPackage
.Helyezze el a csomaghoz hozzáadni kívánt illesztőprogramok listáját az AddDriverContent metódusban
ContentIDs
a paraméterben.Helyezze el az illesztőprogram-tartalom forrásútvonalainak listáját a metódusban
ContentSourcePath
aAddDriverContent
paraméterben.Hívja meg a metódust
AddDriverContent
.Hívja meg a RefreshPkgSource metódust a SMS_DriverPackage osztályban a művelet befejezéséhez.
Rendelje hozzá az illesztőprogram-csomagot egy terjesztési ponthoz. További információ: Csomag hozzárendelése terjesztési ponthoz.
Példa
Az alábbi példametódus létrehoz egy csomagot egy megadott illesztőprogram-azonosítóhoz, amelyet a CI_ID
SMS_Driver kiszolgálói WMI-osztály objektum tulajdonsága jelöl. A metódus egy új csomagnevet, leírást és csomag forrásútvonalát is paraméterekként veszi fel.
Megjegyzés:
A packageSourcePath
paramétert univerzális elnevezési konvenció (UNC) hálózati elérési útként kell megadni, például: \\localhost\Drivers\ATIVideo\.
A mintakód meghívásával kapcsolatos információkért lásd: Configuration Manager Kódrészletek hívása.
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;
}
}
A példametódus a következő paraméterekkel rendelkezik:
Paraméter | Típus | Leírás |
---|---|---|
connection |
-Kezelt: WqlConnectionManager - VBScript: SWbemServices |
Érvényes kapcsolat az SMS-szolgáltatóval. |
driverId |
-Kezelt: Integer - VBScript: Integer |
Az illesztőprogram azonosítója (SMS_Driver.CI_ID ). |
newPackageName |
-Kezelt: String - VBScript: String |
A csomag neve. |
newPackageDescription |
-Kezelt: String - VBScript: String |
Az új csomag leírása. |
newPackageSourcePath |
-Kezelt: String - VBScript: String |
Az illesztőprogram érvényes UNC hálózati elérési útja. |
A kód fordítása
Ehhez a C#-példához a következőre van szükség:
Névterek
Rendszer
System.Collections.Generic
System.Text
System.IO
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Összeszerelés
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robusztus programozás
A hibakezeléssel kapcsolatos további információkért lásd: A Configuration Manager hibák ismertetése.
.NET-keretrendszer Security
A Configuration Manager alkalmazások biztonságossá tételével kapcsolatos további információkért lásd: Configuration Manager szerepköralapú felügyelet.
Lásd még
SMS_Driver kiszolgálói WMI-osztályAddDriverContent metódusa a SMS_DriverPackage