Bagikan melalui


Mengontrol visibilitas alat Anda dalam solusi

Mungkin ada kalanya Anda ingin mengecualikan (atau menyembunyikan) ekstensi atau alat Anda dari daftar alat yang tersedia. Misalnya, jika alat Anda hanya menargetkan Windows Server 2016 (bukan versi yang lebih lama), Anda mungkin tidak ingin pengguna yang tersambung ke server Windows Server 2012 R2 melihat alat Anda sama sekali. (Bayangkan pengalaman pengguna - mereka mengkliknya, menunggu alat dimuat, hanya untuk mendapatkan pesan bahwa fitur-fiturnya tidak tersedia untuk koneksi mereka.) Anda dapat menentukan kapan harus menampilkan (atau menyembunyikan) fitur Anda dalam file manifest.json alat.

Opsi untuk memutuskan kapan harus menampilkan alat

Ada tiga opsi berbeda yang dapat Anda gunakan untuk menentukan apakah alat Anda harus ditampilkan dan tersedia untuk server atau koneksi kluster tertentu.

  • localhost
  • inventory (array properti)
  • skrip

LocalHost

Properti localHost dari objek Kondisi berisi nilai boolean yang dapat dievaluasi untuk menyimpulkan jika simpul yang terhubung adalah localHost (komputer yang sama dengan tempat Pusat Admin Windows diinstal) atau tidak. Dengan meneruskan nilai ke properti , Anda menunjukkan kapan (kondisi) untuk menampilkan alat. Misalnya jika Anda hanya ingin alat ditampilkan jika pengguna sebenarnya terhubung ke host lokal, siapkan seperti ini:

"conditions": [
{
    "localhost": true
}]

Atau, jika Anda hanya ingin alat Anda ditampilkan saat node penghubung bukan localhost:

"conditions": [
{
    "localhost": false
}]

Berikut adalah tampilan pengaturan konfigurasi untuk hanya menampilkan alat ketika node penghubung bukan localhost:

"entryPoints": [
{
    "entryPointType": "tool",
    "name": "main",
    "urlName": "processes",
    "displayName": "resources:strings:displayName",
    "description": "resources:strings:description",
    "icon": "sme-icon:icon-win-serverProcesses",
    "path": "",
    "requirements": [
    {
        "solutionIds": [
        "msft.sme.server-manager!windowsClients"
        ],
        "connectionTypes": [
        "msft.sme.connection-type.windows-client"
        ],
        "conditions": [
        {
            "localhost": true
        }
        ]
    }
    ]
}

Properti inventori

SDK menyertakan serangkaian properti inventaris yang telah dikuratori sebelumnya yang dapat Anda gunakan untuk membangun kondisi untuk menentukan kapan alat Anda harus tersedia atau tidak. Ada sembilan properti berbeda dalam array 'inventori':

Nama Properti Jenis Nilai yang Diharapkan
computerManufacturer string
operatingSystemSKU number
operatingSystemVersion version_string (misalnya: "10.1.*")
productType number
clusterFqdn string
isHyperVRoleInstalled Boolean
isHyperVPowershellInstalled Boolean
isManagementToolsAvailable Boolean
isWmfInstalled Boolean

Setiap objek dalam array inventori harus sesuai dengan struktur json berikut:

"<property name>": {
    "type": "<expected type>",
    "operator": "<defined operator to use>",
    "value": "<expected value to evaluate using the operator>"
}

Nilai operator

Operator Deskripsi
gt lebih dari
ge lebih besar dari atau sama dengan
lt kurang dari
le kurang dari atau sama dengan
eq sama dengan
ne Tidak sama dengan
is memeriksa apakah nilai benar
not memeriksa apakah nilai salah
mengandung item ada dalam string
notContains item tidak ada dalam string

Jenis data

Opsi yang tersedia untuk properti 'jenis':

Tipe Deskripsi
version nomor versi (misalnya: 10.1.*)
number nilai numerik
string nilai string
Boolean BENAR atau SALAH

Jenis nilai

Properti 'nilai' menerima jenis ini:

  • string
  • number
  • Boolean

Kumpulan kondisi inventarisasi yang dibentuk dengan benar terlihat seperti ini:

"entryPoints": [
{
    "entryPointType": "tool",
    "name": "main",
    "urlName": "processes",
    "displayName": "resources:strings:displayName",
    "description": "resources:strings:description",
    "icon": "sme-icon:icon-win-serverProcesses",
    "path": "",
    "requirements": [
    {
        "solutionIds": [
        "msft.sme.server-manager!servers"
        ],
        "connectionTypes": [
        "msft.sme.connection-type.server"
        ],
        "conditions": [
        {
            "inventory": {
            "operatingSystemVersion": {
                "type": "version",
                "operator": "gt",
                "value": "6.3"
            },
            "operatingSystemSKU": {
                "type": "number",
                "operator": "eq",
                "value": "8"
            }
            }
        }
        ]
    }
    ]
}

Skrip

Terakhir, Anda dapat menjalankan skrip PowerShell kustom untuk mengidentifikasi ketersediaan dan status simpul. Semua skrip harus mengembalikan objek dengan struktur berikut:

@{
    State = 'Available' | 'NotSupported' | 'NotConfigured';
    Message = '<Message to explain the reason of state such as not supported and not configured.>';
    Properties =
        @{ Name = 'Prop1'; Value = 'prop1 data'; Type = 'string' },
        @{Name='Prop2'; Value = 12345678; Type='number'; };
}

Properti Status adalah nilai penting yang akan mengontrol keputusan untuk menampilkan atau menyembunyikan ekstensi Anda dalam daftar alat. Nilai yang diperbolehkan adalah:

Nilai Deskripsi
Tersedia Ekstensi harus ditampilkan dalam daftar alat.
NotSupported Ekstensi tidak boleh ditampilkan dalam daftar alat.
Tidak Dikonfigurasi Ini adalah nilai tempat penampung untuk pekerjaan di masa mendatang yang akan meminta konfigurasi tambahan kepada pengguna sebelum alat tersedia. Saat ini nilai ini akan mengakibatkan alat ditampilkan dan setara dengan 'Tersedia' fungsional.

Misalnya, jika kita ingin alat dimuat hanya jika server jarak jauh menginstal BitLocker, skrip terlihat seperti ini:

$response = @{
    State = 'NotSupported';
    Message = 'Not executed';
    Properties = @{ Name = 'Prop1'; Value = 'prop1 data'; Type = 'string' },
        @{Name='Prop2'; Value = 12345678; Type='number'; };
}

if (Get-Module -ListAvailable -Name servermanager) {
    Import-module servermanager;
    $isInstalled = (Get-WindowsFeature -name bitlocker).Installed;
    $isGood = $isInstalled;
}

if($isGood) {
    $response.State = 'Available';
    $response.Message = 'Everything should work.';
}

$response

Konfigurasi titik masuk menggunakan opsi skrip terlihat seperti ini:

"entryPoints": [
{
    "entryPointType": "tool",
    "name": "main",
    "urlName": "processes",
    "displayName": "resources:strings:displayName",
    "description": "resources:strings:description",
    "icon": "sme-icon:icon-win-serverProcesses",
    "path": "",
    "requirements": [
    {
        "solutionIds": [
        "msft.sme.server-manager!windowsClients"
        ],
        "connectionTypes": [
        "msft.sme.connection-type.windows-client"
        ],
        "conditions": [
        {
            "localhost": true,
            "inventory": {
            "operatingSystemVersion": {
                "type": "version",
                "operator": "eq",
                "value": "10.0.*"
            },
            "operatingSystemSKU": {
                "type": "number",
                "operator": "eq",
                "value": "4"
            }
            },
            "script": "$response = @{ State = 'NotSupported'; Message = 'Not executed'; Properties = @{ Name = 'Prop1'; Value = 'prop1 data'; Type = 'string' }, @{Name='Prop2'; Value = 12345678; Type='number'; }; }; if (Get-Module -ListAvailable -Name servermanager) { Import-module servermanager; $isInstalled = (Get-WindowsFeature -name bitlocker).Installed; $isGood = $isInstalled; }; if($isGood) { $response.State = 'Available'; $response.Message = 'Everything should work.'; }; $response"
        }
        ]
    }
    ]
}

Mendukung beberapa set persyaratan

Anda dapat menggunakan lebih dari satu set persyaratan untuk menentukan kapan harus menampilkan alat Anda dengan menentukan beberapa blok "persyaratan".

Misalnya, untuk menampilkan alat Anda jika "skenario A" ATAU "skenario B" adalah benar, tentukan dua blok persyaratan; jika benar (artinya, semua kondisi dalam blok persyaratan terpenuhi), alat ditampilkan.

"entryPoints": [
{
    "requirements": [
    {
        "solutionIds": [
            …"scenario A"…
        ],
        "connectionTypes": [
            …"scenario A"…
        ],
        "conditions": [
            …"scenario A"…
        ]
    },
    {
        "solutionIds": [
            …"scenario B"…
        ],
        "connectionTypes": [
            …"scenario B"…
        ],
        "conditions": [
            …"scenario B"…
        ]
    }
    ]
}

Rentang kondisi pendukung

Anda juga dapat menentukan berbagai kondisi dengan menentukan beberapa blok "kondisi" dengan properti yang sama, tetapi dengan operator yang berbeda.

Ketika properti yang sama didefinisikan dengan operator yang berbeda, alat ditampilkan selama nilainya berada di antara dua kondisi.

Misalnya, alat ini ditampilkan selama sistem operasi adalah versi antara 6.3.0 dan 10.0.0:

"entryPoints": [
{
    "entryPointType": "tool",
    "name": "main",
    "urlName": "processes",
    "displayName": "resources:strings:displayName",
    "description": "resources:strings:description",
    "icon": "sme-icon:icon-win-serverProcesses",
    "path": "",
    "requirements": [
    {
        "solutionIds": [
             "msft.sme.server-manager!servers"
        ],
        "connectionTypes": [
             "msft.sme.connection-type.server"
        ],
        "conditions": [
        {
            "inventory": {
                "operatingSystemVersion": {
                    "type": "version",
                    "operator": "gt",
                    "value": "6.3.0"
                },
            }
        },
        {
            "inventory": {
                "operatingSystemVersion": {
                    "type": "version",
                    "operator": "lt",
                    "value": "10.0.0"
                }
            }
        }
        ]
    }
    ]
}