Kontrollera verktygets synlighet i en lösning
Det kan finnas tillfällen då du vill undanta (eller dölja) tillägget eller verktyget från listan över tillgängliga verktyg. Om verktyget till exempel endast riktar sig till Windows Server 2016 (inte äldre versioner) kanske du inte vill att en användare som ansluter till en Windows Server 2012 R2-server ska se verktyget alls. (Föreställ dig användarupplevelsen – de klickar på den, väntar på att verktyget ska läsas in, bara för att få ett meddelande om att dess funktioner inte är tillgängliga för anslutningen.) Du kan definiera när du ska visa (eller dölja) din funktion i verktygets manifest.json-fil.
Alternativ för att bestämma när ett verktyg ska visas
Det finns tre olika alternativ som du kan använda för att avgöra om verktyget ska visas och vara tillgängligt för en specifik server eller klusteranslutning.
- localhost
- inventering (en matris med egenskaper)
- manuskript
LocalHost
Egenskapen localHost för villkorsobjektet innehåller ett booleskt värde som kan utvärderas för att härleda om den anslutande noden är localHost (samma dator som Windows Admin Center är installerat på) eller inte. Genom att skicka ett värde till egenskapen anger du när (villkoret) ska visa verktyget. Om du till exempel bara vill att verktyget ska visas när användaren faktiskt ansluter till lokalvärden, konfigurerar du det så här:
"conditions": [
{
"localhost": true
}]
Alternativt, om du bara vill att verktyget ska visas när den anslutande noden inte är localhost:
"conditions": [
{
"localhost": false
}]
Så här ser konfigurationsinställningarna ut för att bara visa ett verktyg när den anslutande noden inte är 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
}
]
}
]
}
Inventeringsegenskaper
SDK:t innehåller en fördefinierad uppsättning lageregenskaper som du kan använda för att skapa villkor för att avgöra när verktyget ska vara tillgängligt eller inte. Det finns nio olika egenskaper i matrisen "inventory":
Egenskapsnamn | Förväntad värdetyp |
---|---|
datorproducent | sträng |
operatingSystemSKU | nummer |
operativsystemversion | version_string (t.ex. "10.1.*") |
produkttyp | nummer |
klusterFQDN | sträng |
ärHyperVRollInstallerad | booleskt |
isHyperVPowershellInstallerad | booleskt |
isManagementToolsAvailable | booleskt |
isWmfInstalled | booleskt |
Varje objekt i inventeringsmatrisen måste överensstämma med följande json-struktur:
"<property name>": {
"type": "<expected type>",
"operator": "<defined operator to use>",
"value": "<expected value to evaluate using the operator>"
}
Operatorvärden
Operatör | Beskrivning |
---|---|
GT | mer än |
ge | större än eller lika med |
lt | mindre än |
Le | mindre än eller lika med |
Eq | lika med |
Ne | inte lika med |
är | kontrollera om ett värde är sant |
inte | kontrollera om ett värde är falskt |
innehåller | objektet finns i en sträng |
inte innehåller | objektet finns inte i en sträng |
Datatyper
Tillgängliga alternativ för egenskapen "typ":
Typ | Beskrivning |
---|---|
version | ett versionsnummer (t.ex. 10.1.*) |
nummer | ett numeriskt värde |
sträng | ett strängvärde |
booleskt | sant eller falskt |
Värdetyper
Egenskapen "value" accepterar följande typer:
- sträng
- nummer
- booleskt
En korrekt utformad inventeringsvillkoruppsättning ser ut så här:
"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"
}
}
}
]
}
]
}
Skript
Slutligen kan du köra ett anpassat PowerShell-skript för att identifiera nodens tillgänglighet och tillstånd. Alla skript måste returnera ett objekt med följande struktur:
@{
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'; };
}
Tillståndsegenskapen är det viktigaste värdet som styr beslutet att visa eller dölja själva tillägget i verktygslistan. De tillåtna värdena är:
Värde | Beskrivning |
---|---|
Tillgängligt | Tillägget ska visas i verktygslistan. |
Stöds inte | Tillägget ska inte visas i verktygslistan. |
InteKonfigurerad | Det här är ett platshållarvärde för framtida arbete som uppmanar användaren att konfigurera ytterligare innan verktyget görs tillgängligt. För närvarande resulterar det här värdet i att verktyget visas och är den funktionella motsvarigheten till "Tillgänglig". |
Till exempel, om vi vill att ett verktyg endast ska läsas in när fjärrservern har BitLocker installerat, ser skriptet ut så här:
$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
En startpunktskonfiguration med skriptalternativet ser ut så här:
"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"
}
]
}
]
}
Stöd för flera kravuppsättningar
Du kan använda mer än en uppsättning krav för att avgöra när verktyget ska visas genom att definiera flera "krav"-block.
Om du till exempel vill visa verktyget om "scenario A" ELLER "scenario B" är sant, definierar du två kravblock; om något av dessa är sant (dvs. alla villkor inom ett kravblock är uppfyllda) visas verktyget.
"entryPoints": [
{
"requirements": [
{
"solutionIds": [
…"scenario A"…
],
"connectionTypes": [
…"scenario A"…
],
"conditions": [
…"scenario A"…
]
},
{
"solutionIds": [
…"scenario B"…
],
"connectionTypes": [
…"scenario B"…
],
"conditions": [
…"scenario B"…
]
}
]
}
Stödintervall för förhållanden
Du kan också definiera ett antal villkor genom att definiera flera "villkorsblock" med samma egenskap, men med olika operatorer.
När samma egenskap definieras med olika operatorer visas verktyget så länge värdet är mellan de två villkoren.
Det här verktyget visas till exempel så länge operativsystemet är en version mellan 6.3.0 och 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"
}
}
}
]
}
]
}