Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten temat opisuje, jak stworzyć dostawcę Windows PowerShell, który może manipulować danymi w magazynie danych. W tym temacie elementy danych w magazynie nazywane są "elementami" magazynu danych. W konsekwencji dostawca, który może manipulować danymi w magazynie, nazywany jest dostawcą elementów Windows PowerShell.
Uwaga / Notatka
Możesz pobrać plik źródłowy C# (AccessDBSampleProvider03.cs) dla tego dostawcy za pomocą Microsoft Windows Software Development Kit for Windows Vista oraz .NET Framework 3.0 Runtime Components. Instrukcje pobrania można znaleźć w sekcji Jak zainstalować Windows PowerShell oraz pobierz Windows PowerShell SDK.
Pobrane pliki źródłowe są dostępne w katalogu PowerShell Samples . Więcej informacji o innych implementacjach dostawców Windows PowerShell można znaleźć w artykule Projektowanie swojego dostawcy Windows PowerShell.
Dostawca elementów Windows PowerShell opisany w tym temacie otrzymuje elementy danych z bazy Access. W tym przypadku "element" to albo tabela w bazie danych Access, albo wiersz w tabeli.
Definiowanie klasy dostawcy elementów Windows PowerShell
Dostawca elementów Windows PowerShell musi zdefiniować klasę .NET pochodzącą z podstawowej klasy System.Management.Automation.Provider.ItemCmdletProvider . Poniżej znajduje się definicja klasy dostawcy przedmiotów opisana w tej sekcji.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Należy zauważyć, że w tej definicji klasy atrybut System.Management.Automation.Provider.CmdletProviderAttribute zawiera dwa parametry. Pierwszy parametr określa przyjazną dla użytkownika nazwę dostawcy używanego przez Windows PowerShell. Drugi parametr określa specyficzne możliwości Windows PowerShell, które dostawca udostępnia środowisku wykonawczym Windows PowerShell podczas przetwarzania poleceń. Dla tego dostawcy nie ma dodatkowych funkcji specyficznych dla Windows PowerShell.
Definiowanie funkcjonalności bazy
Jak opisano w książce Design Your Windows PowerShell Provider, klasa System.Management.Automation.Provider.DriveCmdletProvider pochodzi z kilku innych klas, które zapewniały różne funkcje dostawców. Dostawca elementów Windows PowerShell musi zatem zdefiniować całą funkcjonalność oferowaną przez te klasy.
Aby uzyskać więcej informacji o tym, jak wdrożyć funkcje dodawania informacji inicjalizacyjnych specyficznych dla sesji oraz uwalniania zasobów używanych przez dostawcę, zobacz Tworzenie podstawowego dostawcy Windows PowerShell. Jednak większość dostawców, w tym opisany tutaj, może korzystać z domyślnej implementacji tej funkcjonalności oferowanej przez Windows PowerShell.
Zanim dostawca elementów Windows PowerShell będzie mógł manipulować elementami w magazynie, musi zaimplementować metody podstawowej klasy System.Management.Automation.Provider.DriveCmdletProvider , aby uzyskać dostęp do magazynu danych. Więcej informacji o implementacji tej klasy można znaleźć w artykule Tworzenie dostawcy dysków Windows PowerShell.
Sprawdzanie poprawności ścieżki
Podczas poszukiwania elementu danych, środowisko wykonawcze Windows PowerShell udostępnia dostawcy ścieżkę Windows PowerShell, zgodnie z definicją w sekcji "PSPath Concepts" w How Windows PowerShell Works. Dostawca elementów Windows PowerShell musi zweryfikować poprawność składniową i semantyczną każdej przekazanej ścieżki, implementując metodę System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath . Ta metoda zwraca, true jeśli ścieżka jest poprawna, a false w przeciwnym razie. Należy pamiętać, że implementacja tej metody nie powinna weryfikować istnienia elementu na ścieżce, lecz jedynie, że ścieżka jest poprawna składniowo i semantycznie.
Oto implementacja metody System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath dla tego dostawcy. Należy zauważyć, że ta implementacja wywołuje metodę pomocniczą NormalizePath , aby przekształcić wszystkie separatory na ścieżce w jednolity.
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
Ustalenie, czy przedmiot istnieje
Po weryfikacji ścieżki, środowisko wykonawcze Windows PowerShell musi ustalić, czy na tej ścieżce istnieje element danych. Aby wspierać tego typu zapytania, dostawca elementów Windows PowerShell implementuje metodę System.Management.Automation.Provider.ItemCmdletProvider.ItemExists . Ta metoda zwraca true element, który znajduje się na określonej ścieżce, a false (domyślnie) w przeciwnym razie.
Oto implementacja metody System.Management.Automation.Provider.ItemCmdletProvider.ItemExists dla tego dostawcy. Należy zauważyć, że ta metoda wywołuje metody pomocnicze PathIsDrive, ChunkPath i GetTable oraz korzysta z obiektu DatabaseInfo zdefiniowanego przez dostawcę.
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
Rzeczy, o których warto pamiętać przy wdrażaniu ItemExists
Następujące warunki mogą mieć zastosowanie do Twojej implementacji System.Management.Automation.Provider.ItemCmdletProvider.ItemExists:
- Podczas definiowania klasy dostawcy, dostawca elementów Windows PowerShell może deklarować możliwości dostawcy ,
ExpandWildcardsFilter,Include, lubExclude, z enumeracji System.Management.Automation.Provider.ProviderCapabilities. W takich przypadkach implementacja metody System.Management.Automation.Provider.ItemCmdletProvider.ItemExists musi zapewnić, że ścieżka przekazana do metody spełnia wymagania określonych możliwości. Aby to zrobić, metoda powinna uzyskać dostęp do odpowiednich właściwości, na przykład do właściwości System.Management.Automation.Provider.CmdletProvider.Exclude oraz System.Management.Automation.Provider.CmdletProvider.Include. - Implementacja tej metody powinna obsługiwać wszelkie formy dostępu do przedmiotu, które mogą uczynić go widocznym dla użytkownika. Na przykład, jeśli użytkownik ma dostęp do zapisu do pliku przez dostawcę systemu plików (dostarczonego przez Windows PowerShell), ale nie ma dostępu do odczytu, plik nadal istnieje i System.Management.Automation.ItemCmdletProvider.ItemExists zwraca
true. Twoja implementacja może wymagać sprawdzenia elementu nadrzędnego, aby sprawdzić, czy element potomny może być wyliczony.
Przypisywanie parametrów dynamicznych do Test-Path cmdlet
Czasami Test-Path cmdlet wywołujący System.Management.Automation.Provider.ItemCmdletProvider.ItemExists wymaga dodatkowych parametrów określanych dynamicznie w czasie działania. Aby zapewnić te parametry dynamiczne, dostawca elementów Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicParameters . Ta metoda pobiera parametry dynamiczne dla elementu na wskazanej ścieżce i zwraca obiekt o właściwościach i polach z atrybutami parsowania podobnymi do klasy cmdlet lub obiektu System.Management.Automation.RuntimeDefinedParameterDictionary . Środowisko uruchomieniowe Windows PowerShell wykorzystuje zwrócony obiekt do dodawania parametrów do cmdletu Test-Path .
Ten dostawca elementów Windows PowerShell nie implementuje tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Odzyskiwanie przedmiotu
Aby pobrać element, dostawca elementów Windows PowerShell musi nadpisać metodę System.Management.Automation.Provider.ItemCmdletProvider.GetItem , aby wspierać wywołania z Get-Item cmdletu. Ta metoda zapisuje element za pomocą metody System.Management.Automation.Provider.CmdletProvider.WriteItemObject .
Oto implementacja metody System.Management.Automation.Provider.ItemCmdletProvider.GetItem dla tego dostawcy. Należy zauważyć, że ta metoda wykorzystuje metody pomocnicze GetTable i GetRow do pobierania elementów, które są tabelami w bazie danych Access lub wierszami w tabeli danych.
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
Rzeczy, o których warto pamiętać przy wdrażaniu GetItem
Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ItemCmdletProvider.GetItem:
Podczas definiowania klasy dostawcy, dostawca elementów Windows PowerShell może deklarować możliwości dostawcy ,
ExpandWildcardsFilter,Include, lubExclude, z enumeracji System.Management.Automation.Provider.ProviderCapabilities. W takich przypadkach implementacja System.Management.Automation.Provider.ItemCmdletProvider.GetItem musi zapewnić, że ścieżka przekazana metodzie spełnia te wymagania. Aby to zrobić, metoda powinna uzyskać dostęp do odpowiednich właściwości, na przykład do właściwości System.Management.Automation.Provider.CmdletProvider.Exclude oraz System.Management.Automation.Provider.CmdletProvider.Include.Domyślnie nadpisania tej metody nie powinny pobierać obiektów, które są zazwyczaj ukryte przed użytkownikiem, chyba że właściwość System.Management.Automation.Provider.CmdletProvider.Force jest ustawiona na .
trueNa przykład metoda System.Management.Automation.Provider.ItemCmdletProvider.GetItem dla dostawcy systemu plików sprawdza właściwość System.Management.Automation.Provider.CmdletProvider.Force, zanim spróbuje wywołać System.Management.Automation.Provider.CmdletProvider.WriteItemObject dla plików ukrytych lub systemowych.
Przypisywanie parametrów dynamicznych do Get-Item cmdlet
Czasami Get-Item cmdlet wymaga dodatkowych parametrów, które są określane dynamicznie w czasie działania. Aby zapewnić te parametry dynamiczne, dostawca elementów Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters . Ta metoda pobiera parametry dynamiczne dla elementu na wskazanej ścieżce i zwraca obiekt o właściwościach i polach z atrybutami parsowania podobnymi do klasy cmdlet lub obiektu System.Management.Automation.RuntimeDefinedParameterDictionary . Środowisko uruchomieniowe Windows PowerShell wykorzystuje zwrócony obiekt do dodawania parametrów do cmdletu Get-Item .
Ten dostawca nie wdraża tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Ustawianie przedmiotu
Aby ustawić element, dostawca elementów Windows PowerShell musi nadpisać metodę System.Management.Automation.Provider.ItemCmdletProvider.SetItem , aby wspierać wywołania z cmdletu Set-Item . Ta metoda ustawia wartość elementu na określonej ścieżce.
Ten dostawca nie zapewnia nadpisania dla metody System.Management.Automation.Provider.ItemCmdletProvider.SetItem . Jednak poniżej znajduje się domyślna implementacja tej metody.
Rzeczy, o których warto pamiętać przy wdrażaniu SetItem
Następujące warunki mogą mieć zastosowanie do Twojej implementacji System.Management.Automation.Provider.ItemCmdletProvider.SetItem:
Podczas definiowania klasy dostawcy, dostawca elementów Windows PowerShell może deklarować możliwości dostawcy ,
ExpandWildcardsFilter,Include, lubExclude, z enumeracji System.Management.Automation.Provider.ProviderCapabilities. W takich przypadkach implementacja System.Management.Automation.Provider.ItemCmdletProvider.SetItem musi zapewnić, że ścieżka przekazana do metody spełnia te wymagania. Aby to zrobić, metoda powinna uzyskać dostęp do odpowiednich właściwości, na przykład do właściwości System.Management.Automation.Provider.CmdletProvider.Exclude oraz System.Management.Automation.Provider.CmdletProvider.Include.Domyślnie nadpisywania tej metody nie powinny ustawiać ani zapisywać obiektów ukrytych przed użytkownikiem, chyba że właściwość System.Management.Automation.Provider.CmdletProvider.Force jest ustawiona na .
trueBłąd powinien zostać wysłany do metody System.Management.Automation.Provider.CmdletProvider.WriteError, jeśli ścieżka reprezentuje ukryty element, a System.Management.Automation.Provider.CmdletProvider.Force jest ustawiony na .falseTwoja implementacja metody System.Management.Automation.Provider.ItemCmdletProvider.SetItem powinna wywołać System.Management.Automation.Provider.CmdletProvider.OughtProcess i zweryfikować jej wartość zwrotną przed wprowadzeniem jakichkolwiek zmian w magazynie danych. Ta metoda służy do potwierdzenia wykonania operacji po zmianie w magazynie danych, na przykład usuwaniu plików. Metoda System.Management.Automation.Provider.CmdletProvider.ShouldProcess wysyła użytkownikowi nazwę zasobu do zmiany, a środowisko działania Windows PowerShell uwzględnia wszelkie ustawienia wiersza poleceń lub zmienne preferencyjne przy określaniu, co powinno być wyświetlane.
Po wywołaniu System.Management.Automation.Provider.CmdletProvider.ShouldProcess zwraca
true, metoda System.Management.Automation.Provider.ItemCmdletProvider.SetItem powinna wywołać metodę System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Ta metoda wysyła użytkownikowi wiadomość, aby uzyskać informację zwrotną w celu weryfikacji, czy operacja powinna być kontynuowana. Wywołanie do System.Management.Automation.Provider.CmdletProvider.ShouldContinue pozwala na dodatkowe sprawdzenie potencjalnie niebezpiecznych modyfikacji systemu.
Pobieranie parametrów dynamicznych dla SetItem
Czasami Set-Item cmdlet wymaga dodatkowych parametrów, które są określane dynamicznie w czasie działania. Aby zapewnić te parametry dynamiczne, dostawca elementów Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters . Ta metoda pobiera parametry dynamiczne dla elementu na wskazanej ścieżce i zwraca obiekt o właściwościach i polach z atrybutami parsowania podobnymi do klasy cmdlet lub obiektu System.Management.Automation.RuntimeDefinedParameterDictionary . Środowisko uruchomieniowe Windows PowerShell wykorzystuje zwrócony obiekt do dodawania parametrów do cmdletu Set-Item .
Ten dostawca nie wdraża tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Czyszczenie przedmiotu
Aby wyczyścić element, dostawca elementów Windows PowerShell implementuje metodę System.Management.Automation.Provider.ItemCmdletProvider.ClearItem do obsługi wywołań z Clear-Item cmdletu. Ta metoda usuwa element danych na podanej ścieżce.
Ten dostawca nie wdraża tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Rzeczy, o których warto pamiętać przy wdrażaniu ClearItem
Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ItemCmdletProvider.ClearItem:
Podczas definiowania klasy dostawcy, dostawca elementów Windows PowerShell może deklarować możliwości dostawcy ,
ExpandWildcardsFilter,Include, lubExclude, z enumeracji System.Management.Automation.Provider.ProviderCapabilities. W takich przypadkach implementacja System.Management.Automation.Provider.ItemCmdletProvider.ClearItem musi zapewnić, że ścieżka przekazana do metody spełnia te wymagania. Aby to zrobić, metoda powinna uzyskać dostęp do odpowiednich właściwości, na przykład do właściwości System.Management.Automation.Provider.CmdletProvider.Exclude oraz System.Management.Automation.Provider.CmdletProvider.Include.Domyślnie nadpisywania tej metody nie powinny ustawiać ani zapisywać obiektów ukrytych przed użytkownikiem, chyba że właściwość System.Management.Automation.Provider.CmdletProvider.Force jest ustawiona na .
trueBłąd powinien zostać wysłany do metody System.Management.Automation.Provider.CmdletProvider.WriteError , jeśli ścieżka reprezentuje element ukryty przed użytkownikiem, a System.Management.Automation.Provider.CmdletProvider.Force jest ustawiony nafalse.Twoja implementacja metody System.Management.Automation.Provider.ItemCmdletProvider.SetItem powinna wywołać System.Management.Automation.Provider.CmdletProvider.OughtProcess i zweryfikować jej wartość zwrotną przed wprowadzeniem jakichkolwiek zmian w magazynie danych. Ta metoda służy do potwierdzenia wykonania operacji po zmianie w magazynie danych, na przykład usuwaniu plików. Metoda System.Management.Automation.Provider.CmdletProvider.ShouldProcess wysyła nazwę zasobu do zmiany użytkownikowi wraz z środowiskiem wykonawczym Windows PowerShell i obsługuje wszelkie ustawienia wiersza poleceń lub zmienne preferencyjne przy określaniu, co powinno być wyświetlane.
Po wywołaniu System.Management.Automation.Provider.CmdletProvider.ShouldProcess zwraca
true, metoda System.Management.Automation.Provider.ItemCmdletProvider.SetItem powinna wywołać metodę System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Ta metoda wysyła użytkownikowi wiadomość, aby uzyskać informację zwrotną w celu weryfikacji, czy operacja powinna być kontynuowana. Wywołanie do System.Management.Automation.Provider.CmdletProvider.ShouldContinue pozwala na dodatkowe sprawdzenie potencjalnie niebezpiecznych modyfikacji systemu.
Pobierz parametry dynamiczne dla ClearItem
Czasami Clear-Item cmdlet wymaga dodatkowych parametrów, które są określane dynamicznie w czasie działania. Aby zapewnić te dynamiczne parametry, dostawca elementów Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters . Ta metoda pobiera parametry dynamiczne dla elementu na wskazanej ścieżce i zwraca obiekt o właściwościach i polach z atrybutami parsowania podobnymi do klasy cmdlet lub obiektu System.Management.Automation.RuntimeDefinedParameterDictionary . Środowisko uruchomieniowe Windows PowerShell wykorzystuje zwrócony obiekt do dodawania parametrów do cmdletu Clear-Item .
Ten dostawca produktów nie wdraża tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Wykonanie domyślnej akcji dla przedmiotu
Dostawca elementów Windows PowerShell może zaimplementować metodę System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction do obsługi wywołań z Invoke-Item cmdletu, co pozwala dostawcy wykonać domyślną akcję dla elementu na określonej ścieżce. Na przykład dostawca systemu plików może użyć tej metody do wywołania ShellExecute dla konkretnego elementu.
Ten dostawca nie wdraża tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Rzeczy, o których warto pamiętać przy implementacji InvokeDefaultAction
Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction:
Podczas definiowania klasy dostawcy, dostawca elementów Windows PowerShell może deklarować możliwości dostawcy ,
ExpandWildcardsFilter,Include, lubExclude, z enumeracji System.Management.Automation.Provider.ProviderCapabilities. W takich przypadkach implementacja System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction musi zapewnić, że ścieżka przekazana do metody spełnia te wymagania. Aby to zrobić, metoda powinna uzyskać dostęp do odpowiednich właściwości, na przykład do właściwości System.Management.Automation.Provider.CmdletProvider.Exclude oraz System.Management.Automation.Provider.CmdletProvider.Include.Domyślnie, nadpisania tej metody nie powinny ustawiać ani zapisywać obiektów ukrytych przed użytkownikiem, chyba że właściwość System.Management.Automation.Provider.CmdletProvider.Force jest ustawiona na .
trueBłąd powinien zostać wysłany do metody System.Management.Automation.Provider.CmdletProvider.WriteError , jeśli ścieżka reprezentuje element ukryty przed użytkownikiem, a System.Management.Automation.Provider.CmdletProvider.Force jest ustawiony nafalse.
Pobierz parametry dynamiczne dla InvokeDefaultAction
Czasami Invoke-Item cmdlet wymaga dodatkowych parametrów, które są określane dynamicznie w czasie działania. Aby zapewnić te parametry dynamiczne, dostawca elementów Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters . Ta metoda pobiera parametry dynamiczne dla elementu na wskazanej ścieżce i zwraca obiekt o właściwościach i polach z atrybutami parsowania podobnymi do klasy cmdlet lub obiektu System.Management.Automation.RuntimeDefinedParameterDictionary . Środowisko wykonawcze Windows PowerShell wykorzystuje zwrócony obiekt do dodawania dynamicznych parametrów do przycisku Invoke-Item cmdlet.
Ten dostawca produktów nie wdraża tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.
Implementacja metod pomocniczych i klas
Ten dostawca elementów implementuje kilka metod pomocniczych i klas używanych przez publiczne metody nadpisania zdefiniowane przez Windows PowerShell. Kod tych metod pomocniczych i klas jest przedstawiony w sekcji Przykłady kodu .
Metoda NormalizePath
Ten dostawca elementów implementuje metodę pomocniczą NormalizePath , aby zapewnić spójny format ścieżki. Określony format wykorzystuje ukośnik (\) jako separator.
Metoda PathIsDrive
Ten dostawca elementów implementuje metodę pomocniczą PathIsDrive , aby ustalić, czy podana ścieżka faktycznie jest nazwą dysku.
Metoda ChunkPath
Ten dostawca elementów implementuje metodę pomocniczą ChunkPath , która rozdziela określoną ścieżkę, aby mógł zidentyfikować jej poszczególne elementy. Zwraca tablicę złożoną z elementów ścieżek.
Metoda GetTable
Ten dostawca elementów implementuje metodę pomocniczą GetTables , która zwraca obiekt DatabaseTableInfo reprezentujący informacje o tabeli określonej w wywołaniu.
GetRow, metoda
Metoda System.Management.Automation.Provider.ItemCmdletProvider.GetItem tego dostawcy przedmiotów nazywa metodą pomocniczą GetRows . Ta metoda pomocnicza pobiera obiekt DatabaseRowInfo , który reprezentuje informacje o określonym wierszu w tabeli.
Klasa DatabaseTableInfo
Ten dostawca elementów definiuje klasę DatabaseTableInfo , która reprezentuje zbiór informacji w tabeli danych w bazie danych. Ta klasa jest podobna do klasy System.IO.Directoryinfo .
Dostawca przykładowych elementów definiuje metodę DatabaseTableInfo.GetTables , która zwraca zbiór obiektów informacyjnych tabel definiujących tabele w bazie danych. Ta metoda obejmuje blok try/catch, aby zapewnić, że każdy błąd bazy danych pojawi się jako wiersz bez żadnych wpisów.
Klasa DatabaseRowInfo
Ten dostawca elementów definiuje klasę pomocniczą DatabaseRowInfo , która reprezentuje wiersz w tabeli bazy danych. Ta klasa jest podobna do klasy System.IO.FileInfo .
Dostawca próbek definiuje metodę DatabaseRowInfo.GetRows , która zwraca kolekcję obiektów informacji wiersza dla określonej tabeli. Ta metoda obejmuje blok try/catch do łapania wyjątków. Wszelkie błędy skutkują brakiem informacji o wierszu.
Przykład kodu
Pełny przykładowy kod można znaleźć w AccessDbProviderSample03 Code Sample.
Definiowanie typów obiektów i formatowanie
Podczas pisania dostawcy może być konieczne dodanie członków do istniejących obiektów lub zdefiniowanie nowych. Po zakończeniu utworzenia pliku Types, którego Windows PowerShell może wykorzystać do identyfikacji członków obiektu, oraz pliku Format, który definiuje, jak obiekt jest wyświetlany. Więcej informacji można znaleźć w artykule Rozszerzanie typów obiektów i formatowania.
Budowanie dostawcy Windows PowerShell
Zobacz Jak rejestrować cmdlety, dostawców i aplikacje hostów.
Testowanie dostawcy Windows PowerShell
Gdy ten dostawca elementów Windows PowerShell jest zarejestrowany w Windows PowerShell, możesz testować jedynie podstawową i dyskową funkcjonalność tego dostawcy. Aby przetestować manipulację elementami, musisz również zaimplementować funkcjonalność kontenera opisaną w Implementing a Container Windows PowerShell Provider.
Zobacz także
- Windows PowerShell SDK
- Przewodnik dla programistów Windows PowerShell
- Tworzenie dostawców Windows PowerShell
- Projektowanie dostawcy Windows PowerShell
- Rozszerzanie typów obiektów i formatowanie
- Jak działa Windows PowerShell
- Tworzenie kontenera dla dostawcy Windows PowerShell
- Tworzenie dostawcy PowerShell na Drive Windows
- Jak rejestrować cmdlety, dostawców i aplikacje hostowane