Share via


マネージド コードを使用してConfiguration Managerで SMS プロバイダーに接続する方法

SMS プロバイダーに接続するには、 WqlConnectionManager.Connect を使用します。 接続後、WqlConnectionManager.Connect には、Windows Management Instrumentation (WMI) オブジェクトConfiguration Managerクエリ、作成、削除、その他の方法で使用するメソッドがあります。

注:

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 プロバイダーに接続するには

  1. SmsNamedValuesDictionaryObject を作成します。

  2. WqlConnectionManager クラスのインスタンスを作成し、サーバー名を渡す [Connect] メソッドを呼び出し、サーバー名がリモートの場合はユーザー名とパスワードを呼び出します。

  3. WqlConnectionManager オブジェクトを使用してプロバイダーに接続します。

次の例のメソッドは、ローカル コンピューターまたはリモート コンピューター上の SMS プロバイダーに接続します。 がリモートの場合 servername 、メソッドは指定されたユーザー名とパスワードを使用してリモート コンピューターに接続します。 現在のユーザー コンテキストを使用する場合は、リモート接続に対して、ユーザー名とパスワードが渡されないようにコードを変更します。 接続が成功した場合は、 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コンテキスト修飾子を追加する方法
オブジェクトの概要