コミュニティ ハブを介した本体の拡張機能の登録

コンソール拡張機能の作成者は、作成した拡張機能をコミュニティ ハブに投稿できます。 コミュニティ ハブのユーザーは、拡張機能をダウンロードし、Configuration Manager 階層全体で拡張機能のインストールを管理できます。 コミュニティ ハブを介した拡張機能の提供は、 以前の展開プロセスに優先します。

バージョン情報

コミュニティ ハブから本体の拡張機能をダウンロードするには、次のいずれかが必要です:

  • Configuration Manager のテクニカル プレビュー バージョン
  • Configuration Manager バージョン 2103 以降

次のバージョンで ローカルにインポートすることで、 独自の署名済み拡張機能をテストできます。

  • Configuration Manager のテクニカル プレビュー バージョン
  • Configuration Manager バージョン 2103 以降

署名されていない拡張機能はローカルにインポートできます。 署名されていない拡張機能は、ローカル インポートとテストの目的専用です。 署名されていない拡張機能は、コミュニティ ハブに送信できません。 署名されていない拡張子をインポートするには、次のいずれかのバージョンが必要です。

バージョン 2111 以降では、[ Import Console Extension (本体拡張機能のインポート )] ウィザードを使用して、署名済み拡張機能と署名されていない拡張機能の両方をインポートできます。

前提条件

Configuration Manager 管理者がダウンロードできるように、コンソール拡張機能をコミュニティ ハブに登録するには、次の前提条件が必要です。

  • コミュニティ ハブに貢献するためのすべての前提条件を満たす

  • すべてのスコープ権限を持つ Configuration Manager の完全管理者

  • 公開する準備ができたら、Authenticode で署名された .cab ファイル内の有効なペイロード.cab ファイルには以下の項目を含める必要があります。

    • 名前が付けられたマニフェスト ファイル manifest.xml
    • 拡張機能の作成者と バージョン は、 manifest.xml
    • 拡張子に関連するすべてのファイルが .cab ファイルに含まれている必要があります
      • 各ファイルはマニフェストに一覧表示され、正しい名前と SHA256 ハッシュが含まれている必要があります

拡張機能を作成する

コミュニティ ハブの拡張機能の作成は、以前の方法と大きな違いはありません。 ただし、ファイルをそれぞれの %ProgramFiles%\Microsoft Endpoint Manager\AdminConsole\XmlStorage\Extensions フォルダーにインストールする必要はなくなりました。 これは、新しい manifest.xml ファイルの機能の一部です。 次のアイテムは引き続き作成できます。

  • アクション
  • Forms
  • 管理クラス
  • Nodes
  • Views
  • 任意のウィザード フレームワークを使用して、独自のカスタム ウィザードを Configuration Manager コンソールに統合する
    • 既存の Configuration Manager コンソール フレームワークを使用してウィザードを作成することはできません。
    • 既存の Configuration Manager ウィザードから手順を変更または削除することはできません。

ヒント

コミュニティ ハブの GitHub リポジトリから、 サンプル拡張機能の cab ファイルをダウンロードできます。

有効なペイロード cab ファイルを作成する

拡張機能のファイルを作成したら、 manifest.xml ファイルを作成し、Authenticode 署名された .cab ファイルにすべてパッケージ化します。

  • Authenticode で署名された .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. $adminServiceProvider$cabFilePathを編集した後、次の PowerShell スクリプトを実行します。

    • $adminServiceProvider - 管理サービスがインストールされている最上位の SMSProvider サーバー
    • $cabFilePath - 拡張機能の authenticode で署名された .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 コンソールで、[管理>概要>Updates] および [サービス>コンソール拡張機能] に移動します。

  3. 拡張機能を選択してから、[ インストールの承認] を選択します。

  4. 現在の本体に拡張機能をインストールするには、[ローカル拡張機能] の [インストール] を選択します。

  5. 同じ拡張機能とバージョンで PowerShell スクリプトを再実行すると、現在の既存のスクリプトが上書きされます。

コミュニティ ハブで拡張機能を共有する

Configuration Manager のテクニカル プレビュー バージョンにのみ適用されます

コミュニティ ハブに参加していること、および参加要求が承認された後に招待を受け入れたことを確認します。 拡張機能は、 他のコミュニティ ハブ オブジェクトを作成するのと同じ方法で投稿します。 ただし、延長のために提供する必要がある追加の要件と追加情報があります。 コンソール拡張機能をコミュニティ ハブに投稿する場合は、コンテンツに署名する必要があります。 コンソール拡張機能のコンテンツは、Microsoft によってホストされていません。 アイテムを投稿すると、署名済み .cab ファイルの場所と拡張子に関するその他の情報を指定するように求められます。 拡張機能をコントリビューションするには、次の項目が必要です。

  • コンテンツ URL: ダウンロード可能な .cab ファイルの場所
  • コンテンツの SHA-256 ハッシュ: .cab ファイルの SHA-256 ハッシュ
  • ライセンス URL: 拡張機能のライセンスの URL (例: https://mit-license.org/
  • プライバシーに関する声明の URL: プライバシーに関する声明の URL

重要

管理サービスを通じて拡張機能を投稿してコンソールにローカルにインポートする場合、コミュニティ ハブから同じ拡張機能をダウンロードしようとすると、ダウンロードは失敗します。 コミュニティ ハブから拡張機能のダウンロードをテストするには、インポートされた拡張機能を削除してから、コミュニティ ハブからダウンロードします。

次の手順