Windows PowerShell elem-szolgáltató létrehozása
Ez a témakör azt ismerteti, hogyan hozhat létre olyan Windows PowerShell szolgáltatót, amely képes az adattárban lévő adatok kezelésére. Ebben a témakörben az adattárban lévő adatok elemeit az adattár "elemeinek" nevezzük. Ennek következtében az adattárban lévő adatokat manipuláló szolgáltatót Windows PowerShell elemszolgáltatónak nevezzük.
Megjegyzés
A szolgáltató C#-forrásfájlját (AccessDBSampleProvider03.cs
) a Microsoft Windows Windows Vista és .NET-keretrendszer 3.0 futtatókörnyezeti összetevőkhöz készült szoftverfejlesztői készletével töltheti le. A letöltési utasításokért tekintse meg a Windows PowerShell telepítését és a Windows PowerShell SDK letöltését ismertető cikket.
A letöltött forrásfájlok a könyvtárban PowerShell Samples
érhetők el. A Windows PowerShell-szolgáltató egyéb implementációiról további információt a Windows PowerShell Provider tervezése című témakörben talál.
Az ebben a témakörben ismertetett Windows PowerShell elemszolgáltató lekéri az adatok elemeit egy Access-adatbázisból. Ebben az esetben az "elem" vagy az Access-adatbázisban lévő tábla, vagy egy tábla egy sora.
A Windows PowerShell elem szolgáltatói osztályának definiálása
A Windows PowerShell elemszolgáltatónak a System.Management.Automation.Provider.ItemCmdletProvider alaposztályból származtatott .NET-osztályt kell definiálnia. Az alábbiakban az ebben a szakaszban ismertetett elemszolgáltató osztálydefinícióját ismertetjük.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Vegye figyelembe, hogy ebben az osztálydefinícióban a System.Management.Automation.Provider.CmdletProviderAttribute attribútum két paramétert tartalmaz. Az első paraméter a Windows PowerShell által használt szolgáltató felhasználóbarát nevét adja meg. A második paraméter határozza meg a Windows PowerShell adott képességeket, amelyeket a szolgáltató elérhetővé tesz a Windows PowerShell futtatókörnyezet számára a parancsfeldolgozás során. Ehhez a szolgáltatóhoz nem érhető el Windows PowerShell adott képesség.
Alapfunkciók meghatározása
A Windows PowerShell-szolgáltató tervezésében leírtaknak megfelelően a System.Management.Automation.Provider.DriveCmdletProvider osztály számos más olyan osztályból származik, amelyek különböző szolgáltatói funkciókat biztosítottak. Ezért a Windows PowerShell elemszolgáltatónak meg kell határoznia az osztályok által biztosított összes funkciót.
A munkamenet-specifikus inicializálási információk hozzáadására és a szolgáltató által használt erőforrások felszabadítására szolgáló funkciók implementálásával kapcsolatos további információkért lásd: Alapszintű Windows PowerShell-szolgáltató létrehozása. A legtöbb szolgáltató, beleértve az itt leírt szolgáltatót is, használhatja a Windows PowerShell által biztosított alapértelmezett implementációt.
Ahhoz, hogy a Windows PowerShell elemszolgáltató módosíthassa a tárolóban lévő elemeket, implementálnia kell a System.Management.Automation.Provider.DriveCmdletProvider alaposztály metódusait az adattárhoz való hozzáféréshez. Az osztály megvalósításával kapcsolatos további információkért lásd: Windows PowerShell meghajtószolgáltató létrehozása.
Az elérési út érvényességének ellenőrzése
Ha egy adatelemet keres, a Windows PowerShell futtatókörnyezet egy Windows PowerShell elérési utat biztosít a szolgáltatónak, a Windows PowerShell működése "PSPath-fogalmak" című szakaszában meghatározottak szerint. A Windows PowerShell elemszolgáltatónak ellenőriznie kell a neki átadott elérési utak szintaktikai és szemantikai érvényességét a System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath metódus implementálásával. Ez a metódus akkor ad true
vissza értéket, ha az elérési út érvényes, és false
ellenkező esetben. Vegye figyelembe, hogy ennek a módszernek a végrehajtása nem ellenőrizheti az elem meglétét az elérési úton, csak azt, hogy az elérési út szintaktikailag és szemantikailag helyes.
Íme a system.Management.Automation.Provider.ItemCmdletProvider.IsValidPath metódus implementálása ehhez a szolgáltatóhoz. Vegye figyelembe, hogy ez az implementáció egy NormalizePath segédmetódust hív meg, amely az elérési út összes elválasztóját egységessé alakítja.
protected override bool IsValidPath(string path)
{
bool result = true;
// check if the path is null or empty
if (String.IsNullOrEmpty(path))
{
result = false;
}
// convert all separators in the path to a uniform one
path = NormalizePath(path);
// split the path into individual chunks
string[] pathChunks = path.Split(pathSeparator.ToCharArray());
foreach (string pathChunk in pathChunks)
{
if (pathChunk.Length == 0)
{
result = false;
}
}
return result;
} // IsValidPath
Annak meghatározása, hogy létezik-e elem
Az elérési út ellenőrzése után a Windows PowerShell futtatókörnyezetnek meg kell határoznia, hogy létezik-e adatelem az elérési úton. Az ilyen típusú lekérdezések támogatásához a Windows PowerShell elemszolgáltató implementálja a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists metódust. Ez a metódus egy elemet ad vissza true
, amely a megadott elérési úton található, egyébként false
pedig (alapértelmezett).
Íme a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists metódus implementálása ehhez a szolgáltatóhoz. Vegye figyelembe, hogy ez a metódus meghívja a PathIsDrive, a ChunkPath és a GetTable segédmetódusokat, és egy szolgáltató által definiált DatabaseTableInfo objektumot használ.
protected override bool ItemExists(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
return true;
}
// Obtain type, table name and row number from path
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
DatabaseTableInfo table = GetTable(tableName);
if (type == PathType.Table)
{
// if specified path represents a table then DatabaseTableInfo
// object for the same should exist
if (table != null)
{
return true;
}
}
else if (type == PathType.Row)
{
// if specified path represents a row then DatabaseTableInfo should
// exist for the table and then specified row number must be within
// the maximum row count in the table
if (table != null && rowNumber < table.RowCount)
{
return true;
}
}
return false;
} // ItemExists
Az ItemExists implementálásával kapcsolatos tudnivalók
A System.Management.Automation.Provider.ItemCmdletProvider.ItemExists implementációjára a következő feltételek vonatkozhatnak:
- A szolgáltatóosztály meghatározásakor egy Windows PowerShell elem-szolgáltató deklarálhatja
ExpandWildcards``Exclude``Filter``Include
a System.Management.Automation.Provider.ProviderCapabilities enumerálás szolgáltatói képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists metódus implementációjának biztosítania kell, hogy a metódusnak átadott elérési út megfeleljen a megadott képességek követelményeinek. Ehhez a metódusnak hozzá kell férnie a megfelelő tulajdonsághoz, például a System.Management.Automation.Provider.CmdletProvider.Exclude és a System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz. - A metódus implementálásának kezelnie kell az elemhez való hozzáférés bármely formáját, amely láthatóvá teheti az elemet a felhasználó számára. Ha például egy felhasználó írási hozzáféréssel rendelkezik egy fájlhoz a FileSystem szolgáltatón keresztül (amelyet a Windows PowerShell biztosít), de nem olvasási hozzáféréssel, a fájl továbbra is létezik, és a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists visszaadja
true
. A megvalósításhoz szükség lehet egy szülőelem ellenőrzésére annak ellenőrzéséhez, hogy a gyermekelem enumerálható-e.
Dinamikus paraméterek csatolása a Test-Path parancsmaghoz
Előfordulhat, hogy a Test-Path
System.Management.Automation.Provider.ItemCmdletProvider.ItemExists parancsmaghoz további paraméterek szükségesek, amelyek futásidőben dinamikusan vannak megadva. A dinamikus paraméterek megadásához a Windows PowerShell elemszolgáltatónak implementálnia kell a System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicParameters metódust. Ez a metódus lekéri az elem dinamikus paramétereit a jelzett útvonalon, és visszaad egy olyan objektumot, amelynek tulajdonságai és mezői a parancsmagosztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz hasonló elemzési attribútumokkal rendelkeznek. A Windows PowerShell futtatókörnyezet a visszaadott objektummal adja hozzá a paramétereket a Test-Path
parancsmaghoz.
Ez a Windows PowerShell elemszolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Elem beolvasása
Egy elem lekéréséhez a Windows PowerShell elemszolgáltatónak felül kell bírálnia a System.Management.Automation.Provider.ItemCmdletProvider.GetItem metódust a Get-Item
parancsmag hívásainak támogatásához. Ez a metódus a System.Management.Automation.Provider.CmdletProvider.WriteItemObject metódussal írja az elemet.
Íme a System.Management.Automation.Provider.ItemCmdletProvider.GetItem metódus implementálása ehhez a szolgáltatóhoz. Vegye figyelembe, hogy ez a metódus a GetTable és a GetRow segédmetódusokat használja az Access-adatbázis tábláinak vagy egy adattábla sorainak beolvasására.
protected override void GetItem(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
WriteItemObject(this.PSDriveInfo, path, true);
return;
}// if (PathIsDrive...
// Get table name and row information from the path and do
// necessary actions
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Table)
{
DatabaseTableInfo table = GetTable(tableName);
WriteItemObject(table, path, true);
}
else if (type == PathType.Row)
{
DatabaseRowInfo row = GetRow(tableName, rowNumber);
WriteItemObject(row, path, false);
}
else
{
ThrowTerminatingInvalidPathException(path);
}
} // GetItem
Fontos tudnivalók a GetItem implementálásáról
A System.Management.Automation.Provider.ItemCmdletProvider.GetItem implementációjára a következő feltételek vonatkozhatnak:
A szolgáltatóosztály meghatározásakor egy Windows PowerShell elem-szolgáltató deklarálhatja
ExpandWildcards``Exclude``Filter``Include
a System.Management.Automation.Provider.ProviderCapabilities enumerálás szolgáltatói képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.GetItem implementációjának biztosítania kell, hogy a metódusnak átadott elérési út megfeleljen ezeknek a követelményeknek. Ehhez a metódusnak hozzá kell férnie a megfelelő tulajdonsághoz, például a System.Management.Automation.Provider.CmdletProvider.Exclude és a System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.Alapértelmezés szerint ennek a metódusnak a felülbírálása nem kér le olyan objektumokat, amelyek általában rejtve vannak a felhasználó elől, kivéve, ha a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság értéke
true
. A Fájlrendszer szolgáltató System.Management.Automation.Provider.ItemCmdletProvider.GetItem metódusa például ellenőrzi a System.Management.Automation.Provider.CmdletProvider.Force tulajdonságot, mielőtt megkísérli meghívni a System.Management.Automation.Provider.CmdletProvider.WriteItemObject metódust a rejtett vagy rendszerfájlokra.
Dinamikus paraméterek csatolása a Get-Item parancsmaghoz
Néha a Get-Item
parancsmag további paramétereket igényel, amelyek dinamikusan vannak megadva futásidőben. A dinamikus paraméterek megadásához a Windows PowerShell elemszolgáltatónak implementálnia kell a System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters metódust. Ez a metódus lekéri az elem dinamikus paramétereit a jelzett útvonalon, és visszaad egy olyan objektumot, amelynek tulajdonságai és mezői a parancsmagosztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz hasonló elemzési attribútumokkal rendelkeznek. A Windows PowerShell futtatókörnyezet a visszaadott objektummal adja hozzá a paramétereket a Get-Item
parancsmaghoz.
Ez a szolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Elem beállítása
Elem beállításához a Windows PowerShell elemszolgáltatónak felül kell bírálnia a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódust a Set-Item
parancsmagból érkező hívások támogatásához. Ez a metódus a megadott elérési úton állítja be az elem értékét.
Ez a szolgáltató nem biztosít felülbírálást a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódushoz. Ennek a módszernek azonban az alapértelmezett implementációja a következő.
Tudnivalók a SetItem implementálásáról
A System.Management.Automation.Provider.ItemCmdletProvider.SetItem implementációjára a következő feltételek vonatkozhatnak:
A szolgáltatóosztály meghatározásakor egy Windows PowerShell elem-szolgáltató deklarálhatja
ExpandWildcards``Exclude``Filter``Include
a System.Management.Automation.Provider.ProviderCapabilities enumerálás szolgáltatói képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.SetItem implementációjának biztosítania kell, hogy a metódusnak átadott elérési út megfeleljen ezeknek a követelményeknek. Ehhez a metódusnak hozzá kell férnie a megfelelő tulajdonsághoz, például a System.Management.Automation.Provider.CmdletProvider.Exclude és a System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.Alapértelmezés szerint a metódus felülbírálásai nem állíthatnak be és nem írhatnak a felhasználó elől rejtett objektumokat, kivéve, ha a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság értéke
true
. Hibaüzenetet kell küldeni a System.Management.Automation.Provider.CmdletProvider.WriteError metódusnak, ha az elérési út rejtett elemet jelöl, és a System.Management.Automation.Provider.CmdletProvider.Force értékefalse
.A System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódus implementációjának meg kell hívnia a System.Management.Automation.Provider.CmdletProvider.ShouldProcess metódust, és ellenőriznie kell a visszatérési értékét, mielőtt bármilyen módosítást végez az adattáron. Ez a módszer egy művelet végrehajtásának megerősítésére szolgál az adattár módosításakor, például fájlok törlésekor. A System.Management.Automation.Provider.CmdletProvider.ShouldProcess metódus elküldi a módosítandó erőforrás nevét a felhasználónak, és a Windows PowerShell futtatókörnyezet figyelembe veszi a parancssori beállításokat vagy a beállítási változókat a megjelenítendő adatok meghatározásához.
A System.Management.Automation.Provider.CmdletProvider.ShouldProcess visszatérése
true
után a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódusnak meg kell hívnia a System.Management.Automation.Provider.CmdletProvider.ShouldContinue metódust. Ez a metódus üzenetet küld a felhasználónak, hogy visszajelzést küldjön a művelet folytatásának ellenőrzéséhez. A System.Management.Automation.Provider.CmdletProvider.ShouldContinue hívása lehetővé teszi a rendszer esetlegesen veszélyes módosításainak további ellenőrzését.
Dinamikus paraméterek lekérése a SetItemhez
Néha a Set-Item
parancsmag további paramétereket igényel, amelyek dinamikusan vannak megadva futásidőben. A dinamikus paraméterek megadásához a Windows PowerShell elemszolgáltatónak implementálnia kell a System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters metódust. Ez a metódus lekéri az elem dinamikus paramétereit a jelzett útvonalon, és visszaad egy olyan objektumot, amelynek tulajdonságai és mezői a parancsmagosztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz hasonló elemzési attribútumokkal rendelkeznek. A Windows PowerShell futtatókörnyezet a visszaadott objektummal adja hozzá a paramétereket a Set-Item
parancsmaghoz.
Ez a szolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Elem törlése
Egy elem törléséhez a Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ItemCmdletProvider.ClearItem metódust implementálja a Clear-Item
parancsmagból érkező hívások támogatásához. Ez a metódus törli az adatelemet a megadott elérési úton.
Ez a szolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Fontos tudnivalók a ClearItem implementálásáról
A System.Management.Automation.Provider.ItemCmdletProvider.ClearItem implementációjára a következő feltételek vonatkozhatnak:
A szolgáltatóosztály meghatározásakor egy Windows PowerShell elemszolgáltató deklarálhatja
ExpandWildcards``Exclude``Filter``Include
a System.Management.Automation.Provider.ProviderCapabilities enumerálás szolgáltatói képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.ClearItem implementációjának biztosítania kell, hogy a metódusnak átadott elérési út megfeleljen ezeknek a követelményeknek. Ehhez a metódusnak hozzá kell férnie a megfelelő tulajdonsághoz, például a System.Management.Automation.Provider.CmdletProvider.Exclude és a System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.A metódus felülbírálásai alapértelmezés szerint nem állíthatnak be és nem írhatnak a felhasználó elől rejtett objektumokat, kivéve, ha a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság értéke
true
. Hibát kell küldeni a System.Management.Automation.Provider.CmdletProvider.WriteError metódusnak, ha az elérési út egy, a felhasználó elől rejtett elemet jelöl, és a System.Management.Automation.Provider.CmdletProvider.Force értékefalse
.A System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódus implementációjának meg kell hívnia a System.Management.Automation.Provider.CmdletProvider.ShouldProcess metódust, és ellenőriznie kell a visszatérési értékét, mielőtt bármilyen módosítást végezne az adattáron. Ez a módszer egy művelet végrehajtásának megerősítésére szolgál az adattár módosításakor, például fájlok törlésekor. A System.Management.Automation.Provider.CmdletProvider.ShouldProcess metódus elküldi a módosítandó erőforrás nevét a felhasználónak a Windows PowerShell futtatókörnyezettel, és kezeli a megjelenítendő beállítások meghatározásához szükséges parancssori beállításokat vagy beállításváltozókat.
A System.Management.Automation.Provider.CmdletProvider.ShouldProcess visszatérése
true
után a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódusnak meg kell hívnia a System.Management.Automation.Provider.CmdletProvider.ShouldContinue metódust. Ez a metódus üzenetet küld a felhasználónak, hogy visszajelzést küldjön a művelet folytatásának ellenőrzéséhez. A System.Management.Automation.Provider.CmdletProvider.ShouldContinue hívása lehetővé teszi a rendszer esetlegesen veszélyes módosításainak további ellenőrzését.
A ClearItem dinamikus paramétereinek lekérése
Előfordulhat, hogy a Clear-Item
parancsmaghoz további paraméterek szükségesek, amelyek futásidőben dinamikusan vannak megadva. A dinamikus paraméterek megadásához a Windows PowerShell elemszolgáltatónak implementálnia kell a System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters metódust. Ez a metódus lekéri az elem dinamikus paramétereit a jelzett útvonalon, és visszaad egy olyan objektumot, amelynek tulajdonságai és mezői a parancsmagosztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz hasonló elemzési attribútumokkal rendelkeznek. A Windows PowerShell futtatókörnyezet a visszaadott objektummal adja hozzá a paramétereket a Clear-Item
parancsmaghoz.
Ez az elemszolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Elem alapértelmezett műveletének végrehajtása
A Windows PowerShell elemszolgáltató implementálhatja a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction metódust a parancsmag hívásainak Invoke-Item
támogatásához, amely lehetővé teszi a szolgáltató számára, hogy alapértelmezett műveletet hajtson végre az elemhez a megadott elérési úton. Előfordulhat például, hogy a fájlrendszer-szolgáltató ezzel a módszerrel hívja meg a ShellExecute metódust egy adott elemhez.
Ez a szolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Az InvokeDefaultAction implementálásával kapcsolatos tudnivalók
A System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction implementációjára a következő feltételek vonatkozhatnak:
A szolgáltatóosztály meghatározásakor egy Windows PowerShell elemszolgáltató deklarálhatja
ExpandWildcards``Exclude``Filter``Include
a System.Management.Automation.Provider.ProviderCapabilities enumerálás szolgáltatói képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction implementációjának biztosítania kell, hogy a metódusnak átadott elérési út megfeleljen ezeknek a követelményeknek. Ehhez a metódusnak hozzá kell férnie a megfelelő tulajdonsághoz, például a System.Management.Automation.Provider.CmdletProvider.Exclude és a System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.A metódus felülbírálásai alapértelmezés szerint nem állíthatnak be és nem írhatnak rejtett objektumokat a felhasználó elől, kivéve, ha a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság értéke
true
. Hibát kell küldeni a System.Management.Automation.Provider.CmdletProvider.WriteError metódusnak, ha az elérési út egy, a felhasználó elől rejtett elemet jelöl, és a System.Management.Automation.Provider.CmdletProvider.Force értékefalse
.
Az InvokeDefaultAction dinamikus paramétereinek lekérése
Előfordulhat, hogy a Invoke-Item
parancsmaghoz további paraméterek szükségesek, amelyek futásidőben dinamikusan vannak megadva. A dinamikus paraméterek biztosításához a Windows PowerShell elemszolgáltatónak implementálnia kell a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters metódust. Ez a metódus lekéri az elem dinamikus paramétereit a jelzett útvonalon, és visszaad egy olyan objektumot, amelynek tulajdonságai és mezői a parancsmagosztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz hasonló elemzési attribútumokkal rendelkeznek. A Windows PowerShell futtatókörnyezet a visszaadott objektummal adja hozzá a dinamikus paramétereket a Invoke-Item
parancsmaghoz.
Ez az elemszolgáltató nem implementálja ezt a módszert. A metódus alapértelmezett implementációja azonban a következő kód.
Segítő módszerek és osztályok implementálása
Ez az elemszolgáltató számos segédmetórát és osztályt implementál, amelyeket a Windows PowerShell által meghatározott nyilvános felülbírálási metódusok használnak. Ezeknek a segédmetenek és osztályoknak a kódja a Kódminta szakaszban látható.
NormalizePath metódus
Ez az elemszolgáltató normalizePath segédmetódust implementál, hogy az elérési út egységes formátumú legyen. A megadott formátum fordított perjelet (\
) használ elválasztóként.
PathIsDrive metódus
Ez az elemszolgáltató egy PathIsDrive segédmetódust implementál annak megállapításához, hogy a megadott elérési út valójában a meghajtó neve-e.
ChunkPath metódus
Ez az elemszolgáltató implementál egy ChunkPath segédmetódust, amely megszakítja a megadott elérési utat, hogy a szolgáltató azonosítani tudja az egyes elemeket. Az elérési út elemeiből álló tömböt ad vissza.
GetTable metódus
Ez az elemszolgáltató implementálja a GetTables segédmetódust, amely egy DatabaseTableInfo objektumot ad vissza, amely a hívásban megadott táblára vonatkozó információkat jeleníti meg.
GetRow metódus
Az elemszolgáltató System.Management.Automation.Provider.ItemCmdletProvider.GetItem metódusa meghívja a GetRows segédmetódust. Ez a segédmetódus egy DatabaseRowInfo objektumot kér le, amely a tábla megadott sorával kapcsolatos információkat jelöli.
DatabaseTableInfo osztály
Ez az elemszolgáltató definiál egy DatabaseTableInfo osztályt, amely az adatbázis adattábláiban található információk gyűjteményét jelöli. Ez az osztály hasonló a System.IO.Directoryinfo osztályhoz.
A mintaelem-szolgáltató definiál egy DatabaseTableInfo.GetTables metódust, amely az adatbázisban lévő táblákat meghatározó táblainformációs objektumok gyűjteményét adja vissza. Ez a metódus tartalmaz egy próbálkozási/fogási blokkot, amely biztosítja, hogy az adatbázishibák nulla bejegyzést tartalmazó sorként jelenjenek meg.
DatabaseRowInfo osztály
Ez az elemszolgáltató határozza meg a DatabaseRowInfo segédosztályt, amely az adatbázis táblájának egy sorát jelöli. Ez az osztály hasonló a System.IO.FileInfo osztályhoz.
A mintaszolgáltató egy DatabaseRowInfo.GetRows metódust definiál, amely a megadott tábla sorinformációs objektumainak gyűjteményét adja vissza. Ez a metódus tartalmaz egy próbálkozási/fogási blokkot a kivételek alátöltéséhez. A hibák nem eredményeznek sorinformációt.
Kódminta
A teljes mintakódért tekintse meg az AccessDbProviderSample03 kódmintát.
Objektumtípusok és formázás definiálása
Szolgáltató írásakor előfordulhat, hogy tagokat kell hozzáadni a meglévő objektumokhoz, vagy új objektumokat kell definiálni. Ha végzett, hozzon létre egy Types fájlt, amely Windows PowerShell használható az objektum tagjainak azonosítására, valamint egy formátumfájlt, amely meghatározza az objektum megjelenítésének módját. További információ: Objektumtípusok és formázás kiterjesztése.
A Windows PowerShell-szolgáltató létrehozása
Lásd : Parancsmagok, szolgáltatók és gazdagépalkalmazások regisztrálása.
A Windows PowerShell szolgáltató tesztelése
Ha ez a Windows PowerShell elemszolgáltató regisztrálva van a Windows PowerShell, csak a szolgáltató alapszintű és meghajtófunkcióit tesztelheti. Az elemek kezelésének teszteléséhez implementálnia kell a Tároló-Windows PowerShell-szolgáltató implementálásában leírt tárolófunkciót is.
Lásd még
- Windows PowerShell SDK
- Windows PowerShell – programozói útmutató
- Windows PowerShell-szolgáltatók létrehozása
- A Windows PowerShell-szolgáltató megtervezése
- Objektumtípusok és formázás kiterjesztése
- A Windows PowerShell működése
- Tároló-Windows PowerShell-szolgáltató létrehozása
- Meghajtó-Windows PowerShell szolgáltató létrehozása
- Parancsmagok, szolgáltatók és gazdagépalkalmazások regisztrálása
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: