Como Importar um Controlador do Windows Descrito por um Ficheiro INF para o Configuration Manager
Pode importar um controlador Windows descrito por um ficheiro de informação (.inf), no Gestor de Configuração, utilizando o Método CreateFromINF em classe SMS_Driver.
Importar um motorista de Windows
Configurar uma ligação com o Fornecedor DE SMS. Para mais informações, consulte os fundamentos do Fornecedor de SMS.
Ligue para o método CreateFromINF em SMS_Driver de classe para obter o objeto base de base de gestão da classe WMI do SMS_Driver do servidor inicial.
Crie um exemplo de SMS_Driver utilizando o objeto base de gestão.
Povoar o
SMS_Driver
objeto.Cometa o
SMS_Driver
objeto.
Exemplo
O método exemplo a seguir cria um SMS_Driver
objeto para um Windows controlador utilizando o caminho e o nome do ficheiro fornecidos. O exemplo também permite ao condutor definir o valor do IsEnabled
imóvel para true
. A função de ajudante GetDriverName
é utilizada para obter o nome do condutor do pacote de condutor XML.
Nota
O path
parâmetro deve ser fornecido como uma via de rede da Convenção Universal de Nomeação (UNC), por exemplo, \ \localhost\Drivers\ATIVideo \ .
No exemplo, a LocaleID
propriedade é codificada para inglês (EUA). Se precisar do local para não-EUA. instalações, você pode obtê-lo a partir da propriedade classe WMI do SMS_Identification servidor. LocaleID
Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.
Sub ImportINFDriver(connection, path, name)
Dim driverClass
Dim inParams
Dim outParams
On Error Resume Next
' Obtain an instance of the class
' using a key property value.
Set driverClass = connection.Get("SMS_Driver")
' Obtain an InParameters object specific
' to the method.
Set inParams = driverClass.Methods_("CreateFromINF"). _
inParameters.SpawnInstance_()
' Add the input parameters.
inParams.Properties_.Item("DriverPath") = path
inParams.Properties_.Item("INFFile") = name
' Call the method.
' The OutParameters object in outParams
' is created by the provider.
Set outParams = connection.ExecMethod("SMS_Driver", "CreateFromINF", inParams)
If Err <> 0 Then
Wscript.Echo "Failed to add to the driver catalog: " + path + "\" + name
Exit Sub
End If
outParams.Driver.IsEnabled = True
Dim LocalizedSettings(0)
Set LocalizedSettings(0) = connection.Get("SMS_CI_LocalizedProperties").SpawnInstance_()
LocalizedSettings(0).Properties_.item("LocaleID") = 1033
LocalizedSettings(0).Properties_.item("DisplayName") = _
GetDriverName(outParams.Driver.SDMPackageXML, "//DisplayName", "Text")
LocalizedSettings(0).Properties_.item("Description") = ""
outParams.Driver.LocalizedInformation = LocalizedSettings
' Save the driver.
outParams.Driver.Put_
End Sub
Function GetDriverName(xmlContent, nodeName, attributeName)
' Load the XML Document
Dim attrValue
Dim XMLDoc
Dim objNode
Dim displayNameNode
attrValue = ""
Set XMLDoc = CreateObject("Microsoft.XMLDOM")
XMLDoc.async = False
XMLDoc.loadXML(xmlContent)
'Check for a successful load of the XML Document.
If xmlDoc.parseError.errorCode <> 0 Then
WScript.Echo vbcrlf & "Error loading XML Document. Error Code : 0x" & hex(xmldoc.parseerror.errorcode)
WScript.Echo "Reason: " & xmldoc.parseerror.reason
WScript.Echo "Parse Error line " & xmldoc.parseError.line & ", character " & _
xmldoc.parseError.linePos & vbCrLf & xmldoc.parseError.srcText
GetXMLAttributeValue = ""
Else
' Select the node
Set objNode = xmlDoc.SelectSingleNode(nodeName)
If Not objNode Is Nothing Then
' Found the element, now just pick up the Text attribute value
Set displayNameNode = objNode.attributes.getNamedItem(attributeName)
If Not displayNameNode Is Nothing Then
attrValue = displayNameNode.value
Else
WScript.Echo "Attribute not found"
End If
Else
WScript.Echo "Failed to locate " & nodeName & " element."
End If
End If
' Save the results
GetDriverName = attrValue
End Function
public void ImportInfDriver(
WqlConnectionManager connection,
string path,
string name)
{
try
{
Dictionary<string, object> inParams = new Dictionary<string, object>();
// Set up parameters for the path and file name.
inParams.Add("DriverPath", path);
inParams.Add("INFFile", name);
// Import the INF file.
IResultObject result = connection.ExecuteMethod("SMS_Driver", "CreateFromINF", inParams);
// Create the SMS_Driver driver instance from the management base object returned in result["Driver"].
IResultObject driver = connection.CreateInstance(result["Driver"].ObjectValue);
// Enable the driver.
driver["IsEnabled"].BooleanValue = true;
List<IResultObject> driverInformationList = driver.GetArrayItems("LocalizedInformation");
// Set up the display name and other information.
IResultObject driverInfo = connection.CreateEmbeddedObjectInstance("SMS_CI_LocalizedProperties");
driverInfo["DisplayName"].StringValue = GetDriverName(driver);
driverInfo["LocaleID"].IntegerValue = 1033;
driverInfo["Description"].StringValue = "";
driverInformationList.Add(driverInfo);
driver.SetArrayItems("LocalizedInformation", driverInformationList);
// Commit the SMS_Driver object.
driver.Put();
}
catch (SmsException e)
{
Console.WriteLine("Failed to import driver: " + e.Message);
throw;
}
}
public string GetDriverName(IResultObject driver)
{
// Extract
XmlDocument sdmpackage = new XmlDocument();
sdmpackage.LoadXml(driver.Properties["SDMPackageXML"].StringValue);
// Iterate over all the <DisplayName/> tags.
foreach (XmlNode displayName in sdmpackage.GetElementsByTagName("DisplayName"))
{
// Grab the first one with a Text attribute not equal to null.
if (displayName != null && displayName.Attributes["Text"] != null
&& !string.IsNullOrEmpty(displayName.Attributes["Text"].Value))
{
// Return the DisplayName text.
return displayName.Attributes["Text"].Value;
}
}
// Default the driverName to the UniqueID.
return driver["CI_UniqueID"].StringValue;
}
O método exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Description |
---|---|---|
connection |
- Gerido: WqlConnectionManager - VBScript: SWbemServices |
Uma ligação válida ao Fornecedor de SMS. |
path |
- Gerido: String - VBScript: String |
Um caminho de rede válido da UNC para a pasta que contém o conteúdo do controlador. Por exemplo, \ \Servidores\Driver\VideoDriver. |
name |
- Gerido: String - VBScript: String |
O nome do ficheiro .inf. Por exemplo, ATI.inf. |
A Compilar o Código
Este exemplo C# requer:
Espaços de nomes
Sistema
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assemblagem
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programação Robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.
Segurança do .NET Framework
Para obter mais informações sobre a segurança das aplicações do Gestor de Configuração, consulte a administração baseada em funções do Gestor de Configuração.
Consulte também
Criar MétodoFromINF em SMS_Driver de classe
Classe WMI do servidor de SMS_Driver
Como especificar as plataformas suportadas para um condutor