管理対象ノードに拡張機能のペイロードをインストールするInstall extension payload on a managed node

適用先:Windows Admin Center、Windows Admin Center PreviewApplies To: Windows Admin Center, Windows Admin Center Preview

セットアップSetup

注意

このガイドに従うには、build 1.2.1904.02001 以降が必要です。To follow this guide, you will need build 1.2.1904.02001 or higher. ビルド番号を確認するには、Windows 管理センターを開き、右上にある疑問符をクリックします。To check your build number open Windows Admin Center and click the question mark in the top right.

Windows 管理センター用のツール拡張機能をまだ作成していない場合は、作成します。If you haven't already, create a tool extension for Windows Admin Center. 完了したら、拡張機能を作成するときに使用される値をメモしておきます。After you have completed this make note of the values used when creating an extension:

Value 説明Explanation Example
{!Company Name} 会社名 (スペースを含む)Your company name (with spaces) Contoso
{!Tool Name} (スペースを含む) ツール名Your tool name (with spaces) InstallOnNode

ツール拡張フォルダー内にフォルダーを作成 Node {!Tool Name}\Node します ()。Inside your tool extension folder create a Node folder ({!Tool Name}\Node). この API を使用すると、このフォルダーに格納されているすべてのものが、管理対象ノードにコピーされます。Anything placed in this folder will be copied to the managed node when using this API. ユースケースに必要なすべてのファイルを追加します。Add any files necessary for your use case.

また、スクリプトも作成 {!Tool Name}\Node\installNode.ps1 します。Also create a {!Tool Name}\Node\installNode.ps1 script. このスクリプトは、すべてのファイルが {!Tool Name}\Node フォルダーから管理対象ノードにコピーされると、管理ノードで実行されます。This script will be ran on the managed node once all files are copied from the {!Tool Name}\Node folder to the managed node. ユースケースのロジックを追加します。Add any additional logic for your use case. ファイルの例を {!Tool Name}\Node\installNode.ps1 次に示します。An example {!Tool Name}\Node\installNode.ps1 file:

# Add logic for installing payload on managed node
echo 'Success'

注意

{!Tool Name}\Node\installNode.ps1には、API が検索する特定の名前があります。{!Tool Name}\Node\installNode.ps1 has a specific name that the API will look for. このファイルの名前を変更すると、エラーが発生します。Changing the name of this file will cause an error.

UI との統合Integration with UI

\src\app\default.component.ts次のように更新します。Update \src\app\default.component.ts to the following:

import { Component } from '@angular/core';
import { AppContextService } from '@microsoft/windows-admin-center-sdk/angular';
import { Observable } from 'rxjs';

@Component({
  selector: 'default-component',
  templateUrl: './default.component.html',
  styleUrls: ['./default.component.css']
})

export class DefaultComponent {
  constructor(private appContextService: AppContextService) { }

  public response: any;
  public loading = false;

  public installOnNode() {
    this.loading = true;
    this.post('{!Company Name}.{!Tool Name}', '1.0.0',
      this.appContextService.activeConnection.nodeName).subscribe(
        (response: any) => {
          console.log(response);
          this.response = response;
          this.loading = false;
        },
        (error) => {
          console.log(error);
          this.response = error;
          this.loading = false;
        }
      );
  }

  public post(id: string, version: string, targetNode: string): Observable<any> {
    return this.appContextService.node.post(targetNode,
      `features/extensions/${id}/versions/${version}/install`);
  }

}

拡張機能を作成するときに使用された値にプレースホルダーを更新します。Update placeholders to values that were used when creating the extension:

this.post('contoso.install-on-node', '1.0.0',
      this.appContextService.activeConnection.nodeName).subscribe(
        (response: any) => {
          console.log(response);
          this.response = response;
          this.loading = false;
        },
        (error) => {
          console.log(error);
          this.response = error;
          this.loading = false;
        }
      );

また \src\app\default.component.html 、次のものに更新します。Also update \src\app\default.component.html to:

<button (click)="installOnNode()">Click to install</button>
<sme-loading-wheel *ngIf="loading" size="large"></sme-loading-wheel>
<p *ngIf="response">{{response}}</p>

最後 \src\app\default.module.ts は次のようになります。And lastly \src\app\default.module.ts:

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';

import { LoadingWheelModule } from '@microsoft/windows-admin-center-sdk/angular';
import { DefaultComponent } from './default.component';
import { Routing } from './default.routing';

@NgModule({
  imports: [
    CommonModule,
    LoadingWheelModule,
    Routing
  ],
  declarations: [DefaultComponent]
})
export class DefaultModule { }

NuGet パッケージの作成とインストールCreating and installing a NuGet Package

最後の手順では、追加したファイルを使用して NuGet パッケージをビルドし、そのパッケージを Windows 管理センターにインストールします。The last step is building a NuGet package with the files we have added and then installing that package in Windows Admin Center.

以前に拡張機能パッケージを作成していない場合は、「発行拡張機能ガイド」に従ってください。Follow the Publishing Extensions guide if you have not created an extension package before.

重要

この拡張機能の nuspec ファイルでは、 <id> 値がプロジェクトの名前と一致し manifest.json<version> に追加されたものと一致することが重要です \src\app\default.component.tsIn your .nuspec file for this extension, it is important that the <id> value matches the name in your project's manifest.json and the <version> matches what was added to \src\app\default.component.ts. また、の下にエントリを追加し <files> ます。Also add an entry under <files>:

<file src="Node\**\*.*" target="Node" />.<file src="Node\**\*.*" target="Node" />.

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="https://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>contoso.install-on-node</id>
    <version>1.0.0</version>
    <authors>Contoso</authors>
    <owners>Contoso</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <projectUrl>https://msft-sme.myget.org/feed/windows-admin-center-feed/package/nuget/contoso.sme.install-on-node-extension</projectUrl>
    <licenseUrl>http://YourLicenseLink</licenseUrl>
    <iconUrl>http://YourLogoLink</iconUrl>
    <description>Install on node extension by Contoso</description>
    <copyright>(c) Contoso. All rights reserved.</copyright>
  </metadata>
    <files>
    <file src="bundle\**\*.*" target="ux" />
    <file src="package\**\*.*" target="gateway" />
    <file src="Node\**\*.*" target="Node" />
  </files>
</package>

このパッケージを作成したら、そのフィードへのパスを追加します。Once this package is created, add a path to that feed. Windows 管理センターで、[設定] [> 拡張機能 > フィード] に移動し、パッケージが存在する場所へのパスを追加します。In Windows Admin Center go to Settings > Extensions > Feeds and add the path to where that package exists. 拡張機能のインストールが完了すると、ボタンをクリックすると、 install API が呼び出されます。When your extension is done being installed, you should be able to click the install button and the API will be called.