ゲートウェイ プラグインの開発

適用先:Windows Admin Center、Windows Admin Center Preview

Windows Admin Center のゲートウェイ プラグインを使用すると、ツールまたはソリューションの UI からターゲット ノードへの API 通信が可能になります。 Windows Admin Center は、ターゲット ノードで実行されるゲートウェイ プラグインからコマンドとスクリプトを中継するゲートウェイ サービスをホストします。 ゲートウェイ サービスを拡張して、既定のプロトコル以外のプロトコルをサポートするカスタム ゲートウェイ プラグインを含めることができます。

これらのゲートウェイ プラグインは、Windows Admin Center に既定で含まれています:

  • PowerShell ゲートウェイ プラグイン
  • WMI ゲートウェイ プラグイン

REST など、PowerShell や WMI 以外のプロトコルと通信する場合は、独自のゲートウェイ プラグインを構築できます。 ゲートウェイ プラグインは、既存のゲートウェイ プロセスとは別の AppDomain に読み込まれますが、権限には同じレベルの管理者特権を使用します。

注意

さまざまな拡張機能の種類に慣れていない場合 拡張機能のアーキテクチャと拡張機能の種類の詳細について説明します。

重要

Windows Admin Center SDK と開発者ツールは、Windows Admin Center 最新化ゲートウェイと互換性のあるゲートウェイ プラグインの開発をサポートするようにはまだ更新されていません。 このガイドに従っても、最新化されたゲートウェイと互換性のある拡張機能は作成されません。

最新化されたゲートウェイ用のゲートウェイ プラグインの開発や既存のゲートウェイ プラグインのアップグレードに関心がある場合は、wacextensionrequest@microsoft.com に電子メールを送信してください。

環境を準備する

まだインストールしていない場合は、すべてのプロジェクトに必要な依存関係とグローバルな前提条件をインストールして 環境を準備 します。

ゲートウェイ プラグインを作成する (C# ライブラリ)

カスタム ゲートウェイ プラグインを作成するには、Microsoft.ManagementExperience.FeatureInterfaces 名前空間から IPlugIn インターフェイスを実装する新しい C# クラスを作成します。

注意

以前のバージョンの SDK で使用できる IFeature インターフェイスに、廃止のフラグが設定されました。 すべてのゲートウェイ プラグイン開発では、IPlugIn (または必要に応じて HttpPlugIn 抽象クラス) を使用する必要があります。

GitHub からサンプルをダウンロードする

カスタム ゲートウェイ プラグインをすぐに使い始めるには、Windows Admin Center SDK GitHub サイトからサンプル C# プラグイン プロジェクトのコピーを複製またはダウンロードします。

コンテンツを追加する

サンプル C# プラグイン プロジェクト プロジェクト (または独自のプロジェクト) の複製コピーに新しいコンテンツを追加してカスタム API を含め、次の手順で使用するカスタム ゲートウェイ プラグイン DLL ファイルをビルドします。

テスト用のプラグインをデプロイする

カスタム ゲートウェイ プラグイン DLL を Windows Admin Center ゲートウェイ プロセスに読み込んでテストします。

Windows Admin Center は、現在のマシンの Application Data フォルダー内の plugins フォルダー内のすべてのプラグインを検索します (Environment.SpecialFolder 列挙型の CommonApplicationData 値を使用)。 この Windows 10 の場所は C:\ProgramData\Server Management Experience です。 plugins フォルダーがまだ存在しない場合は、自分でフォルダーを作成できます。

注意

"StaticsFolder" 構成値を更新することで、デバッグ ビルド内のプラグインの場所をオーバーライドできます。 ローカルでデバッグする場合、この設定はデスクトップ ソリューションの App.Config 内に表示されます。

プラグイン フォルダー内 (この例では C:\ProgramData\Server Management Experience\plugins)

  • カスタム ゲートウェイ プラグイン DLLFeatureName プロパティ値と同じ名前の新しいフォルダーを作成します (サンプル プロジェクトでは Name は "Sample Uno")
  • カスタム ゲートウェイ プラグイン DLL ファイルをこの新しいフォルダーにコピーする
  • Windows Admin Center を再起動する

Windows 管理プロセスが再起動した後、GET、PUT、PATCH、DELETE、または POST を http(s)://{domain|localhost}/api/nodes/{node}/features/{feature name}/{identifier} に発行して、カスタム ゲートウェイ プラグイン DLL で API を実行できます

省略可能: デバッグ用のプラグインにアタッチする

Visual Studio 2017 では、デバッグ メニューの [プロセスにアタッチ] を選択します。 次のウィンドウで、[使用可能なプロセス] の一覧をスクロールし、[SMEDesktop.exe] を選択して [アタッチ] をクリックします。 デバッガーが起動したら、機能コードにブレークポイントを配置し、上記の URL 形式で実行できます。 サンプル プロジェクト (機能名: "Sample Uno") の場合、URL は ""<http://localhost:6516/api/nodes/fake-server.my.domain.com/features/Sample%20Uno>"" です

Windows Admin Center SDK を使用してツール拡張機能を作成する

次に、カスタム ゲートウェイ プラグインを呼び出すツール拡張機能を作成する必要があります。 プロジェクト ファイルを格納するフォルダーを作成または参照し、コマンド プロンプトを開き、そのフォルダーを作業ディレクトリとして設定します。 以前にインストールされた Windows Admin Center SDK を使用して、次の構文を使用して新しい拡張機能を作成します:

wac create --company "{!Company Name}" --tool "{!Tool Name}"
説明
{!Company Name} 会社名 (スペースを含む) Contoso Inc
{!Tool Name} ツール名 (スペースを含む) Manage Foo Works

次に使用方法の例を示します。

wac create --company "Contoso Inc" --tool "Manage Foo Works"

これにより、ツールに指定した名前を使用して、現在の作業ディレクトリ内に新しいフォルダーが作成され、必要なすべてのテンプレート ファイルがプロジェクトにコピーされ、会社名とツール名でファイルが構成されます。

次に、作成したフォルダーにディレクトリを変更し、次のコマンドを実行して必要なローカルの依存関係をインストールします:

npm install

これが完了すると、新しい拡張機能を Windows Admin Center に読み込むために必要なすべての設定が完了します。

ツール拡張機能をカスタム ゲートウェイ プラグインに接続する

Windows Admin Center SDK を使用して拡張機能を作成したら、次の手順に従って、ツール拡張機能をカスタム ゲートウェイ プラグインに接続する準備ができました:

拡張機能をビルドしてサイドロードする

次に、拡張機能をビルドして Windows Admin Center に読み込みます。 コマンド ウィンドウを開き、ディレクトリをソース ディレクトリに変更すると、ビルドする準備が整います。

  • 次のように gulp build および gulp serve を指定します。

    gulp build
    gulp serve -p 4201
    

現在空いているポートを選択する必要があることに注意してください。 Windows Admin Center が実行されているポートは使用しないでください。

ローカルで提供されるプロジェクトを Windows Admin Center に追加することで、プロジェクトをテスト用に Windows Admin Center のローカル インスタンスにサイド ローディングすることができます。

  • Web ブラウザーで Windows Admin Center を起動します

  • デバッガーを起動します (F12)

  • コンソールを開き、次のコマンドを入力します

    MsftSme.sideLoad("http://localhost:4201")
    
  • Web ブラウザーを更新します

これで、プロジェクトは、名前の横に (side loaded) が追加された状態でツール一覧に表示されるようになります。

異なるバージョンの Windows Admin Center SDK をターゲットにする

SDK の変更とプラットフォームの変更によって拡張機能を最新の状態に保つことは簡単です。 異なるバージョンの Windows Admin Center SDK をターゲットにする方法について説明しています。