Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a téma kiindulópont annak, hogyan kell Windows PowerShell szolgáltatót létrehozni. Az itt leírt alapvető szolgáltató módszereket biztosít a szolgáltató indításához és leállításához, és bár ez a szolgáltató nem biztosít lehetőséget adattárolóhoz való hozzáféréshez vagy az adattároló adataihoz vagy beállításához, mégis biztosítja az alapvető funkciókat, amelyeket minden szolgáltató megkövetel.
Ahogy korábban említettük, az itt leírt alapvető szolgáltató módszereket alkalmaz a szolgáltató indítására és leállítására. A Windows PowerShell futási ideje ezeket a metódusaukat hívja a szolgáltató inicializálásához és visszavonásához.
Megjegyzés:
Ennek a szolgáltatónak a AccessDBSampleProvider01.cs fájljában talál egy mintát, amelyet a Windows PowerShell biztosít.
A Windows PowerShell szolgáltató osztály meghatározása
A Windows PowerShell szolgáltató létrehozásának első lépése a .NET osztály meghatározása. Ez az alapszolgáltató egy osztályt definiál AccessDBProvider , amely a System.Management.Automation.Provider.CmdletProvider alaposztályból származik.
Ajánlott, hogy a szolgáltató osztályokat az Providers API névtér névterébe helyezze, például xxx.PowerShell.Providers-be. Ez a szolgáltató a Microsoft.Samples.PowerShell.Provider névteret használja, ahol minden Windows PowerShell szolgáltató mintapéldány fut.
Megjegyzés:
A Windows PowerShell szolgáltató osztályát kifejezetten nyilvánosnak kell jelölni. Azok az osztályok, amelyeket nem nyilvánosnak jelölnek, alapértelmezetten belső állapotba kerülnek, és a Windows PowerShell futása nem találja meg őket.
Íme ennek az alapvető szolgáltatónak az osztálydefiníciója:
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
Az osztálydefiníció előtt meg kell jelentened a System.Management.Automation.Provider.CmdletProviderAttribute attribútumot a [CmdletProvider()] szintaxissal.
Szükség esetén beállíthatod az attribútumkulcsszavakat, hogy tovább is bejelentsd az osztályt. Figyeljük meg, hogy a System.Management.Automation.Provider.CmdletProviderAttribute attribútum, amelyet itt bejelentenek, két paramétert tartalmaz. Az első attribútumparaméter megadja a szolgáltató alapértelmezett nevet, amelyet a felhasználó később módosíthat. A második paraméter meghatározza azokat a Windows PowerShell-alapú képességeket, amelyeket a szolgáltató a Windows PowerShell futásidőben a parancsfeldolgozás során biztosít. A szolgáltató képességeinek lehetséges értékeit a System.Management.Automation.Provider.Capabilities felsorolás határozza meg. Mivel ez egy alapszolgáltató, semmilyen képességet nem támogat.
Megjegyzés:
A Windows PowerShell szolgáltató teljes minősítésű neve tartalmazza a assembly nevet és egyéb attribútumokat, amelyeket a Windows PowerShell a szolgáltató regisztrációkor határoz meg.
Provider-Specific állapotinformáció meghatározása
A System.Management.Automation.Provider.CmdletProvider alaposztály és minden származtatott osztály állapot nélkülinek számít, mivel a Windows PowerShell futási ideje csak szükség esetén hoz létre szolgáltató példányokat. Ezért, ha a szolgáltatód teljes kontrollra és állapotkarbantartásra van szüksége a szolgáltató-specifikus adatokhoz, akkor a System.Management.Automation.ProviderInfo osztályból kell származtatnia egy osztályt. A származtatott osztálynak meg kell határoznia azokat a tagokat, amelyek szükségesek az állapot fenntartásához, hogy a szolgáltató-specifikus adatok elérhetők legyenek, amikor a Windows PowerShell futási ideje a System.Management.Automation.Provider.CmdletProvider.Start* metódumust hívja a szolgáltató inicializálásához.
Egy Windows PowerShell szolgáltató is fenntarthatja a kapcsolat-alapú állapotot. További információért a kapcsolati állapot fenntartásáról lásd: PowerShell meghajtó szolgáltató létrehozása.
A szolgáltató inicializálása
A szolgáltató inicializálásához a Windows PowerShell futási ideje a System.Management.Automation.Provider.CmdletProvider.Start* metóduszot hívja, amikor elindítják a Windows PowerShell-t. Többnyire a szolgáltató használhatja ennek a módszernek az alapértelmezett implementációját, amely egyszerűen a System.Management.Automation.ProviderInfo objektumot adja vissza, amely leírja a szolgáltatót. Azonban, ha további inicializációs információkat szeretnél hozzáadni, akkor érdemes saját System.Management.Automation.Provider.CmdletProvider.Start* módszert alkalmazni, amely egy módosított verziót ad vissza a System.Management.Automation.ProviderInfo objektumnak, amelyet továbbítanak a szolgáltatódnak. Általánosságban ez a módszer visszaadja a hozzá adott System.Management.Automation.ProviderInfo objektumot, vagy egy módosított System.Management.Automation.ProviderInfo objektumot, amely más inicializációs információkat tartalmaz.
Ez az alapvető szolgáltató nem írja felül ezt a módszert. Azonban a következő kód mutatja ennek a módszernek az alapértelmezett megvalósítását:
A szolgáltató fenntarthatja a szolgáltató-specifikus információk állapotát, ahogy azt a Provider-specifikus adatállapot meghatározása leírja. Ebben az esetben a megvalósításnak felül kell írnia a System.Management.Automation.Provider.CmdletProvider.Start* metódust, hogy visszaadja a származtatott osztály példányát.
Start dinamikus paraméterek
A szolgáltató System.Management.Automation.Provider.CmdletProvider.Start* módszer megvalósítása további paramétereket igényelhet. Ebben az esetben a szolgáltatónak felülírnia kell a System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* metódust, és vissza kell küldenie egy olyan objektumot, amelynek tulajdonságai és mezői olyan elemző attribútumokkal rendelkeznek, amelyek hasonló a cmdlet osztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz.
Ez az alapvető szolgáltató nem írja felül ezt a módszert. Azonban a következő kód mutatja ennek a módszernek az alapértelmezett megvalósítását:
A szolgáltató visszaindítása
Ahhoz, hogy felszabadítsa azokat az erőforrásokat, amelyeket a Windows PowerShell szolgáltató használ, a szolgáltatónak saját System.Management.Automation.Provider.CmdletProvider.Stop* módszert kell bevezetnie. Ezt a módszert a Windows PowerShell runtime hívja, hogy a szolgáltatót a munkafolyamat végén visszavonja.
Ez az alapvető szolgáltató nem írja felül ezt a módszert. Azonban a következő kód mutatja ennek a módszernek az alapértelmezett megvalósítását:
Kódminta
A teljes mintakódért lásd az AccessDbProviderSample01 kód minta.
A Windows PowerShell szolgáltató tesztelése
Miután a Windows PowerShell szolgáltatód regisztrálva lett a Windows PowerShell-nél, tesztelheted a támogatott cmdleteket a parancssoron futtatva. Ehhez az alapvető szolgáltatóhoz futtasd az új shellt, és használd a Get-PSProvider cmdletet a szolgáltatók listájának lekérésére, és biztosítsa az AccessDb szolgáltató jelenlétét.
Get-PSProvider
A következő 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}