De zichtbaarheid van uw hulpprogramma in een oplossing beheren
Het kan voorkomen dat u uw extensie of hulpprogramma wilt uitsluiten (of verbergen) uit de lijst met beschikbare hulpprogramma's. Als uw hulpprogramma bijvoorbeeld alleen is gericht op Windows Server 2016 (niet op oudere versies), wilt u mogelijk niet dat een gebruiker die verbinding maakt met een Windows Server 2012 R2-server uw hulpprogramma helemaal niet kan zien. (Stelt u zich de gebruikerservaring voor: ze klikken erop, wachten tot het hulpprogramma is geladen, alleen om een bericht te krijgen dat de functies niet beschikbaar zijn voor hun verbinding.) U kunt definiëren wanneer u uw functie wilt weergeven (of verbergen) in het manifest.json-bestand van het hulpprogramma.
Opties voor het bepalen wanneer een hulpprogramma moet worden weergegeven
Er zijn drie verschillende opties die u kunt gebruiken om te bepalen of uw hulpprogramma moet worden weergegeven en beschikbaar moet zijn voor een specifieke server- of clusterverbinding.
- localhost
- inventaris (een matrix met eigenschappen)
- script
LocalHost
De eigenschap localHost van het object Voorwaarden bevat een Booleaanse waarde die kan worden afgeleid als het verbindingsknooppunt localHost is (dezelfde computer waarop Windows Admin Center is geïnstalleerd) of niet. Door een waarde door te geven aan de eigenschap, geeft u aan wanneer (de voorwaarde) het hulpprogramma moet weergeven. Als u bijvoorbeeld alleen wilt dat het hulpprogramma wordt weergegeven als de gebruiker in feite verbinding maakt met de lokale host, stelt u het als volgt in:
"conditions": [
{
"localhost": true
}]
Als u wilt dat de tool alleen wordt weergegeven wanneer het verbindingsknooppunt niet localhost is:
"conditions": [
{
"localhost": false
}]
Hier ziet u hoe de configuratie-instellingen alleen een hulpprogramma weergeven wanneer het verbindingsknooppunt geen localhost is:
"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
}
]
}
]
}
Inventariseigenschappen
De SDK bevat een vooraf samengestelde set inventariseigenschappen die u kunt gebruiken om voorwaarden te bouwen om te bepalen wanneer uw hulpprogramma beschikbaar moet zijn of niet. Er zijn negen verschillende eigenschappen in de matrix Inventaris:
Naam van propertie | Verwacht waardetype |
---|---|
computerfabrikant | touw |
besturingssysteem-SKU | nummer |
besturingssysteemversie | version_string (bijvoorbeeld: "10.1.*") |
productType | nummer |
clusterFqdn | touw |
isHyperVRoleGeïnstalleerd | Booleaans |
isHyperVPowershellInstalled | Booleaans |
zijnBeheerhulpmiddelenBeschikbaar | Booleaans |
isWmfInstalled | Booleaans |
Elk object in de inventarismatrix moet voldoen aan de volgende json-structuur:
"<property name>": {
"type": "<expected type>",
"operator": "<defined operator to use>",
"value": "<expected value to evaluate using the operator>"
}
Operatorwaarden
Bediener | Beschrijving |
---|---|
gt | groter dan |
Ge | groter dan of gelijk aan |
lt | kleiner dan |
le | kleiner dan of gelijk aan |
Eq | gelijk aan |
Ne | niet gelijk aan |
is | controleren of een waarde waar is |
niet | controleren of een waarde onwaar is |
Bevat | item bestaat in een string |
bevatNiet | element bestaat niet in een tekenreeks |
Gegevenstypen
Beschikbare opties voor de eigenschap Type:
Typ | Beschrijving |
---|---|
Versie | een versienummer (bijvoorbeeld: 10.1.*) |
nummer | een numerieke waarde |
touw | een tekenreekswaarde |
Booleaans | waar of onwaar |
Waardetypen
De eigenschap 'waarde' accepteert deze typen:
- touw
- nummer
- Booleaans
Een correct gevormde inventarisvoorwaardeset ziet er als volgt uit:
"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"
}
}
}
]
}
]
}
Script
Ten slotte kunt u een aangepast PowerShell-script uitvoeren om de beschikbaarheid en status van het knooppunt te identificeren. Alle scripts moeten een object retourneren met de volgende structuur:
@{
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'; };
}
De eigenschap State is de cruciale waarde die bepaalt of uw extensie wordt weergegeven of verborgen in de lijst met hulpprogramma's. De toegestane waarden zijn:
Waarde | Beschrijving |
---|---|
Beschikbaar | De extensie moet worden weergegeven in de lijst met hulpprogramma's. |
Niet ondersteund | De extensie mag niet worden weergegeven in de lijst met hulpprogramma's. |
Niet geconfigureerd | Dit is een tijdelijke aanduiding voor toekomstig werk dat de gebruiker om aanvullende configuratie vraagt voordat het hulpprogramma beschikbaar wordt gesteld. Deze waarde resulteert momenteel in het weergeven van het hulpprogramma en is het functionele equivalent van 'Beschikbaar'. |
Als we bijvoorbeeld willen dat een hulpprogramma alleen wordt geladen als op de externe server BitLocker is geïnstalleerd, ziet het script er als volgt uit:
$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
Een invoerpuntconfiguratie met behulp van de scriptoptie ziet er als volgt uit:
"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"
}
]
}
]
}
Ondersteuning voor meerdere vereistensets
U kunt meer dan één set vereisten gebruiken om te bepalen wanneer u uw hulpprogramma wilt weergeven door meerdere 'vereisten'-blokken te definiëren.
Als u bijvoorbeeld uw hulpprogramma wilt weergeven als 'scenario A' OF 'scenario B' waar is, definieert u twee vereistenblokken; als een van beide waar is (dat wil gezegd, aan alle voorwaarden binnen een vereistenblok wordt voldaan), wordt het hulpprogramma weergegeven.
"entryPoints": [
{
"requirements": [
{
"solutionIds": [
…"scenario A"…
],
"connectionTypes": [
…"scenario A"…
],
"conditions": [
…"scenario A"…
]
},
{
"solutionIds": [
…"scenario B"…
],
"connectionTypes": [
…"scenario B"…
],
"conditions": [
…"scenario B"…
]
}
]
}
Ondersteuningsvoorwaardebereiken
U kunt ook een reeks voorwaarden definiëren door meerdere voorwaardenblokken met dezelfde eigenschap te definiëren, maar met verschillende operators.
Wanneer dezelfde eigenschap wordt gedefinieerd met verschillende operators, wordt het hulpprogramma weergegeven zolang de waarde tussen de twee voorwaarden ligt.
Dit hulpprogramma wordt bijvoorbeeld weergegeven zolang het besturingssysteem een versie is tussen 6.3.0 en 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"
}
}
}
]
}
]
}