如何使用托管代码连接到 Configuration Manager 中的 SMS 提供程序
若要连接到 SMS 提供程序,请使用 WqlConnectionManager.Connect。 连接后,WqlConnectionManager.Connect 具有查询、创建、删除和以其他方式使用Configuration Manager Windows Management Instrumentation (WMI) 对象的方法。
注意
WqlConnectionManager.Connect 是 ConnectionManagerBase 的 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 提供程序
创建 WqlConnectionManager 类的实例,并调用传递服务器名称的 [Connect] 方法,如果服务器名称是远程的,则调用用户名和密码。
使用 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异常是 SmsConnectionException 和 SmsQueryException。 这些可与 SmsException 一起捕获。
.NET Framework 安全性
将错误的凭据传递到 WqlConnectionManager.Connect 时,将引发 UnauthorizedAccessException。