コミュニティ ハブを使用したコンソール拡張機能の登録

コンソール拡張機能の作成者は、コミュニティ ハブに書き込んだ拡張機能を投稿できます。 コミュニティ ハブユーザーは、拡張機能をダウンロードし、Configuration Manager階層全体でそれらのインストールを管理できます。 Community ハブを介した拡張機能の投稿は、 以前のデプロイ プロセスよりも優先されます。

バージョン情報

Community ハブからコンソール拡張機能をダウンロードするには、次のいずれかが必要です。

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

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

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

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

バージョン 2111 以降では、コンソール拡張機能のインポート ウィザードを使用して、署名付き拡張機能と署名されていない拡張機能の両方をインポートできます。

前提条件

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>

テスト用にサイトに拡張機能を登録する

拡張機能をビルドし、authenticode 署名された.cabファイルにパッケージ化した場合は、Configuration Manager ラボ環境でテストできます。 これを行うには、 管理サービスを通じて投稿します。 拡張機能がサイトに挿入されたら、その拡張機能を承認し、[ コンソール拡張機能 ] ノードからローカルにインストールできます。

重要

ローカル テストでは、バージョン 2107 以降を使用するときに署名されていないコンソール拡張機能をインポートできます。 詳細と追加のインポート方法については、「 コンソール拡張機能のインポート」を参照してください。

  1. $cabFilePathを編集した後、次の $adminServiceProvider 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 コンソールで、[管理>の概要]、[>更新およびサービスコンソール拡張機能] > に移動します。

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

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

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

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

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

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

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

重要

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

次の手順