Angeben der unterstützten Plattformen für einen Treiber
In Configuration Manager geben Sie die unterstützten Plattformen eines Treibers in der SDMPackageXML
Eigenschaften-XML des SMS_Driver Server-WMI-Klassenobjekts des Treibers an. Der XML-Code enthält einen Knoten PlatformApplicabilityConditions
, dem Sie Elemente für jede Plattform hinzufügen PlatformApplicabilityCondition
, die der Treiber unterstützt.
Hinweis
Sie sollten nur Plattformen hinzufügen, die in einem SMS_SupportedPlatforms Server WMI Class-Objekt aufgeführt sind. Treiber können nur für Hauptversionen des Betriebssystems bedingt werden, d. h., es ist nicht möglich, Treiber auf Service Packs zu verwenden.
Achtung
Der unterstützte Plattformteil von SDMPackageXML
ist der einzige Teil des CI-XML-Schemas, der bearbeitet werden kann. Sie sollten keine Änderungen an anderen Teilen des XML-Codes vornehmen.
Der folgende XML-Code veranschaulicht einen Treiber, der zwei Plattformen unterstützt. Weitere Informationen zum unterstützten Plattformschema finden Sie unter Schema der unterstützten Plattformen des Betriebssystembereitstellungstreibers.
<PlatformApplicabilityConditions>
<PlatformApplicabilityCondition DisplayName="All x64 Windows XP Professional" MaxVersion="5.20.9999.9999" MinVersion="5.20.3790.0" Name="Win NT" Platform="x64">
<Query1>SELECT * FROM Win32_OperatingSystem WHERE BuildNumber = '3790' AND OSType=18 AND ProductType=1</Query1>
<Query2>SELECT * FROM Win32_Processor WHERE Architecture=9 AND DataWidth=64</Query2>
</PlatformApplicabilityCondition>
<PlatformApplicabilityCondition DisplayName="All x86 Windows 2000" MaxVersion="5.00.9999.9999" MinVersion="5.00.0000.0" Name="Win NT" Platform="I386">
<Query1>SELECT * FROM Win32_OperatingSystem WHERE BuildNumber = '2195' AND OSType=18 AND ServicePackMajorVersion >= 4</Query1>
<Query2>SELECT * FROM Win32_Processor WHERE Architecture=0</Query2>
</PlatformApplicabilityCondition>
</PlatformApplicabilityConditions>
Verwenden Sie zum Überprüfen der Anwendbarkeitsanforderungen für die Plattform die Eigenschaft der SMS_SupportedPlatforms Server-WMI-KlasseCondition
für die erforderliche Plattform.
So geben Sie die unterstützten Plattformen für einen Treiber an
Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.
Rufen Sie das SMS_Driver Server-WMI-Klassenobjekt für den Treiber ab. Der Treiber wird durch die Schlüsseleigenschaft
CI_ID
identifiziert. Informationen zum Abrufen von Objekten mithilfe einer Schlüsseleigenschaft finden Sie unter How to Read a Configuration Manager Object by Using Managed Code (Lesen eines Configuration Manager-Objekts mithilfe von verwaltetem Code).Aktualisieren Sie die Treiber-XML.
Committen Sie die Änderungen zurück an den SMS-Anbieter.
Beispiel
Die folgende Beispielmethode fügt dem Treiber, der durch objDriver
identifiziert wird, eine unterstützte Plattform hinzu. Mit dem folgenden aufrufenden Code wird beispielsweise das Betriebssystem Windows XP Professional x64 der Treiberliste objDriver
der unterstützten Plattformen hinzugefügt. Sie können die Details für eine bestimmte Plattform aus der zugehörigen SMS_SupportedPlatforms
Objektinstanz abrufen.
AddSupportedPlatform objDriver, "All x64 Windows XP Professional", "5.20.9999.9999","5.20.3790.0", "Win NT","x64", "SELECT * FROM Win32_OperatingSystem WHERE BuildNumber = 3790 AND OSType=18 AND ProductType=1", "SELECT * FROM Win32_Processor WHERE Architecture=9 AND DataWidth=64"
Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.
Sub AddSupportedPlatform( objDriver, sDisplayName, sMaxVersion, sMinVersion, sName, sPlatform, sQuery1, sQuery2 )
Dim xmlDoc
Dim objPlatformNode
Dim objAttr
Dim objQuery1Node
Dim objQuery2Node
Dim objPlatformsNode
Dim objDriverNode
' Load the SDM Package XML.
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.async = False
xmlDoc.loadXML(objDriver.Properties_.item("SDMPackageXML"))
xmlDoc.setProperty _
"SelectionNamespaces","xmlns:dcm='http://schemas.microsoft.com/SystemsCenterConfigurationManager/2006/03/24/DesiredConfiguration'"
' Create a new platform node.
Set objPlatformNode = xmlDoc.createNode _
( 1, "PlatformApplicabilityCondition", _
"http://schemas.microsoft.com/SystemsCenterConfigurationManager/2006/03/24/DesiredConfiguration")
' Set DisplayName.
Set objAttr = xmlDoc.createAttribute("DisplayName")
objAttr.value = sDisplayName
objPlatformNode.setAttributeNode(objAttr)
' Set MaxVersion.
Set objAttr = xmlDoc.createAttribute("MaxVersion")
objAttr.value = sMaxVersion
objPlatformNode.setAttributeNode(objAttr)
' Set MinVersion.
Set objAttr = xmlDoc.createAttribute("MinVersion")
objAttr.value = sMinVersion
objPlatformNode.setAttributeNode(objAttr)
' Set Name.
Set objAttr = xmlDoc.createAttribute("Name")
objAttr.value = sName
objPlatformNode.setAttributeNode(objAttr)
' Set Platform.
Set objAttr = xmlDoc.createAttribute("Platform")
objAttr.value = sPlatform
objPlatformNode.setAttributeNode(objAttr)
' Set Query1.
Set objQuery1Node = xmlDoc.createNode(1, "Query1", "http://schemas.microsoft.com/SystemsCenterConfigurationManager/2006/03/24/DesiredConfiguration")
objQuery1Node.text = sQuery1
objPlatformNode.appendChild(objQuery1Node)
' Set Query2.
Set objQuery2Node = xmlDoc.createNode(1, "Query2", "http://schemas.microsoft.com/SystemsCenterConfigurationManager/2006/03/24/DesiredConfiguration")
objQuery2Node.text = sQuery2
objPlatformNode.appendChild(objQuery2Node)
' Append to platforms node.
Set objPlatformsNode = xmlDoc.selectSingleNode("/dcm:DesiredConfigurationDigest/dcm:Driver/dcm:PlatformApplicabilityConditions")
objPlatformsNode.appendChild(objPlatformNode)
' Increment the version number.
Set objDriverNode = xmlDoc.selectSingleNode("/dcm:DesiredConfigurationDigest/dcm:Driver")
Set objAttr = objDriverNode.attributes.getNamedItem("Version")
objAttr.value = objAttr.value + 1
' Save the object.
objDriver.Properties_.item("SDMPackageXML") = xmlDoc.xml
objDriver.Put_
End Sub
public void AddSupportedPlatform(
IResultObject driver,
string displayName,
string maxVersion,
string minVersion,
string name,
string platform,
string query1,
string query2)
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(driver["SDMPackageXML"].StringValue);
string dcmXmlNamespace = "http://schemas.microsoft.com/SystemsCenterConfigurationManager/2006/03/24/DesiredConfiguration";
XmlNode condition = xmlDoc.CreateNode
(XmlNodeType.Element, "PlatformApplicabilityCondition", dcmXmlNamespace);
XmlAttribute displayNameAttribute = xmlDoc.CreateAttribute("DisplayName");
displayNameAttribute.Value = displayName;
condition.Attributes.SetNamedItem(displayNameAttribute);
XmlAttribute osMaxVersionAttribute = xmlDoc.CreateAttribute("MaxVersion");
osMaxVersionAttribute.Value = maxVersion;
condition.Attributes.SetNamedItem(osMaxVersionAttribute);
XmlAttribute osMinVersionAttribute = xmlDoc.CreateAttribute("MinVersion");
osMinVersionAttribute.Value = minVersion;
condition.Attributes.SetNamedItem(osMinVersionAttribute);
XmlAttribute osNameAttribute = xmlDoc.CreateAttribute("Name");
osNameAttribute.Value = name;
condition.Attributes.SetNamedItem(osNameAttribute);
XmlAttribute osPlatformAttribute = xmlDoc.CreateAttribute("Platform");
osPlatformAttribute.Value = platform;
condition.Attributes.SetNamedItem(osPlatformAttribute);
// Create <Query1/> and <Query2/> child nodes.
// Then attach to <PlatformApplicabilityCondition/>.
XmlNode query1Node = xmlDoc.CreateNode
(XmlNodeType.Element, "Query1", dcmXmlNamespace);
query1Node.InnerText = query1;
condition.AppendChild(query1Node);
XmlNode query2Node = xmlDoc.CreateNode
(XmlNodeType.Element, "Query2", dcmXmlNamespace);
query2Node.InnerText = query2;
condition.AppendChild(query2Node);
XmlNode platformsNode = xmlDoc["DesiredConfigurationDigest"]["Driver"]["PlatformApplicabilityConditions"];
if (platformsNode == null)
{
Console.WriteLine("empty");
}
platformsNode.AppendChild(condition);
XmlNode driverNode = xmlDoc["DesiredConfigurationDigest"]["Driver"];
if (driverNode != null)
{
int driverVersion = int.Parse(driverNode.Attributes.GetNamedItem("Version").Value) + 1;
driverNode.Attributes.GetNamedItem("Version").Value = (driverVersion + 1).ToString();
}
else
{
throw new XmlException("Unable to find <Driver/> node while AddingSupportedPlatforms");
}
// Add the package XML to the driver.
StringBuilder xmlText = new StringBuilder();
xmlDoc.WriteContentTo(new XmlTextWriter(new StringWriter(xmlText)));
driver["SDMPackageXML"].StringValue = xmlText.ToString();
driver.Put();
}
catch (SmsException e)
{
Console.WriteLine("failed to add supported platform to driver " + e.Message);
throw;
}
}
Die Beispielmethode verfügt über die folgenden Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
driver objDriver |
-Verwalteten: IResultObject – VBScript: SWbemObject |
– Ein gültiges SMS_Driver-Objekt . Weitere Informationen finden Sie unter Importieren eines von einer INF-Datei beschriebenen Windows-Treibers in Configuration Manager. |
displayName sDisplayName |
-Verwalteten: String -Vbscript: String |
Der Anzeigename für die Bedingung, die in der Configuration Manager-Konsole angezeigt wird. |
maxVersion sMaxVersion |
-Verwalteten: String -Vbscript: String |
Die maximal unterstützte Version. |
minVersion sMinVersion |
-Verwalteten: String -Vbscript: String |
Die unterstützte Mindestversion. |
name sName |
-Verwalteten: String -Vbscript: String |
Der Name des Betriebssystems. |
platform sPlatform |
-Verwalteten: String -Vbscript: String |
Der Plattformname. |
query1 sQuery1 |
-Verwalteten: String -Vbscript: String |
Die erste Abfrage, die verwendet wird, um die Clientplattform zu identifizieren. |
query2 sQuery2 |
-Verwalteten: String -Vbscript: String |
Die zweite Abfrage, die verwendet wird, um die Clientplattform zu identifizieren. |
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
System.Xml
System.io
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
WMI-Klasse des SMS_SupportedPlatforms-Servers
Objektübersicht: Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von verwaltetem Code
Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von WMI
Verschieben eines Schritts in eine andere Tasksequenzgruppe für die Betriebssystembereitstellung
Erstellen einer Tasksequenzgruppe für die Betriebssystembereitstellung
Entfernen eines Schritts aus einer Betriebssystembereitstellungsgruppe
TasksequenzübersichtSMS_SupportedPlatforms-Server-WMI-Klasse