커뮤니티 허브를 통해 콘솔 확장 등록

콘솔 확장 작성자는 커뮤니티 허브에 작성한 확장을 기여할 수 있습니다. 커뮤니티 허브 사용자는 확장을 다운로드하고 Configuration Manager 계층 구조에서 확장을 설치할 수 있습니다. 커뮤니티 허브를 통해 확장을 기여하면 이전 배포 프로세스가 대체됩니다.

버전 정보

커뮤니티 허브에서 콘솔 확장을 다운로드하려면 다음 중 하나가 필요합니다.

  • 기술 미리 보기 버전의 Configuration Manager
  • Configuration Manager 버전 2103 이상

다음 버전으로 로컬로 가져와 서 자체 서명된 확장을 테스트할 수 있습니다.

  • 기술 미리 보기 버전의 Configuration Manager
  • Configuration Manager 버전 2103 이상

서명되지 않은 확장을 로컬로 가져올 수 있습니다. 서명되지 않은 확장은 로컬 가져오기 및 테스트 목적으로만 사용됩니다. 서명되지 않은 확장은 커뮤니티 허브에 제출할 수 없습니다. 서명되지 않은 확장을 가져오려면 다음 버전 중 하나가 필요합니다.

버전 2111부터 콘솔 확장 가져오기 마법사를 사용하여 서명된 확장과 서명되지 않은 확장을 모두 가져올 수 있습니다.

필수 조건

Configuration Manager 관리자가 다운로드할 수 있도록 커뮤니티 허브에 콘솔 확장을 등록하려면 다음 필수 구성 요소가 필요합니다.

  • 커뮤니티 허브에 기여하기 위한 모든 필수 구성 요소 충족

  • 모든 범위 권한이 있는 전체 관리자를 Configuration Manager.

  • 게시할 준비가 되면 authenticode 서명 .cab 된 파일의 유효한 페이로드입니다. 파일에 .cab 는 다음 항목이 포함되어야 합니다.

    • 라는 매니페스트 파일 manifest.xml
    • 확장의 작성자 및 버전은 에 나열되어야 합니다. manifest.xml
    • 확장에 대한 모든 관련 파일이 파일에 있어야 .cab 합니다.
      • 각 파일은 매니페스트에 나열되어야 하며 올바른 이름과 SHA256 해시가 있어야 합니다.

확장 만들기

커뮤니티 허브에 대한 확장을 만드는 것은 이전에 수행한 방식과 크게 다르지 않습니다. 그러나 더 이상 해당 %ProgramFiles%\Microsoft Endpoint Manager\AdminConsole\XmlStorage\Extensions 폴더에 파일을 설치할 필요가 없습니다. 이는 새 manifest.xml 파일의 함수에 속합니다. 여전히 다음 항목을 만들 수 있습니다.

  • 작업
  • Forms​​
  • 관리 클래스
  • 노드
  • 보기
  • 원하는 마법사 프레임워크를 사용하여 사용자 지정 마법사를 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를 편집한 후 다음 PowerShell 스크립트를 실행합니다$adminServiceProvider.

    • $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

중요

관리 서비스를 통해 게시하여 콘솔에 로컬로 확장을 가져오는 경우 커뮤니티 허브에서 동일한 확장을 다운로드하려고 하면 다운로드가 실패합니다. 커뮤니티 허브에서 확장 다운로드를 테스트하려면 가져온 확장을 삭제한 다음 커뮤니티 허브에서 다운로드합니다.

다음 단계