De ondersteunde platforms voor een stuurprogramma opgeven
In Configuration Manager geeft u de ondersteunde platforms van een stuurprogramma op in de SDMPackageXML
eigenschap XML van het WMI-klasseobject SMS_Driver Server van het stuurprogramma. De XML bevat een knooppunt PlatformApplicabilityConditions
waaraan u elementen toevoegt PlatformApplicabilityCondition
voor elk platform dat het stuurprogramma ondersteunt.
Opmerking
U moet alleen platforms toevoegen die worden vermeld in een WMI-klasseobject SMS_SupportedPlatforms Server . Stuurprogramma's kunnen alleen worden geconditioneerd voor belangrijke releases van het besturingssysteem, dat wil dat het niet mogelijk is om stuurprogramma's te richten op servicepacks.
Voorzichtigheid
Het ondersteunde platformgedeelte van SDMPackageXML
is het enige deel van het CI-XML-schema dat kan worden bewerkt. U moet geen wijzigingen aanbrengen in andere onderdelen van de XML.
In de volgende XML ziet u een stuurprogramma dat ondersteuning biedt voor twee platforms. Zie Schema voor ondersteunde platformen voor besturingssysteemimplementatiestuurprogramma's voor meer informatie over het ondersteunde platformschema.
<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>
Gebruik de WMI-klasse-eigenschapCondition
SMS_SupportedPlatforms Server voor het vereiste platform om de vereisten voor toepasselijkheid van het platform te valideren.
De ondersteunde platforms voor een stuurprogramma opgeven
Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.
Haal het WMI-klasseobject SMS_Driver Server op voor het stuurprogramma. Het stuurprogramma wordt geïdentificeerd door de sleuteleigenschap
CI_ID
. Zie Een Configuration Manager-object lezen met behulp van beheerde code voor informatie over het ophalen van objecten met behulp van een sleuteleigenschapWerk het XML-bestand van het stuurprogramma bij.
Voer de wijzigingen terug naar de SMS-provider.
Voorbeeld
Met de volgende voorbeeldmethode wordt een ondersteund platform toegevoegd aan het stuurprogramma dat wordt geïdentificeerd door objDriver
. Met de volgende aanroepcode wordt bijvoorbeeld het besturingssysteem Windows XP Professional x64 toegevoegd aan de stuurprogrammalijst objDriver
met ondersteunde platforms. U kunt de details voor een specifiek platform ophalen uit het SMS_SupportedPlatforms
bijbehorende objectexemplaren.
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"
Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.
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;
}
}
De voorbeeldmethode heeft de volgende parameters:
Parameter | Type | Beschrijving |
---|---|---|
driver objDriver |
-Beheerd: IResultObject - VBScript: SWbemObject |
- Een geldig SMS_Driver object. Zie Een Windows-stuurprogramma importeren dat wordt beschreven door een INF-bestand in Configuration Manager voor meer informatie. |
displayName sDisplayName |
-Beheerd: String -Vbscript: String |
De weergavenaam voor de voorwaarde die wordt weergegeven in de Configuration Manager-console. |
maxVersion sMaxVersion |
-Beheerd: String -Vbscript: String |
De maximaal ondersteunde versie. |
minVersion sMinVersion |
-Beheerd: String -Vbscript: String |
De minimaal ondersteunde versie. |
name sName |
-Beheerd: String -Vbscript: String |
De naam van het besturingssysteem. |
platform sPlatform |
-Beheerd: String -Vbscript: String |
De platformnaam. |
query1 sQuery1 |
-Beheerd: String -Vbscript: String |
De eerste query die wordt gebruikt om het clientplatform te identificeren. |
query2 sQuery2 |
-Beheerd: String -Vbscript: String |
De tweede query die wordt gebruikt om het clientplatform te identificeren. |
De code compileren
Voor dit C#-voorbeeld is het volgende vereist:
Naamruimten
Systeem
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Xml
System.IO
Vergadering
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robuust programmeren
Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.
.NET Framework Beveiliging
Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.
Zie ook
WMI-klasse SMS_SupportedPlatforms-server
Overzicht van objectenVerbinding maken met een SMS-provider in Configuration Manager met behulp van beheerde code
Verbinding maken met een SMS-provider in Configuration Manager met behulp van WMI
Een stap verplaatsen naar een andere takenreeksgroep voor besturingssysteemimplementatie
Een takenreeksgroep voor besturingssysteemimplementatie maken
Een stap verwijderen uit een besturingssysteemimplementatiegroep
TakenreeksoverzichtSMS_SupportedPlatforms WMI-klasse server