Alapszintű Windows PowerShell-szolgáltató létrehozása

Ez a témakör a kiindulási pont egy új szolgáltató Windows PowerShell elsajátításában. Az itt ismertetett alapszintű szolgáltató a szolgáltató indítási és leállítási módszereit biztosítja, és bár ez a szolgáltató nem biztosít lehetőséget az adattára elérésére vagy az adatok adattárban való lekért vagy beállítására, biztosítja az összes szolgáltató számára szükséges alapvető funkciókat.

Ahogy korábban említettük, az itt leírt alapszintű szolgáltató a szolgáltató indítási és leállítási módszereit implementálja. A Windows PowerShell a runtime ezeket a metódusokat hívja meg a szolgáltató inicializálása és inicializálása során.

Megjegyzés

A szolgáltatóról a szolgáltató által biztosított AccessDBSampleProvider01.cs fájlban talál Windows PowerShell.

A Windows PowerShell definiálása

A hálózati Windows PowerShell létrehozásának első lépése a .NET-osztály meghatározása. Ez az alapszintű szolgáltató meghatároz egy nevű osztályt, amely a AccessDBProvider System.Management.Automation.Provider.Cmdletprovider alaposztályból származik.

Javasoljuk, hogy a szolgáltatói osztályokat az API-névtér névterében helyezze el, például Providers xxx.PowerShell.Providers. Ez a szolgáltató a névteret használja, amelyben az összes Microsoft.Samples.PowerShell.Provider Windows PowerShell minta fut.

Megjegyzés

A nyilvános Windows PowerShell osztályát explicit módon nyilvánosként kell megjelölni. A nem nyilvánosként megjelölt osztályok alapértelmezés szerint belső, és a nyilvános Windows PowerShell találhatók.

Az alapszintű szolgáltató osztálydefiníciója a következő:

[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider

Közvetlenül az osztálydefiníció előtt deklarálnunk kell a System.Management.Automation.Provider.Cmdletproviderattribute attribútumot a [CmdletProvider()] szintaxissal.

Az attribútumszavak beállításával szükség esetén tovább deklarálhatja az osztályt. Figyelje meg, hogy az itt deklarált System.Management.Automation.Provider.Cmdletproviderattribute attribútum két paramétert tartalmaz. Az első attribútumparaméter határozza meg a szolgáltató alapértelmezett rövid nevét, amelyet a felhasználó később módosíthat. A második paraméter határozza meg Windows PowerShell által a szolgáltató által a Windows PowerShell futtatás során elérhetővé Windows PowerShell által meghatározott képességeket. A szolgáltatói képességek lehetséges értékeit a System.Management.Automation.Provider.Providercapabilities enumerálás határozza meg. Mivel ez egy alapszolgáltató, nem támogatja a képességeket.

Megjegyzés

A Windows PowerShell neve tartalmazza a szerelvény nevét és az Windows PowerShell által a szolgáltató regisztrációjakor meghatározott egyéb attribútumokat.

Állapotinformációk Provider-Specific meghatározása

A System.Management.Automation.Provider.Cmdletprovider alaposztály és az összes származtatott osztály állapot nélkülinek minősül, mert a Windows PowerShell-futtatás csak szükség szerint hoz létre szolgáltatói példányokat. Ezért ha a szolgáltató teljes körű vezérlést és állapotkarbantartást igényel a szolgáltatóspecifikus adatokhoz, akkor a System.Management.Automation.Providerinfo osztályból kell származtatnunk egy osztályt. A származtatott osztálynak meg kell határoznia az állapot fenntartásához szükséges tagokat, hogy a szolgáltatóspecifikus adatok elérhetők lesznek, amikor a Windows PowerShell-futtatás a System.Management.Automation.Provider.Cmdletprovider.Start* metódust hívja meg a szolgáltató inicializálásához.

A Windows PowerShell szolgáltató kapcsolatalapú állapotot is fenntarthat. További információ a kapcsolat állapotának fenntartásáról: PowerShell-meghajtószolgáltató létrehozása.

A szolgáltató inicializálása

A szolgáltató inicializálásához a Windows PowerShell a System.Management.Automation.Provider.Cmdletprovider.Start* metódust hívja meg az Windows PowerShell el. A legtöbb esetben a szolgáltató használhatja ennek a módszernek az alapértelmezett implementációját, amely egyszerűen visszaadja a szolgáltatót leíró System.Management.Automation.Providerinfo objektumot. Ha azonban további inicializálási információkat szeretne hozzáadni, implementálja saját System.Management.Automation.Provider.Cmdletprovider.Start* metódusát, amely a System.Management.Automation.Providerinfo objektum módosított verzióját adja vissza, amely a szolgáltatónak lesz átküldve. Ez a metódus általában a megadott System.Management.Automation.Providerinfo objektumot adja át neki, vagy egy módosított System.Management.Automation.Providerinfo objektumot, amely más inicializálási információkat tartalmaz.

Ez az alapszintű szolgáltató nem bírálja felül ezt a metódust. A következő kód azonban a metódus alapértelmezett megvalósítását mutatja be:

A szolgáltató fenntarthatja a szolgáltatóspecifikus információk állapotát a Szolgáltatóspecifikus adatállapot meghatározása leírásában leírtak szerint. Ebben az esetben az implementációnak felül kell írnia a System.Management.Automation.Provider.Cmdletprovider.Start* metódust a származtatott osztály egy példányának visszaadása érdekében.

Dinamikus paraméterek kezdése

A System.Management.Automation.Provider.Cmdletprovider.Start* metódus szolgáltatói implementációjához további paraméterekre lehet szükség. Ebben az esetben a szolgáltatónak felül kell bírálni a System.Management.Automation.Provider.Cmdletprovider.Startdynamicparameters* metódust, és egy olyan objektumot kell visszaadni, amely a parancsmagosztályhoz vagy a System.Management.Automation.Runtimedefinedparameterdictionary objektumhoz hasonló tulajdonságokkal és mezőkkel rendelkezik.

Ez az alapszintű szolgáltató nem bírálja felül ezt a metódust. A következő kód azonban a metódus alapértelmezett megvalósítását mutatja be:

A szolgáltató inicializálása

A szolgáltató által használt Windows PowerShell felszabadítása érdekében a szolgáltatónak saját System.Management.Automation.Provider.Cmdletprovider.Stop* metódust kell megvalósítania. Ezt a metódust a Windows PowerShell, hogy a munkamenet végén inicializálja a szolgáltatót.

Ez az alapszintű szolgáltató nem bírálja felül ezt a metódust. A következő kód azonban a metódus alapértelmezett megvalósítását mutatja be:

Kódminta

A teljes mintakódért lásd: AccessDbProviderSample01 – Kódminta.

A Windows PowerShell tesztelése

Miután regisztrálta Windows PowerShell-szolgáltatóját a Windows PowerShell, tesztelheti a támogatott parancsmagok parancssoron való futtatásával. Ehhez az alapszintű szolgáltatóhoz futtassa az új rendszerhéjat, és a parancsmag használatával olvassa be a szolgáltatók listáját, és győződjön meg arról, hogy az Get-PSProvider AccessDb szolgáltató jelen van.

Get-PSProvider

Az alábbi kimenet jelenik meg:

Name                 Capabilities                  Drives
----                 ------------                  ------
AccessDb             None                          {}
Alias                ShouldProcess                 {Alias}
Environment          ShouldProcess                 {Env}
FileSystem           Filter, ShouldProcess         {C, Z}
Function             ShouldProcess                 {function}
Registry             ShouldProcess                 {HKLM, HKCU}

Lásd még:

Adatszolgáltatók Windows PowerShell létrehozása

A Windows PowerShell-szolgáltató tervezése