Delen via


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