ゲートウェイ プラグインの開発
適用先: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
)
- カスタム ゲートウェイ プラグイン DLL
Feature
のName
プロパティ値と同じ名前の新しいフォルダーを作成します (サンプル プロジェクトでは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 をターゲットにする方法について説明しています。