通过社区中心注册控制台扩展

控制台扩展作者可以贡献他们已写入社区中心的扩展。 社区中心用户可以下载扩展,并跨其Configuration Manager层次结构管理这些扩展的安装。 通过社区中心贡献扩展将取代 以前的部署过程

版本信息

若要从 社区中心下载控制台扩展,需要:

  • Configuration Manager的技术预览版
  • Configuration Manager版本 2103 或更高版本

可以通过使用以下版本 在本地导入 自己的已签名扩展来测试它们:

  • Configuration Manager的技术预览版
  • Configuration Manager版本 2103 或更高版本

可以在本地 导入未签名的扩展 。 未签名的扩展仅用于本地导入和测试目的。 无法将未签名的扩展提交到社区中心。 导入未签名的扩展需要以下版本之一:

从版本 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 或更高版本时导入未签名的控制台扩展。 有关详细信息和其他导入方法,请参阅 导入控制台扩展

  1. 编辑 和 $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."}
    
  2. 在Configuration Manager控制台中,转到“管理>概述>汇报和维护>控制台扩展”。

  3. 选择扩展,然后选择 “批准安装”。

  4. 若要在当前主机上安装扩展,请在“本地扩展”下选择“安装”。

  5. 使用相同的扩展和相同版本重新运行 PowerShell 脚本将覆盖当前现有脚本。

在社区中心共享扩展

仅适用于Configuration Manager的技术预览版

请确保已加入社区中心,并在加入请求获得批准后接受了邀请。 贡献扩展的方式与 贡献其他社区中心对象的方式相同。 但是,需要为扩展提供其他要求和其他信息。 向社区中心提供控制台扩展时,必须对内容进行签名。 控制台扩展的内容不由 Microsoft 托管。 贡献项目时,系统会要求你提供已签名 .cab 文件的位置以及扩展的其他信息。 提供扩展需要以下项:

  • 内容 URL:可 .cab 下载文件的位置
  • 内容的 SHA-256 哈希:文件的 SHA-256 哈希.cab
  • 许可证 URL:扩展许可证的 URL,例如 https://mit-license.org/
  • 隐私声明 URL:隐私声明的 URL

重要

如果通过管理服务将扩展本地导入控制台,则尝试从社区中心下载同一扩展时,下载将失败。 若要测试从社区中心下载扩展,请删除导入的扩展,然后从社区中心下载。

后续步骤