如何使用托管代码连接到 Configuration Manager 中的 SMS 提供程序

若要连接到 SMS 提供程序,请使用 WqlConnectionManager.Connect。 连接后,WqlConnectionManager.Connect 具有查询、创建、删除和以其他方式使用Configuration Manager Windows Management Instrumentation (WMI) 对象的方法。

注意

WqlConnectionManager.ConnectConnectionManagerBase 的 WMI 特定派生。

如果要连接到本地 SMS 提供程序,则不提供用户凭据。 如果要连接到远程 SMS 提供程序,则如果当前用户/计算机上下文对远程 SMS 提供程序具有权限,则无需提供用户凭据。

如果你对远程 SMS 提供程序没有访问权限,或者想要使用其他用户帐户,则必须为具有访问权限的用户帐户提供用户凭据。

WQLConnectionManager.Connection 需要 SmsNamedValuesDictionary 对象。 这可用于存储缓存的信息,例如计算机名称。

它预先填充了许多可在应用程序中使用的值。

说明。
ProviderLocation 提供程序位置。 例如,

\\<ComputerName>\ROOT\sms:SMS_ProviderLocation.SiteCode=“XXX”。
ProviderMachineName 提供程序计算机。 例如,\\ComputerName。
Connection 连接路径。 例如,\\ComputerName\root\sms\site_XXX。
ConnectedSiteCode 连接连接到Configuration Manager站点的站点代码。 例如,XXX。
ServerName 计算机名称,例如 COMPUTERNAME。
SiteName Configuration Manager站点代码。 例如,中央站点。
ConnectedServerVersion 连接的服务器的版本。 例如,4.00.5830.0000
BuildNumber Configuration Manager安装内部版本号。 例如,5830。

注意

SmsNamedValuesDictionary 对象不是传递给提供程序的上下文限定符信息。 有关详细信息,请参阅如何使用托管代码添加Configuration Manager上下文限定符

连接到 SMS 提供程序

  1. 创建 SmsNamedValuesDictionaryObject

  2. 创建 WqlConnectionManager 类的实例,并调用传递服务器名称的 [Connect] 方法,如果服务器名称是远程的,则调用用户名和密码。

  3. 使用 WqlConnectionManager 对象连接到提供程序。

示例

以下示例方法连接到本地或远程计算机上的 SMS 提供程序。 如果 servername 为 remote,则 该方法使用提供的用户名和密码连接到远程计算机。 如果要使用当前用户上下文,对于远程连接,请更改代码,使其不传递用户名和密码。 如果连接成功,则返回 WqlConnectionManager 对象。

有关调用示例代码的信息,请参阅调用Configuration Manager代码片段

public WqlConnectionManager Connect(string serverName, string userName, string userPassword)  
{  
    try  
    {  
        SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary();  
        WqlConnectionManager connection = new WqlConnectionManager(namedValues);  

        if (System.Net.Dns.GetHostName().ToUpper() == serverName.ToUpper())  
        {  
            // Connect to local computer.  
            connection.Connect(serverName);  
        }  
        else  
        {  
            // Connect to remote computer.  
            connection.Connect(serverName, userName, userPassword);  
        }  

        return connection;  
    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed to Connect. Error: " + e.Message);  
        return null;  
    }  
    catch (UnauthorizedAccessException e)  
    {  
        Console.WriteLine("Failed to authenticate. Error:" + e.Message);  
        return null;  
    }  
}  

编译代码

命名空间

System

System.Collections.Generic

System.ComponentModel

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

Microsoft。ManagementConsole

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Microsoft。ManagementConsole

可靠编程

可以引发Configuration Manager异常是 SmsConnectionExceptionSmsQueryException。 这些可与 SmsException 一起捕获。

.NET Framework 安全性

将错误的凭据传递到 WqlConnectionManager.Connect 时,将引发 UnauthorizedAccessException

另请参阅

SMS 提供程序基础知识如何使用托管代码添加Configuration Manager上下文限定符
对象概述