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"
}
}
}
]
}
]
}