Jak określić obsługiwane platformy dla sterownika
W Configuration Manager należy określić obsługiwane platformy sterownika we SDMPackageXML
właściwości XML obiektu klasy SMS_Driver Server WMI sterownika. Kod XML zawiera węzeł PlatformApplicabilityConditions
, do którego są dodawane PlatformApplicabilityCondition
elementy dla każdej platformy obsługiwanej przez sterownik.
Uwaga
Należy dodać tylko platformy wymienione w obiekcie klasy WMI serwera SMS_SupportedPlatforms . Sterowniki mogą być uzależnione tylko dla głównych wersji systemu operacyjnego, czyli nie można kierować sterowników do dodatków Service Pack.
Uwaga
Część obsługiwanych SDMPackageXML
platform jest jedyną częścią schematu CI-XML, który można edytować. Nie należy wprowadzać zmian w innych częściach kodu XML.
Poniższy kod XML przedstawia sterownik, który obsługuje dwie platformy. Aby uzyskać więcej informacji na temat schematu obsługiwanych platform, zobacz Schemat platform obsługiwanych przez sterownik wdrażania systemu operacyjnego.
<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>
Aby zweryfikować wymagania dotyczące stosowania platformy, użyj właściwości klasy Condition
WMI serwera SMS_SupportedPlatforms dla wymaganej platformy.
Aby określić obsługiwane platformy dla sterownika
Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.
Pobierz obiekt klasy WMI serwera SMS_Driver dla sterownika. Sterownik jest identyfikowany przez właściwość
CI_ID
key . Aby uzyskać informacje o pobieraniu obiektów przy użyciu właściwości klucza, zobacz How to Read a Configuration Manager Object by Using Managed Code (Jak odczytać obiekt Configuration Manager przy użyciu kodu zarządzanego)Zaktualizuj kod XML sterownika.
Zatwierdź zmiany z powrotem do dostawcy programu SMS.
Przykład
Poniższa przykładowa metoda dodaje obsługiwaną platformę do sterownika identyfikowanego przez objDriver
. Na przykład poniższy kod wywołujący dodaje system operacyjny Windows XP Professional x64 do listy sterowników objDriver
obsługiwanych platform. Szczegóły dotyczące określonej platformy można uzyskać z jej SMS_SupportedPlatforms
wystąpienia obiektu.
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"
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.
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;
}
}
Przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
driver objDriver |
-Zarządzane: IResultObject - VBScript: SWbemObject |
- Prawidłowy obiekt SMS_Driver . Aby uzyskać więcej informacji, zobacz Jak zaimportować sterownik systemu Windows opisany przez plik INF do Configuration Manager. |
displayName sDisplayName |
-Zarządzane: String -Vbscript: String |
Nazwa wyświetlana warunku wyświetlana w konsoli Configuration Manager. |
maxVersion sMaxVersion |
-Zarządzane: String -Vbscript: String |
Maksymalna obsługiwana wersja. |
minVersion sMinVersion |
-Zarządzane: String -Vbscript: String |
Minimalna obsługiwana wersja. |
name sName |
-Zarządzane: String -Vbscript: String |
Nazwa systemu operacyjnego. |
platform sPlatform |
-Zarządzane: String -Vbscript: String |
Nazwa platformy. |
query1 sQuery1 |
-Zarządzane: String -Vbscript: String |
Pierwsze zapytanie używane do identyfikowania platformy klienta. |
query2 sQuery2 |
-Zarządzane: String -Vbscript: String |
Drugie zapytanie używane do identyfikowania platformy klienta. |
Kompilowanie kodu
Ten przykład języka C# wymaga:
Obszary nazw
System
System.collections.generic
System.text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Xml
System.io
Zestawu
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_SupportedPlatforms Server WMI Class
Omówienie obiektówJak nawiązać połączenie z dostawcą programu SMS w Configuration Manager przy użyciu kodu zarządzanego
Jak nawiązać połączenie z dostawcą programu SMS w Configuration Manager przy użyciu usługi WMI
Jak przenieść krok do innej grupy sekwencji zadań wdrażania systemu operacyjnego
Jak utworzyć grupę sekwencji zadań wdrażania systemu operacyjnego
Jak usunąć krok z grupy wdrożeń systemu operacyjnego
Omówienie sekwencji zadańSMS_SupportedPlatforms Server WMI Class (Klasa WMI serwera)