通过社区中心注册控制台扩展
控制台扩展作者可以贡献他们已写入社区中心的扩展。 社区中心用户可以下载扩展,并跨其Configuration Manager层次结构管理这些扩展的安装。 通过社区中心贡献扩展将取代 以前的部署过程。
版本信息
若要从 社区中心下载控制台扩展,需要:
- Configuration Manager的技术预览版
- Configuration Manager版本 2103 或更高版本
可以通过使用以下版本 在本地导入 自己的已签名扩展来测试它们:
- Configuration Manager的技术预览版
- Configuration Manager版本 2103 或更高版本
可以在本地 导入未签名的扩展 。 未签名的扩展仅用于本地导入和测试目的。 无法将未签名的扩展提交到社区中心。 导入未签名的扩展需要以下版本之一:
- 技术预览版 2105.2 或更高版本。
- Configuration Manager版本 2107 或更高版本
从版本 2111 开始,可以使用导入 控制台扩展 向导导入已签名扩展和未签名扩展。
先决条件
若要在社区中心注册控制台扩展供Configuration Manager管理员下载,需要满足以下先决条件:
满足参与社区中心的所有先决条件
Configuration Manager具有所有作用域权限的完全管理员。
准备好发布后,验证码签名
.cab
文件中的有效有效负载。 文件.cab
必须包含以下项:- 名为 的清单文件
manifest.xml
- 扩展的作者和 版本 必须在
manifest.xml
- 扩展名的所有相关文件都必须位于 文件中
.cab
- 每个文件都必须在清单中列出,并具有正确的名称和 SHA256 哈希
- 名为 的清单文件
创建扩展
为社区中心创建扩展与之前创建扩展的方式没有太大不同。 但是,不再需要在其各自的 %ProgramFiles%\Microsoft Endpoint Manager\AdminConsole\XmlStorage\Extensions
文件夹中安装文件。 这是新 manifest.xml
文件函数的一部分。 仍可以创建以下项:
- 操作
- Forms
- 管理类
- Nodes
- 视图
- 使用所选的向导框架将自己的自定义向导集成到 Configuration Manager 控制台
- 不能使用现有的 Configuration Manager 控制台框架创建向导。
- 无法修改或删除现有Configuration Manager向导中的步骤。
提示
从社区中心的 GitHub 存储库中,可以下载 示例扩展的 cab 文件。
创建有效的有效负载 cab 文件
创建扩展的文件后,将创建 manifest.xml
文件,然后将其打包到验证码签名 .cab
文件中。
- 验证码签名
.cab
文件中的有效有效负载。 文件.cab
必须包含以下项:- 名为 的清单文件
manifest.xml
- 扩展的作者和 版本 必须在
manifest.xml
- 扩展名的所有相关文件都必须位于 文件中
.cab
- 每个文件都必须在清单中列出,并具有正确的名称和 SHA256 哈希
- 名为 的清单文件
Manifest.xml格式:
<CustomExtensionManifest ExtensionID="{A GUID to identify this extension}" Name="{Name of the extension to be shown in the Console Extension node}" Description="{Description of the extension to be shown in the Console Extension node" Version="{The version of the extension to be shown in the Console Extension node. For example:1.0}" Author="{The author of the extension to be shown in the Console Extension node}">
<Deployments>
<ActionExtensionDeployment ParentNode="{the GUID that identify the folder/node you want to place the action under}">
<FileList>
<File Name="{The name of the xml file that defines the action. For example: MyAction.xml}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
</FileList>
</ActionExtensionDeployment>
<NodeExtensionDeployment ParentNode="{the GUID that identify the folder you want to place the node under}">
<FileList>
<File Name="{The name of the xml file that defines the node. For example: MyNode.xml}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
</FileList>
</NodeExtensionDeployment>
<FormExtensionDeployment>
<FileList>
<File Name="{The name of the xml file that defines the form. For example: MyForm.xml}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
<File Name="{The name of the dll file that defines the form. For example: MyForm.dll}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
</FileList>
</FormExtensionDeployment>
<ManagementClassExtensionDeployment>
<FileList>
<File Name="{The name of the xml file that defines the WMI class. For example: MyClass.xml}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
<File Name="{The name of the dll file that defines the WMI class. For example: MyClass.dll}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
</FileList>
</ManagementClassExtensionDeployment>
<ViewExtensionDeployment>
<FileList>
<File Name="{The name of the dll file that defines the view. For example: MyView.dll}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
</FileList>
</ViewExtensionDeployment>
<CabExtensionDeployment>
<FileList>
<File Name="{The name of the cab file to deploy. CabExtensionDeployment is used when your payload cab file contains a cab within it that needs to be deployed. For example: MyCab.cab}">
<Hash Algorithm="sha256">{The SHA256 hash of this file}</Hash>
</File>
</FileList>
</CabExtensionDeployment>
</Deployments>
</CustomExtensionManifest>
示例manifest.xml文件:
<CustomExtensionManifest ExtensionID="808b9ce3-e574-49be-82be-64ed35d800c5" Name="Nice Console Node and Console Action Extension" Description="Very Useful Extension" Version="1.1" Author="Me">
<Deployments>
<NodeExtensionDeployment ParentNode="d61498cb-7b3f-4748-ae3e-026674fb0cbd">
<FileList>
<File Name="Test.xml">
<Hash Algorithm="sha256">543F2947AEA734B6833F275091AC6A159C0FCD341373D6E53062E37281B602B3</Hash>
</File>
</FileList>
</NodeExtensionDeployment>
<ActionExtensionDeployment ParentNode="172d85e7-bb7a-4479-a6a2-768f175b75cb">
<FileList>
<File Name="Test2.xml">
<Hash Algorithm="sha256">C60FB69B86BF9B2E924FF272292CA2C97864D636B8190C95DC926049651A002E</Hash>
</File>
</FileList>
</ActionExtensionDeployment>
</Deployments>
</CustomExtensionManifest>
将扩展注册到站点进行测试
生成扩展并将其打包到验证码签名.cab
文件中后,可以在Configuration Manager实验室环境中对其进行测试。 为此,你将通过 管理服务发布它。 将扩展插入站点后,可以批准它,并从 控制台扩展 节点本地安装它。
重要
对于本地测试,可以在使用版本 2107 或更高版本时导入未签名的控制台扩展。 有关详细信息和其他导入方法,请参阅 导入控制台扩展。
编辑 和
$cabFilePath
后运行$adminServiceProvider
以下 PowerShell 脚本:-
$adminServiceProvider
- 安装了管理服务的顶级 SMSProvider 服务器 -
$cabFilePath
- 扩展的验证码签名.cab
文件的路径
$adminServiceProvider = "SMSProviderServer.contoso.com" $cabFilePath = "C:\Testing\MyExtension.cab" $adminServiceURL = "https://$adminServiceProvider/AdminService/v1/ConsoleExtensionMetadata/AdminService.UploadExtension" $cabFileName = (Get-Item -Path $cabFilePath).Name $Data = Get-Content $cabFilePath $Bytes = [System.IO.File]::ReadAllBytes($cabFilePath) $base64Content = [Convert]::ToBase64String($Bytes) $Headers = @{ "Content-Type" = "Application/json" } $Body = @{ CabFile = @{ FileName = $cabFileName FileContent = $base64Content } } | ConvertTo-Json $result = Invoke-WebRequest -Method Post -Uri $adminServiceURL -Body $Body -Headers $Headers -UseDefaultCredentials if ($result.StatusCode -eq 200) {Write-Host "$cabFileName was published successfully."} else {Write-Host "$cabFileName publish failed. Review AdminService.log for more information."}
-
在Configuration Manager控制台中,转到“管理>概述>汇报和维护>控制台扩展”。
选择扩展,然后选择 “批准安装”。
若要在当前主机上安装扩展,请在“本地扩展”下选择“安装”。
使用相同的扩展和相同版本重新运行 PowerShell 脚本将覆盖当前现有脚本。
在社区中心共享扩展
仅适用于Configuration Manager的技术预览版
请确保已加入社区中心,并在加入请求获得批准后接受了邀请。 贡献扩展的方式与 贡献其他社区中心对象的方式相同。 但是,需要为扩展提供其他要求和其他信息。 向社区中心提供控制台扩展时,必须对内容进行签名。 控制台扩展的内容不由 Microsoft 托管。 贡献项目时,系统会要求你提供已签名 .cab
文件的位置以及扩展的其他信息。 提供扩展需要以下项:
-
内容 URL:可
.cab
下载文件的位置 -
内容的 SHA-256 哈希:文件的 SHA-256 哈希
.cab
- 许可证 URL:扩展许可证的 URL,例如 https://mit-license.org/
- 隐私声明 URL:隐私声明的 URL
重要
如果通过管理服务将扩展本地导入控制台,则尝试从社区中心下载同一扩展时,下载将失败。 若要测试从社区中心下载扩展,请删除导入的扩展,然后从社区中心下载。