开发网关插件

适用于:Windows Admin Center、Windows Admin Center 预览版

Windows Admin Center 网关插件支持通过工具或解决方案的 UI 实现与目标节点的 API 通信。 Windows Admin Center 托管网关服务,该服务中继网关插件中的命令和脚本,以在目标节点上执行。 网关服务可以扩展为包括支持默认协议以外的协议的自定义网关插件。

默认情况下,Windows Admin Center 包含以下网关插件:

  • PowerShell 网关插件
  • WMI 网关插件

如果你希望使用 PowerShell 或 WMI 以外的协议(如 REST)进行通信,则可以构建自己的网关插件。 网关插件从现有网关进程加载到单独的 AppDomain 中,但对权限使用相同的提升级别。

注意

不熟悉其他扩展类型? 详细了解可扩展性体系结构和扩展类型

重要

Windows Admin Center SDK 和开发人员工具尚未更新以支持开发与 Windows Admin Center 新式网关兼容的网关插件。 遵循本指南不会让扩展与新式网关兼容。

如果有兴趣为新式网关开发网关插件或升级现有网关插件,请发送电子邮件至 wacextensionrequest@microsoft.com

准备环境

请安装所有项目所需的依赖项和全局先决条件来准备环境(如果尚未这样做)。

创建网关插件(C# 库)

若要创建自定义网关插件,请创建一个新的 C# 类,用于从 IPlugIn 命名空间实现 Microsoft.ManagementExperience.FeatureInterfaces 接口。

注意

IFeature 接口在早期版本的 SDK 中可用,现在已标记为已过时。 所有网关插件开发都应使用 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 中 FeatureName 属性值相同(在我们的示例项目中,Name 是“Sample Uno ”)
  • 将自定义网关插件 DLL 文件复制到此新文件夹
  • 重新启动 Windows Admin Center 进程

在 Windows Admin Center 重新启动后,可以通过向 http(s)://{domain|localhost}/api/nodes/{node}/features/{feature name}/{identifier} 发出 GET、PUT、PATCH、DELETE 或 POST 来执行自定义网关插件 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 构建并提供服务:

    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 浏览器

项目现在将显示在工具列表中,名称旁边标有(旁加载)。

面向不同版本的 Windows Admin Center SDK

通过 SDK 更改和平台更改使扩展保持最新状态非常简单。 了解如何面向其他版本的 Windows Admin Center SDK。