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 bemutatja, hogyan lehet létrehozni egy Windows PowerShell szolgáltatót, amely képes kezelni az adattárolóban lévő adatokat. Ebben a témában az adattároló elemeit az adattároló "elemeinek" nevezik. Ennek következtében egy olyan szolgáltatót, amely képes manipulálni az adatokat a tárolóban, Windows PowerShell item providernek nevezik.
Megjegyzés:
Letöltheti a C# forrásfájlt (AccessDBSampleProvider03.cs) ehhez a szolgáltatóhoz a Microsoft Windows Vista Software Development Kit és a .NET Framework 3.0 Runtime Components segítségével. A letöltési utasításokért lásd: Hogyan telepítsük a Windows PowerShell és a Windows PowerShell SDK letöltése.
A letöltött forrásfájlok elérhetők a PowerShell Samples könyvtárban. További információért más Windows PowerShell szolgáltató megvalósításokról lásd: Designing Your Windows PowerShell Provider.
A témában leírt Windows PowerShell elemszolgáltató adatokat kap egy Access adatbázisból. Ebben az esetben a "tétel" vagy egy tábla az Access adatbázisban, vagy egy sor egy táblában.
A Windows PowerShell item provider osztály meghatározása
A Windows PowerShell elemszolgáltatónak olyan .NET osztályt kell definiálnia, amely a System.Management.Automation.Provider.ItemCmdletProvider alaposztályból származik. Az alábbiakban található az ebben a szakaszban leírt tárgyszolgáltató osztálydefiníciója.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Fontos megjegyezni, hogy ebben az osztálydefinícióban a System.Management.Automation.Provider.CmdletProviderAttribute attribútum két paramétert tartalmaz. Az első paraméter egy felhasználóbarát nevet ad a szolgáltatónak, amelyet a Windows PowerShell használ. A második paraméter meghatározza azokat a Windows PowerShell-specifikus képességeket, amelyeket a szolgáltató a Windows PowerShell futási idejének a parancsfeldolgozás során kiterjeszt. Ennél a szolgáltatónál nincs további Windows PowerShell-specifikus képesség.
Az alapfunkcionalitás meghatározása
Ahogy a Design Your Windows PowerShell Provider című művében leírva, a System.Management.Automation.Provider.DriveCmdletProvider osztály több más osztályból származik, amelyek eltérő szolgáltatói funkcionalizációt biztosítottak. Ezért egy Windows PowerShell elemszolgáltatónak meg kell határoznia az összes ilyen osztály által biztosított funkciót.
További információért a sessionspecifikus inicializációs információk hozzáadására és a szolgáltató által használt erőforrások felszabadítására vonatkozó funkciók megvalósításáról lásd: Alap Windows PowerShell szolgáltató létrehozása. Azonban a legtöbb szolgáltató, beleértve az itt leírt szolgáltatót is, használhatja ennek a funkciónak a Windows PowerShell által biztosított alapértelmezett megvalósítását.
Mielőtt a Windows PowerShell elemszolgáltató manipulálhatná a boltban lévő elemeket, be kell valósítania a System.Management.Automation.Provider.DriveCmdletProvider alaposztály módszereit az adattárolóhoz való hozzáféréshez. További információért az osztály megvalósításáról lásd : Windows PowerShell meghajtó szolgáltató létrehozása.
Út érvényességének ellenőrzése
Adat keresésekor a Windows PowerShell futási ideje egy Windows PowerShell útvonalat biztosít a szolgáltatóhoz, ahogy azt a "PSPath Concepts" szakaszban definiálja a How Windows PowerShell Works. A Windows PowerShell elemszolgáltatónak a System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath módszer alkalmazásával kell ellenőriznie bármely hozzá továbbított út szintaktikai és szemantikai érvényességét. Ez a módszer akkor tér vissza true , ha az út érvényes, és false egyébként. Fontos tudni, hogy ennek a módszernek a megvalósítása nem igazolhatja az útvonal tárgyának létezését, hanem csak azt kell igazolnia, hogy az út szintaktikailag és szemantikailag helyes.
Íme a System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath módszer megvalósítása ehhez a szolgáltatóhoz. Fontos megjegyezni, hogy ez a megvalósítás NormalizePath segédmetódust hív, hogy az összes elválasztót az úton egységessé alakítsa.
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 egy tárgy
Az útvonal ellenőrzése után a Windows PowerShell futásidőnek meg kell határoznia, hogy létezik-e egy adattétel azon az úton. Ennek a lekérdezéstípusnak a támogatásához a Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists metódust valósítja meg. Ez a módszer azt eredményezi, true hogy egy elem a megadott útvonalon található, és false egyébként (alapértelmezett) marad.
Íme a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists módszer megvalósítása ehhez a szolgáltatóhoz. Fontos megjegyezni, hogy ez a módszer a PathIsDrive, ChunkPath és GetTable segédmetódusokat hívja, é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
Fontos dolgok, amiket érdemes megjegyezni az ItemExists megvalósításával kapcsolatban
Az alábbi feltételek érvényesek lehetnek a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists implementációjára:
- A szolgáltató osztály meghatározásakor egy Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ProviderCapabilities felsorolásából megjelölheti a szolgáltató képességeit,
FilterInclude,ExpandWildcards, vagyExclude, a szolgáltató képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists módszer megvalósításának biztosítania kell, hogy a metódushoz átadott ú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 System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz. - Ennek a módszernek a megvalósításának bármilyen hozzáférést kell kezelnie az elemhez, amely megjelenítheti az elemet a felhasználó számára. Például, ha egy felhasználónak írási joga van egy fájlhoz a FileSystem szolgáltatón keresztül (amit a Windows PowerShell biztosít), de nincs olvasási hozzáférés, akkor a fájl továbbra is létezik, és a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists visszaadja
true. A megvalósításodhoz szükség lehet egy szülő elem ellenőrzésére, hogy a gyermek elem felsorolható-e.
Dinamikus paraméterek csatolása a Test-Path cmdlethez
Néha az a Test-Path cmdlet, amely a System.Management.Automation.Provider.ItemCmdletProvider.ItemExists fájlokat hívja, további paramétereket igényel, amelyeket futás közben dinamikusan definiálnak. Ezeknek a dinamikus paramétereknek a biztosításához a Windows PowerShell elemszolgáltatónak meg kell valósítania a System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicsParameters metódust. Ez a módszer visszanyeri a jelzett útvonalon lévő elem dinamikus paramétereit, és olyan objektumot ad vissza, amelynek tulajdonságai és mezői olyan parzálási attribútumokkal rendelkeznek, amelyek hasonló a cmdlet osztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz. A Windows PowerShell futási ideje a visszaküldött objektumot használja a paraméterek hozzáadására a Test-Path cmdlethez.
Ez a Windows PowerShell elemszolgáltató nem valósítja meg ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Egy tárgy visszaszerzése
Egy elem lekéréséhez a Windows PowerShell elemszolgáltatónak felül kell írnia a System.Management.Automation.Provider.ItemCmdletProvider.GetItem metódusát, hogy támogassa a parancsnok hívásait Get-Item . Ez a módszer a System.Management.Automation.Provider.CmdletProvider.WriteItemObject metódussal írja az elemet.
Íme a System.Management.Automation.Provider.ItemCmdletProvider.GetItem módszer megvalósítása ehhez a szolgáltatóhoz. Fontos megjegyezni, hogy ez a módszer a GetTable és a GetRow segéd metódusos módszereket használja az Access adatbázis táblái vagy egy adattábla sorainak lekérdezésére.
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 dolgok, amiket érdemes megjegyezni a GetItem bevezetéséről
A következő feltételek alkalmazhatók a System.Management.Automation.Provider.ItemCmdletProvider.GetItem implementációjára:
A szolgáltató osztály meghatározásakor egy Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ProviderCapabilities felsorolásából megjelölheti a szolgáltató képességeit,
FilterInclude,ExpandWildcards, vagyExclude, a szolgáltató képességeit. Ilyen esetekben a System.Management.Automation.Provider.ItemCmdletProvider.GetItem megvalósításának biztosítania kell, hogy a metódushoz átadott ú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 System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.Alapértelmezés szerint ennek a metódusnak a felülbírálására nem kell olyan objektumokat visszaszerezniük, amelyek általában rejtve vannak a felhasználó elől, hacsak a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság nem van beállítva.
truePéldául a System.Management.Automation.Provider.ItemCmdletProvider.GetItem módszer a FileSystem szolgáltató számára ellenőrzi a System.Management.Automation.Provider.CmdletProvider.Force tulajdonságot, mielőtt megpróbálná hívni a System.Management.Automation.Provider.CmdletProvider.WriteItemObject fájlokat rejtett vagy rendszerfájlokra.
Dinamikus paraméterek csatolása a Get-Item cmdlethez
Néha a Get-Item cmdlet további paramétereket igényel, amelyeket futás közben dinamikusan megadnak. A dinamikus paraméterek biztosításához a Windows PowerShell elemszolgáltatónak meg kell valósítania a System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters metódust. Ez a módszer visszanyeri a jelzett útvonalon lévő elem dinamikus paramétereit, és olyan objektumot ad vissza, amelynek tulajdonságai és mezői olyan parzálási attribútumokkal rendelkeznek, amelyek hasonló a cmdlet osztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz. A Windows PowerShell futási ideje a visszaküldött objektumot használja a paraméterek hozzáadására a Get-Item cmdlethez.
Ez a szolgáltató nem alkalmazza ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Tárgy beállítása
Egy elem beállításához a Windows PowerShell elemszolgáltatójának felül kell írnia a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódust, hogy támogassa a cmdlet hívásait Set-Item . Ez a módszer a megadott úton határozza meg 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. Azonban a következő a módszer alapértelmezett megvalósítása.
Fontos dolgok, amiket érdemes megjegyezni a SetItem megvalósításához
A következő feltételek alkalmazhatók a System.Management.Automation.Provider.ItemCmdletProvider.SetItem megvalósítására:
A szolgáltató osztály meghatározásakor egy Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ProviderCapabilities felsorolásából megjelölheti a szolgáltató képességeit,
FilterInclude,ExpandWildcards, vagyExclude, a szolgáltató képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.SetItem megvalósításának biztosítania kell, hogy a metódushoz átjutott ú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 System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.Alapértelmezés szerint ennek a módszernek a felülbírálására nem szabad beállítani vagy írni olyan objektumokat, amelyek el vannak rejtve a felhasználó elől, hacsak a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság nem van beállítva.
trueHibát kell küldeni a System.Management.Automation.Provider.CmdletProvider.WriteError metórumnak, ha az út rejtett elemet képvisel, és a System.Management.Automation.Provider.CmdletProvider.Force beállításafalse.A System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódus implementációjának hívnia kell a System.Management.Automation.Provider.CmdletProvider.ShouldProcess formátumot, és ellenőriznie kell a visszatérő értéket, mielőtt bármilyen változtatást végezne az adattárolóban. Ezt a módszert arra használják, hogy megerősítsék a művelet végrehajtását, amikor változtatás történik az adattárolóban, például fájlok törlésekor. A System.Management.Automation.Provider.CmdletProvider.ShouldProcess metódus a módosítandó erőforrás nevét küldi a felhasználónak, a Windows PowerShell futásideje pedig figyelembe veszi a parancssori beállításokat vagy preferenciaváltozókat, amikor meghatározza, mit kell megjeleníteni.
Miután a System.Management.Automation.Provider.CmdletProvider.ShouldProcess hívás visszatér
true, a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódusnak hívnia kell a System.Management.Automation.Provider.CmdletProvider.ShouldContinue metódust. Ez a módszer üzenetet küld a felhasználónak, hogy visszajelzést biztosítson a művelet folytatásának ellenőrzéséhez. A System.Management.Automation.Provider.CmdletProvider.ShouldContinue hívás további ellenőrzést tesz lehetővé potenciálisan veszélyes rendszermódosítások esetén.
Dinamikus paraméterek lekérése a SetItem számára
Néha a Set-Item cmdlet további paramétereket igényel, amelyeket futás közben dinamikusan megadnak. Ezeknek a dinamikus paramétereknek a megadásához a Windows PowerShell elemszolgáltatónak meg kell valósítania a System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters metódust. Ez a módszer visszanyeri a jelzett útvonalon lévő elem dinamikus paramétereit, és olyan objektumot ad vissza, amelynek tulajdonságai és mezői olyan parzálási attribútumokkal rendelkeznek, amelyek hasonló a cmdlet osztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz. A Windows PowerShell futási ideje a visszaküldött objektumot használja a paraméterek hozzáadására a Set-Item cmdlethez.
Ez a szolgáltató nem alkalmazza ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Egy tárgy törlése
Egy elem törléséhez a Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ItemCmdletProvider.ClearItem metódusot valósítja meg, hogy támogassa a cmdlet hívásait Clear-Item . Ez a módszer törli az adatelemet a megadott úton.
Ez a szolgáltató nem alkalmazza ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Fontos dolgok, amiket érdemes megjegyezni a ClearItem bevezetésével kapcsolatban
A következő feltételek alkalmazhatók a System.Management.Automation.Provider.ItemCmdletProvider.ClearItem implementációjára:
A szolgáltató osztály meghatározásakor egy Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ProviderCapabilities felsorolásából megjelölheti a szolgáltató képességeit,
FilterInclude,ExpandWildcards, vagyExclude, a szolgáltató képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.ClearItem megvalósításának biztosítania kell, hogy a metódushoz átadott ú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 System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.Alapértelmezés szerint ennek a módszernek a felülbírálására nem szabad beállítani vagy írni olyan objektumokat, amelyek el vannak rejtve a felhasználó elől, hacsak a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság nem van beállítva.
trueHibát kell küldeni a System.Management.Automation.Provider.CmdletProvider.WriteError metódusnak, ha az út egy olyan elemet képvisel, amely a felhasználó elől rejtve van, és a System.Management.Automation.Provider.CmdletProvider.Force beállítása .falseA System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódus implementációjának hívnia kell a System.Management.Automation.Provider.CmdletProvider.ShouldProcess formátumot, és ellenőriznie kell a visszatérő értéket, mielőtt bármilyen változtatást végezne az adattárolóban. Ezt a módszert arra használják, hogy megerősítsék a művelet végrehajtását, amikor változtatás történik az adattárolóban, például fájlok törlésekor. A System.Management.Automation.Provider.CmdletProvider.ShouldProcess metódus a módosítandó erőforrás nevét küldi a felhasználónak, a Windows PowerShell futásidejével, és kezeli a parancssori beállításokat vagy preferenciaváltozókat, hogy meghatározza, mit kell megjeleníteni.
Miután a System.Management.Automation.Provider.CmdletProvider.ShouldProcess hívás visszatér
true, a System.Management.Automation.Provider.ItemCmdletProvider.SetItem metódusnak hívnia kell a System.Management.Automation.Provider.CmdletProvider.ShouldContinue metódust. Ez a módszer üzenetet küld a felhasználónak, hogy visszajelzést biztosítson a művelet folytatásának ellenőrzéséhez. A System.Management.Automation.Provider.CmdletProvider.ShouldContinue hívás további ellenőrzést tesz lehetővé potenciálisan veszélyes rendszermódosítások esetén.
Dinamikus paraméterek lekérése a ClearItem számára
Néha a Clear-Item cmdlet további paramétereket igényel, amelyeket futás közben dinamikusan megadnak. E dinamikus paraméterek megadásához a Windows PowerShell elemszolgáltatónak meg kell valósítania a System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters metódust. Ez a módszer visszanyeri a jelzett útvonalon lévő elem dinamikus paramétereit, és olyan objektumot ad vissza, amelynek tulajdonságai és mezői olyan parzálási attribútumokkal rendelkeznek, amelyek hasonló a cmdlet osztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz. A Windows PowerShell futási ideje a visszaküldött objektumot használja a paraméterek hozzáadására a Clear-Item cmdlethez.
Ez az item szolgáltató nem valósítja meg ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Egy alap művelet végrehajtása egy tárgyhoz
Egy Windows PowerShell elemszolgáltató megvalósíthatja a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction metódust, hogy támogassa a parancsnok hívásait Invoke-Item , amely lehetővé teszi a szolgáltató számára, hogy alapértelmezett műveletet hajtson végre a megadott útvonalon lévő elemre. Például a FileSystem szolgáltató ezt a módszert használhatja, hogy egy adott tételhez hívja a ShellExecute-ot .
Ez a szolgáltató nem alkalmazza ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Fontos dolgok, amiket érdemes megjegyezni az InvokeDefaultAction megvalósításához
Az alábbi feltételek alkalmazhatók a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction implementációjára:
A szolgáltató osztály meghatározásakor egy Windows PowerShell elemszolgáltató a System.Management.Automation.Provider.ProviderCapabilities felsorolásából megjelölheti a szolgáltató képességeit,
FilterInclude,ExpandWildcards, vagyExclude, a szolgáltató képességeit. Ezekben az esetekben a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction megvalósításának biztosítania kell, hogy a metódushoz átadott ú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 System.Management.Automation.Provider.CmdletProvider.Include tulajdonságokhoz.Alapértelmezés szerint ennek a módszernek a felülbírálásai nem állítanak be vagy írjanak el objektumokat a felhasználó elől elrejtve, hacsak a System.Management.Automation.Provider.CmdletProvider.Force tulajdonság nem van beállítva.
trueHibát kell küldeni a System.Management.Automation.Provider.CmdletProvider.WriteError metódusnak, ha az út egy olyan elemet képvisel, amely a felhasználó elől rejtve van, és a System.Management.Automation.Provider.CmdletProvider.Force beállítása .false
Retriev dynamic parameters for InvokeDefaultAction
Néha a Invoke-Item cmdlet további paramétereket igényel, amelyeket futás közben dinamikusan megadnak. Ezeknek a dinamikus paramétereknek a biztosításához a Windows PowerShell elemszolgáltatónak meg kell valósítania a System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters metódust. Ez a módszer visszanyeri a jelzett útvonalon lévő elem dinamikus paramétereit, és olyan objektumot ad vissza, amelynek tulajdonságai és mezői olyan parzálási attribútumokkal rendelkeznek, amelyek hasonló a cmdlet osztályhoz vagy a System.Management.Automation.RuntimeDefinedParameterDictionary objektumhoz. A Windows PowerShell futóideje a visszaadott objektumot használja a dinamikus paraméterek hozzáadására a Invoke-Item cmdlethez.
Ez az item szolgáltató nem valósítja meg ezt a módszert. Azonban a következő kód a módszer alapértelmezett implementációja.
Segéd metódusok és osztályok megvalósítása
Ez az elemszolgáltató több segéd metódust és osztályt valósít meg, amelyeket a Windows PowerShell által definiált nyilvános felülírási metódok használnak. Ezeknek a segítő metódusoknak és osztályoknak a kódja a Kód Sample szekcióban látható.
NormalizePath módszer
Ez az elemszolgáltató egy NormalizePath segéd módszert alkalmaz, hogy biztosítsa, hogy az út konzisztens formátumú legyen. A megadott formátum egy visszaoldali lecsapást (\) használ elválasztóként.
PathIsDrive módszer
Ez az elemszolgáltató egy PathIsDrive segítő módszert alkalmaz, hogy megállapítsa, valóban a megadott út a meghajtó neve.
ChunkPath metódus
Ez az item provider egy ChunkPath segédmetódust valósít meg, amely felbontja a megadott útvonalat, hogy a szolgáltató azonosíthassa az egyes elemeit. Egy tömböt ad vissza, amely az útelemekből áll.
GetTable módszer
Ez az elemszolgáltató a GetTables segéd módszert valósítja meg, amely egy DatabaseTableInfo objektumot ad vissza, amely a hívásban megadott tábláról származó információkat reprezentálja.
GetRow metódus
Ennek az item szolgáltatónak a System.Management.Automation.Provider.ItemCmdletProvider.GetItem metódusa a GetRows segítő metódust hívja. Ez a segítő módszer egy DatabaseRowInfo objektumot kér, amely a táblázatban megadott sorról szól.
DatabaseTableInfo osztály
Ez az elemszolgáltató egy DatabaseTableInfo osztályt definiál, amely egy adattábla információgyűjteményét képviseli az adatbázisban. Ez az osztály hasonló a System.IO.Directoryinfo osztályhoz.
A mintatétel szolgáltató egy DatabaseTableInfo.GetTables metódumust definiál, amely egy táblázat-információs objektumokból álló gyűjteményt ad vissza, amelyek definiálják az adatbázis tábláit. Ez a módszer tartalmaz egy try/catch blokkot, hogy biztosítsa, hogy bármilyen adatbázis-hiba nulla bejegyzéssel rendelkező sorként jelenjen meg.
DatabaseRowInfo osztály
Ez az elemszolgáltató definiálja a DatabaseRowInfo segítő osztályt, amely egy sort képvisel az adatbázis táblázatában. Ez az osztály hasonló a System.IO.FileInfo osztályhoz.
A mintaszolgáltató egy DatabaseRowInfo.GetRows metódust definiál, hogy a megadott táblázathoz sorinformációs objektumok gyűjteményét adja vissza. Ez a módszer tartalmaz egy try/catch blokkot a kivételek csapdájához. Bármilyen hiba esetén nem lesz sorinformáció.
Kódrészlet
A teljes mintakódért lásd: AccessDbProviderSample03 Kód minta címet.
Objektumtípusok meghatározása és formázása
Szolgáltató írásakor szükség lehet tagok hozzáadására meglévő objektumokhoz vagy új objektumok definiálására. A befejezés után hozz létre egy Types fájlt, amellyel a Windows PowerShell azonosíthatja az objektum tagjait, valamint egy Format fájlt, amely meghatározza, hogyan jelenítik meg az objektumot. További információért lásd: Objektumtípusok és formázás bővítése.
A Windows PowerShell szolgáltató felépítése
Lásd : Hogyan regisztráljuk a cmdleteket, szolgáltatókat és hásztealkalmazásokat.
A Windows PowerShell szolgáltató tesztelése
Amikor ez a Windows PowerShell elemszolgáltató regisztrált a Windows PowerShell-re, csak a szolgáltató alapvető és meghajtó funkcióit tesztelheted. Az elemek manipulálásának teszteléséhez a konténer funkciókat is meg kell valósítanod, amelyet a Container Windows PowerShell Provider implementálásakor leírtak.
Lásd még
- Windows PowerShell SDK
- Windows PowerShell programozói útmutató
- Windows PowerShell szolgáltatók létrehozása
- Windows PowerShell szolgáltató tervezése
- Objektumtípusok és formázás bővítése
- Hogyan működik a Windows PowerShell
- Container Windows PowerShell szolgáltató létrehozása
- Windows PowerShell szolgáltató létrehozása
- Hogyan regisztráljuk a cmdleteket, szolgáltatókat és hoszt alkalmazásokat