Como especificar as plataformas com suporte para um driver

Em Configuration Manager, você especifica as plataformas com suporte de um driver na SDMPackageXML propriedade XML do objeto SMS_Driver Classe WMI do servidor do driver. O XML contém um nó PlatformApplicabilityConditions ao qual você adiciona PlatformApplicabilityCondition elementos para cada plataforma compatível com o driver.

Observação

Você deve adicionar apenas plataformas listadas em um objeto da Classe WMI do servidor SMS_SupportedPlatforms . Os drivers só podem ser condicionados para grandes versões do sistema operacional, ou seja, não é possível direcionar drivers em pacotes de serviço.

Cuidado

A parte de SDMPackageXML plataformas com suporte é a única parte do esquema CI-XML que pode ser editada. Você não deve fazer alterações em outras partes do XML.

O XML a seguir demonstra um driver que dá suporte a duas plataformas. Para obter mais informações sobre o esquema de plataformas com suporte, consulte Esquema de Plataformas com Suporte para Driver de Implantação do Sistema Operacional.

<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>  

Para validar os requisitos de aplicabilidade da plataforma, use a propriedade classe ConditionWMI do SMS_SupportedPlatforms Server para a plataforma necessária.

Para especificar as plataformas com suporte para um driver

  1. Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.

  2. Obtenha o objeto classe WMI do servidor SMS_Driver para o driver. O driver é identificado pela propriedade CI_IDkey . Para obter informações sobre como obter objetos usando uma propriedade chave, consulte Como ler um objeto Configuration Manager usando código gerenciado

  3. Atualize o XML do driver.

  4. Confirme as alterações no Provedor de SMS.

Exemplo

O método de exemplo a seguir adiciona uma plataforma com suporte ao driver identificado por objDriver. Por exemplo, o código de chamada a seguir adiciona o sistema operacional x64 do Windows XP Professional à lista de driver objDriver de plataformas com suporte. Você pode obter os detalhes de uma plataforma específica de sua SMS_SupportedPlatforms instância de objeto.

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"

Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.

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;  
    }  
}  

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
driver

objDriver
-Gerenciado: IResultObject
- VBScript: SWbemObject
- Um objeto de SMS_Driver válido. Para obter mais informações, consulte Como importar um driver do Windows descrito por um arquivo INF para Configuration Manager.
displayName

sDisplayName
-Gerenciado: String
-Vbscript: String
O nome de exibição da condição mostrada no console Configuration Manager.
maxVersion

sMaxVersion
-Gerenciado: String
-Vbscript: String
A versão máxima com suporte.
minVersion

sMinVersion
-Gerenciado: String
-Vbscript: String
A versão mínima com suporte.
name

sName
-Gerenciado: String
-Vbscript: String
O nome do sistema operacional.
platform

sPlatform
-Gerenciado: String
-Vbscript: String
O nome da plataforma.
query1

sQuery1
-Gerenciado: String
-Vbscript: String
A primeira consulta usada para identificar a plataforma cliente.
query2

sQuery2
-Gerenciado: String
-Vbscript: String
A segunda consulta usada para identificar a plataforma cliente.

Compilando o código

Este exemplo de C# requer:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Xml

System.io

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.

Confira também

Classe WMI do servidor SMS_SupportedPlatforms
Visão geral de objetosComo se conectar a um provedor de SMS no Configuration Manager usando código gerenciado
Como se conectar a um provedor de SMS no Configuration Manager usando o WMI
Como mover uma etapa para um grupo de sequência de tarefas de implantação de sistema operacional diferente
Como criar um grupo de sequência de tarefas de implantação do sistema operacional
Como remover uma etapa de um grupo de implantação do sistema operacional
Visão geral da sequência detarefas SMS_SupportedPlatforms Classe WMI do Servidor