Udostępnij za pośrednictwem


Tworzenie dostawcy kontenera programu Windows PowerShell

W tym temacie opisano sposób tworzenia dostawcy programu Windows PowerShell, który może pracować w wielowarstwowych magazynach danych. W przypadku tego typu magazynu danych najwyższy poziom magazynu zawiera elementy główne, a każdy kolejny poziom jest określany jako węzeł elementów podrzędnych. Dzięki umożliwieniu użytkownikowi pracy z tymi węzłami podrzędnym użytkownik może wchodzić w interakcję hierarchicznie za pośrednictwem magazynu danych.

Dostawcy, którzy mogą pracować w wielopoziomowych magazynach danych, są nazywani dostawcami kontenerów programu Windows PowerShell. Należy jednak pamiętać, że dostawca kontenera programu Windows PowerShell może być używany tylko wtedy, gdy istnieje jeden kontener (bez zagnieżdżonych kontenerów) z elementami w nim. Jeśli istnieją kontenery zagnieżdżone, musisz zaimplementować dostawcę nawigacji programu Windows PowerShell. Aby uzyskać więcej informacji na temat implementowania dostawcy nawigacji programu Windows PowerShell, zobacz Tworzenie dostawcy nawigacji programu Windows PowerShell.

Uwaga

Możesz pobrać plik źródłowy języka C# (AccessDBSampleProvider04.cs) dla tego dostawcy przy użyciu zestawu Microsoft Windows Software Development Kit dla systemów Windows Vista i .NET Framework 3.0 Runtime Components. Aby uzyskać instrukcje pobierania, zobacz How to Install Windows PowerShell (Jak zainstalować program Windows PowerShell) i Download the Windows PowerShell SDK (Pobieranie zestawu Windows PowerShell SDK). Pobrane pliki źródłowe są dostępne w katalogu <Przykłady programu PowerShell>. Aby uzyskać więcej informacji na temat innych implementacji dostawców programu Windows PowerShell, zobacz Projektowanie dostawcy programu Windows PowerShell.

Dostawca kontenera programu Windows PowerShell opisany tutaj definiuje bazę danych jako pojedynczy kontener z tabelami i wierszami bazy danych zdefiniowanymi jako elementy kontenera.

Ostrożność

Należy pamiętać, że w tym projekcie przyjęto założenie, że baza danych ma pole o identyfikatorze nazwy, a typ pola to LongInteger.

Definiowanie klasy dostawcy kontenerów programu Windows PowerShell

Dostawca kontenera programu Windows PowerShell musi zdefiniować klasę .NET pochodzącą z klasy bazowej System.Management.Automation.Provider.ContainerCmdletProvider. Oto definicja klasy dostawcy kontenera programu Windows PowerShell opisana w tej sekcji.

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

Zwróć uwagę, że w tej definicji klasy atrybut System.Management.Automation.Provider.CmdletProviderAttribute zawiera dwa parametry. Pierwszy parametr określa przyjazną dla użytkownika nazwę dostawcy, który jest używany przez program Windows PowerShell. Drugi parametr określa funkcje specyficzne dla środowiska Windows PowerShell, które dostawca uwidacznia środowisko uruchomieniowe programu Windows PowerShell podczas przetwarzania poleceń. W przypadku tego dostawcy nie są dodawane żadne funkcje specyficzne dla programu Windows PowerShell.

Definiowanie podstawowych funkcji

Zgodnie z opisem w Projektowanie dostawcy programu Windows PowerShell, klasa System.Management.Automation.Provider.ContainerCmdletProvider pochodzi z kilku innych klas, które dostarczyły różnych funkcji dostawcy. Dlatego dostawca kontenera programu Windows PowerShell musi zdefiniować wszystkie funkcje udostępniane przez te klasy.

Aby zaimplementować funkcje dodawania informacji inicjalizacji specyficznych dla sesji i udostępniania zasobów używanych przez dostawcę, zobacz Tworzenie podstawowego dostawcy programu Windows PowerShell. Jednak większość dostawców (w tym dostawcy opisanych tutaj) może używać domyślnej implementacji tej funkcji, która jest dostarczana przez program Windows PowerShell.

Aby uzyskać dostęp do magazynu danych, dostawca musi zaimplementować metody System.Management.Automation.Provider.DriveCmdletProvider klasy bazowej. Aby uzyskać więcej informacji na temat implementowania tych metod, zobacz Tworzenie dostawcy dysków programu Windows PowerShell.

Aby manipulować elementami magazynu danych, takimi jak pobieranie, ustawianie i czyszczenie elementów, dostawca musi zaimplementować metody udostępniane przez klasę bazową System.Management.Automation.Provider.ItemCmdletProvider. Aby uzyskać więcej informacji na temat implementowania tych metod, zobacz Tworzenie dostawcy elementów programu Windows PowerShell.

Pobieranie elementów podrzędnych

Aby pobrać element podrzędny, dostawca kontenera programu Windows PowerShell musi zastąpić metodę System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItems* metody do obsługi wywołań z polecenia cmdlet Get-ChildItem. Ta metoda pobiera elementy podrzędne z magazynu danych i zapisuje je w potoku jako obiekty. Jeśli określono parametr recurse polecenia cmdlet, metoda pobiera wszystkie elementy podrzędne niezależnie od poziomu, na jakim są. Jeśli nie określono parametru recurse, metoda pobiera tylko jeden poziom elementów podrzędnych.

Oto implementacja metody System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItems* dla tego dostawcy. Zwróć uwagę, że ta metoda pobiera elementy podrzędne we wszystkich tabelach bazy danych, gdy ścieżka wskazuje bazę danych programu Access i pobiera elementy podrzędne z wierszy tej tabeli, jeśli ścieżka wskazuje tabelę danych.

protected override void GetChildItems(string path, bool recurse)
{
    // If path represented is a drive then the children in the path are 
    // tables. Hence all tables in the drive represented will have to be
    // returned
    if (PathIsDrive(path))
    {
        foreach (DatabaseTableInfo table in GetTables())
        {
            WriteItemObject(table, path, true);

            // if the specified item exists and recurse has been set then 
            // all child items within it have to be obtained as well
            if (ItemExists(path) && recurse)
            {
                GetChildItems(path + pathSeparator + table.Name, recurse);
            }
        } // foreach (DatabaseTableInfo...
    } // if (PathIsDrive...
    else
    {
        // Get the table name, row number and type of path from the
        // path specified
        string tableName;
        int rowNumber;

        PathType type = GetNamesFromPath(path, out tableName, out rowNumber);

        if (type == PathType.Table)
        {
            // Obtain all the rows within the table
            foreach (DatabaseRowInfo row in GetRows(tableName))
            {
                WriteItemObject(row, path + pathSeparator + row.RowNumber,
                        false);
            } // foreach (DatabaseRowInfo...
        }
        else if (type == PathType.Row)
        {
            // In this case the user has directly specified a row, hence
            // just give that particular row
            DatabaseRowInfo row = GetRow(tableName, rowNumber);
            WriteItemObject(row, path + pathSeparator + row.RowNumber,
                        false);
        }
        else
        {
            // In this case, the path specified is not valid
            ThrowTerminatingInvalidPathException(path);
        }
    } // else
} // GetChildItems

Co należy pamiętać o implementowaniu polecenia GetChildItems

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItems*:

Dołączanie parametrów dynamicznych do polecenia cmdlet Get-ChildItem

Czasami polecenie cmdlet Get-ChildItem, które wywołuje System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItems* wymaga dodatkowych parametrów, które są określane dynamicznie w czasie wykonywania. Aby zapewnić te parametry dynamiczne, dostawca kontenera programu Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItemsDynamicParameters*. Ta metoda pobiera parametry dynamiczne dla elementu w wskazanej ścieżce i zwraca obiekt zawierający właściwości i pola z atrybutami analizowania podobnymi do klasy cmdlet lub System.Management.Automation.RuntimeDefinedParameterDictionary. Środowisko uruchomieniowe programu Windows PowerShell używa zwróconego obiektu w celu dodania parametrów do polecenia cmdlet Get-ChildItem.

Ten dostawca kontenera programu Windows PowerShell nie implementuje tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.

Pobieranie nazw elementów podrzędnych

Aby pobrać nazwy elementów podrzędnych, dostawca kontenera programu Windows PowerShell musi zastąpić System.Management.Automation.Provider.ContainerCmdletProvider.GetChildNames* metody do obsługi wywołań z polecenia cmdlet Get-ChildItem, gdy określono jego parametr Name. Ta metoda pobiera nazwy elementów podrzędnych dla określonej ścieżki lub nazw elementów podrzędnych dla wszystkich kontenerów, jeśli określono parametr returnAllContainers polecenia cmdlet. Nazwa podrzędna to część liścia ścieżki. Na przykład nazwa podrzędna ścieżki C:\windows\system32\abc.dll to "abc.dll". Nazwa podrzędna katalogu C:\windows\system32 to "system32".

Oto implementacja metody System.Management.Automation.Provider.ContainerCmdletProvider.GetChildNames* dla tego dostawcy. Zwróć uwagę, że metoda pobiera nazwy tabel, jeśli określona ścieżka wskazuje bazę danych programu Access (dysk) i numery wierszy, jeśli ścieżka wskazuje tabelę.

protected override void GetChildNames(string path,
                              ReturnContainers returnContainers)
{
    // If the path represented is a drive, then the child items are
    // tables. get the names of all the tables in the drive.
    if (PathIsDrive(path))
    {
        foreach (DatabaseTableInfo table in GetTables())
        {
            WriteItemObject(table.Name, path, true);
        } // foreach (DatabaseTableInfo...
    } // if (PathIsDrive...
    else
    {
        // Get type, table name and row number from path specified
        string tableName;
        int rowNumber;

        PathType type = GetNamesFromPath(path, out tableName, out rowNumber);

        if (type == PathType.Table)
        {
            // Get all the rows in the table and then write out the 
            // row numbers.
            foreach (DatabaseRowInfo row in GetRows(tableName))
            {
                WriteItemObject(row.RowNumber, path, false);
            } // foreach (DatabaseRowInfo...
        }
        else if (type == PathType.Row)
        {
            // In this case the user has directly specified a row, hence
            // just give that particular row
            DatabaseRowInfo row = GetRow(tableName, rowNumber);

            WriteItemObject(row.RowNumber, path, false);
        }
        else
        {
            ThrowTerminatingInvalidPathException(path);
        }
    } // else
} // GetChildNames

Ważne jest, aby pamiętać o implementowaniu poleceń GetChildNames

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItems*:

Dołączanie parametrów dynamicznych do polecenia cmdlet Get-ChildItem (nazwa)

Czasami polecenie cmdlet Get-ChildItem (z parametrem Name) wymaga dodatkowych parametrów, które są określane dynamicznie w czasie wykonywania. Aby zapewnić te parametry dynamiczne, dostawca kontenera programu Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.GetChildNamesDynamicParameters*. Ta metoda pobiera parametry dynamiczne elementu w wskazanej ścieżce i zwraca obiekt zawierający właściwości i pola z atrybutami analizowania podobnymi do klasy poleceń cmdlet lub System.Management.Automation.RuntimeDefinedParameterDictionary. Środowisko uruchomieniowe programu Windows PowerShell używa zwróconego obiektu w celu dodania parametrów do polecenia cmdlet Get-ChildItem.

Ten dostawca nie implementuje tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.

Zmienianie nazw elementów

Aby zmienić nazwę elementu, dostawca kontenera programu Windows PowerShell musi zastąpić System.Management.Automation.Provider.ContainerCmdletProvider.RenameItem* metody do obsługi wywołań z polecenia cmdlet Rename-Item. Ta metoda zmienia nazwę elementu w podanej ścieżce na nową nazwę. Nowa nazwa musi zawsze być względna względem elementu nadrzędnego (kontenera).

Ten dostawca nie zastępuje metody System.Management.Automation.Provider.ContainerCmdletProvider.RenameItem*. Jednak poniżej przedstawiono domyślną implementację.

Co należy pamiętać o implementowaniu elementu RenameItem

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.RenameItem*:

Dołączanie parametrów dynamicznych do polecenia cmdlet Rename-Item

Czasami polecenie cmdlet Rename-Item wymaga dodatkowych parametrów, które są określane dynamicznie w czasie wykonywania. Aby zapewnić te parametry dynamiczne, dostawca kontenera programu Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.RenameItemDynamicParameters*. Ta metoda pobiera parametry elementu w wskazanej ścieżce i zwraca obiekt, który ma właściwości i pola z atrybutami analizowania podobnymi do klasy poleceń cmdlet lub System.Management.Automation.RuntimeDefinedParameterDictionary obiektu. Środowisko uruchomieniowe programu Windows PowerShell używa zwróconego obiektu w celu dodania parametrów do polecenia cmdlet Rename-Item.

Ten dostawca kontenerów nie implementuje tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.

Tworzenie nowych elementów

Aby utworzyć nowe elementy, dostawca kontenera musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.NewItem*, aby obsługiwać wywołania z polecenia cmdlet New-Item. Ta metoda tworzy element danych znajdujący się w określonej ścieżce. Parametr type polecenia cmdlet zawiera typ zdefiniowany przez dostawcę dla nowego elementu. Na przykład dostawca systemu plików używa parametru type z wartością "file" lub "directory". Parametr newItemValue polecenia cmdlet określa wartość specyficzną dla dostawcy dla nowego elementu.

Poniżej przedstawiono implementację metody System.Management.Automation.Provider.ContainerCmdletProvider.NewItem* dla tego dostawcy.

protected override void NewItem( string path, string type, object newItemValue )
{
    // Create the new item here after
    // performing necessary validations
    //
    // WriteItemObject(newItemValue, path, false);

    // Example
    //
    // if (ShouldProcess(path, "new item"))
    // {
    //      // Create a new item and then call WriteObject
    //      WriteObject(newItemValue, path, false);
    // }

} // NewItem
{
    case 1:
        {
            string name = pathChunks[0];

            if (TableNameIsValid(name))
            {
                tableName = name;
                retVal = PathType.Table;
            }
        }
        break;

    case 2:
        {
            string name = pathChunks[0];

Co należy pamiętać o implementowaniu elementu NewItem

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.NewItem*:

Dołączanie parametrów dynamicznych do polecenia cmdlet New-Item

Czasami polecenie cmdlet New-Item wymaga dodatkowych parametrów, które są określane dynamicznie w czasie wykonywania. Aby zapewnić te parametry dynamiczne, dostawca kontenera musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.NewItemDynamicParameters*. Ta metoda pobiera parametry elementu w wskazanej ścieżce i zwraca obiekt, który ma właściwości i pola z atrybutami analizowania podobnymi do klasy poleceń cmdlet lub System.Management.Automation.RuntimeDefinedParameterDictionary obiektu. Środowisko uruchomieniowe programu Windows PowerShell używa zwróconego obiektu w celu dodania parametrów do polecenia cmdlet New-Item.

Ten dostawca nie implementuje tej metody. Jednak poniższy kod jest domyślną implementacją tej metody.

Usuwanie elementów

Aby usunąć elementy, dostawca programu Windows PowerShell musi zastąpić metodę System.Management.Automation.Provider.ContainerCmdletProvider.RemoveItem*, aby obsługiwać wywołania z polecenia cmdlet Remove-Item. Ta metoda usuwa element z magazynu danych w określonej ścieżce. Jeśli parametr recurse polecenia cmdlet Remove-Item jest ustawiony na true, metoda usuwa wszystkie elementy podrzędne niezależnie od ich poziomu. Jeśli parametr jest ustawiony na false, metoda usuwa tylko jeden element w określonej ścieżce.

Ten dostawca nie obsługuje usuwania elementów. Poniższy kod jest jednak domyślną implementacją System.Management.Automation.Provider.ContainerCmdletProvider.RemoveItem*.

Co należy pamiętać o implementowaniu elementu RemoveItem

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.NewItem*:

Dołączanie parametrów dynamicznych do polecenia cmdlet Remove-Item

Czasami polecenie cmdlet Remove-Item wymaga dodatkowych parametrów, które są określane dynamicznie w czasie wykonywania. Aby zapewnić te parametry dynamiczne, dostawca kontenera musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.RemoveItemDynamicParameters*. Ta metoda pobiera parametry dynamiczne elementu w wskazanej ścieżce i zwraca obiekt zawierający właściwości i pola z atrybutami analizowania podobnymi do klasy poleceń cmdlet lub System.Management.Automation.RuntimeDefinedParameterDictionary. Środowisko uruchomieniowe programu Windows PowerShell używa zwróconego obiektu w celu dodania parametrów do polecenia cmdlet Remove-Item.

Ten dostawca kontenerów nie implementuje tej metody. Poniższy kod jest jednak domyślną implementacją System.Management.Automation.Provider.ContainerCmdletProvider.RemoveItemDynamicParameters*.

Wykonywanie zapytań dotyczących elementów podrzędnych

Aby sprawdzić, czy elementy podrzędne istnieją w określonej ścieżce, dostawca kontenera programu Windows PowerShell musi zastąpić metodę System.Management.Automation.Provider.ContainerCmdletProvider.HasChildItems*. Ta metoda zwraca true, jeśli element ma elementy podrzędne i false w przeciwnym razie. W przypadku ścieżki o wartości null lub pustej metoda uwzględnia wszystkie elementy w magazynie danych jako elementy podrzędne i zwraca true.

Oto zastąpienie metody System.Management.Automation.Provider.ContainerCmdletProvider.HasChildItems*. Jeśli istnieje więcej niż dwie części ścieżki utworzone przez metodę pomocnika ChunkPath, metoda zwraca false, ponieważ zdefiniowano tylko kontener bazy danych i kontener tabeli. Aby uzyskać więcej informacji na temat tej metody pomocniczej, zobacz temat Metoda ChunkPath została omówiona w Tworzenie dostawcy elementów programu Windows PowerShell.

protected override bool HasChildItems( string path )
{
    return false;
} // HasChildItems
        ErrorCategory.InvalidOperation, tableName));
}

return results;

Ważne jest, aby pamiętać o implementowaniu funkcji HasChildItems

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.HasChildItems*:

Kopiowanie elementów

Aby skopiować elementy, dostawca kontenera musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.CopyItem w celu obsługi wywołań z polecenia cmdlet Copy-Item. Ta metoda kopiuje element danych z lokalizacji wskazanej przez parametr path polecenia cmdlet do lokalizacji wskazanej przez parametr copyPath. Jeśli określono parametr recurse, metoda kopiuje wszystkie kontenery podrzędne. Jeśli parametr nie zostanie określony, metoda kopiuje tylko jeden poziom elementów.

Ten dostawca nie implementuje tej metody. Poniższy kod jest jednak domyślną implementacją System.Management.Automation.Provider.ContainerCmdletProvider.CopyItem.

Co należy pamiętać o implementowaniu elementu CopyItem

Następujące warunki mogą mieć zastosowanie do implementacji System.Management.Automation.Provider.ContainerCmdletProvider.CopyItem:

Dołączanie parametrów dynamicznych do polecenia cmdlet Copy-Item

Czasami polecenie cmdlet Copy-Item wymaga dodatkowych parametrów, które są określane dynamicznie w czasie wykonywania. Aby zapewnić te parametry dynamiczne, dostawca kontenera programu Windows PowerShell musi zaimplementować metodę System.Management.Automation.Provider.ContainerCmdletProvider.CopyItemDynamicParameters*. Ta metoda pobiera parametry elementu w wskazanej ścieżce i zwraca obiekt, który ma właściwości i pola z atrybutami analizowania podobnymi do klasy poleceń cmdlet lub System.Management.Automation.RuntimeDefinedParameterDictionary obiektu. Środowisko uruchomieniowe programu Windows PowerShell używa zwróconego obiektu w celu dodania parametrów do polecenia cmdlet Copy-Item.

Ten dostawca nie implementuje tej metody. Jednak poniższy kod jest domyślną implementacją System.Management.Automation.Provider.ContainerCmdletProvider.CopyItemDynamicParameters*.

Przykładowy kod

Aby uzyskać pełny przykładowy kod, zobacz AccessDbProviderSample04 Code Sample.

Kompilowanie dostawcy programu Windows PowerShell

Zobacz Jak rejestrować polecenia cmdlet, dostawcy i aplikacje hosta.

Testowanie dostawcy programu Windows PowerShell

Jeśli dostawca programu Windows PowerShell został zarejestrowany w programie Windows PowerShell, możesz go przetestować, uruchamiając obsługiwane polecenia cmdlet w wierszu polecenia. Należy pamiętać, że następujące przykładowe dane wyjściowe używają fikcyjnej bazy danych programu Access.

  1. Uruchom polecenie cmdlet Get-ChildItem, aby pobrać listę elementów podrzędnych z tabeli Customers w bazie danych programu Access.

    Get-ChildItem mydb:customers
    

    Zostanie wyświetlone następujące dane wyjściowe.

    PSPath        : AccessDB::customers
    PSDrive       : mydb
    PSProvider    : System.Management.Automation.ProviderInfo
    PSIsContainer : True
    Data          : System.Data.DataRow
    Name          : Customers
    RowCount      : 91
    Columns       :
    
  2. Uruchom ponownie polecenie cmdlet Get-ChildItem, aby pobrać dane tabeli.

    (Get-ChildItem mydb:customers).Data
    

    Zostanie wyświetlone następujące dane wyjściowe.

    TABLE_CAT   : C:\PS\northwind
    TABLE_SCHEM :
    TABLE_NAME  : Customers
    TABLE_TYPE  : TABLE
    REMARKS     :
    
  3. Teraz użyj polecenia cmdlet Get-Item, aby pobrać elementy w wierszu 0 w tabeli danych.

    Get-Item mydb:\customers\0
    

    Zostanie wyświetlone następujące dane wyjściowe.

    PSPath        : AccessDB::customers\0
    PSDrive       : mydb
    PSProvider    : System.Management.Automation.ProviderInfo
    PSIsContainer : False
    Data          : System.Data.DataRow
    RowNumber     : 0
    
  4. Użyj ponownie Get-Item, aby pobrać dane dla elementów w wierszu 0.

    (Get-Item mydb:\customers\0).Data
    

    Zostanie wyświetlone następujące dane wyjściowe.

    CustomerID   : 1234
    CompanyName  : Fabrikam
    ContactName  : Eric Gruber
    ContactTitle : President
    Address      : 4567 Main Street
    City         : Buffalo
    Region       : NY
    PostalCode   : 98052
    Country      : USA
    Phone        : (425) 555-0100
    Fax          : (425) 555-0101
    
  5. Teraz użyj polecenia cmdlet New-Item, aby dodać wiersz do istniejącej tabeli. Parametr Path określa pełną ścieżkę do wiersza i musi wskazywać liczbę wierszy większą niż istniejąca liczba wierszy w tabeli. Parametr Type wskazuje, Row określić typ elementu do dodania. Na koniec parametr Value określa rozdzielaną przecinkami listę wartości kolumn dla wiersza.

    New-Item -Path mydb:\Customers\3 -ItemType "Row" -Value "3,CustomerFirstName,CustomerLastName,CustomerEmailAddress,CustomerTitle,CustomerCompany,CustomerPhone, CustomerAddress,CustomerCity,CustomerState,CustomerZip,CustomerCountry"
    
  6. Sprawdź poprawność operacji nowego elementu w następujący sposób.

    PS mydb:\> cd Customers
    PS mydb:\Customers> (Get-Item 3).Data
    

    Zostanie wyświetlone następujące dane wyjściowe.

    ID        : 3
    FirstName : Eric
    LastName  : Gruber
    Email     : ericgruber@fabrikam.com
    Title     : President
    Company   : Fabrikam
    WorkPhone : (425) 555-0100
    Address   : 4567 Main Street
    City      : Buffalo
    State     : NY
    Zip       : 98052
    Country   : USA
    

Zobacz też

tworzenie dostawców programu Windows PowerShell

projektowanie dostawcy programu Windows PowerShell

implementowanie dostawcy programu Windows PowerShell elementu

implementowanie dostawcy programu Windows PowerShell nawigacji

Jak rejestrować polecenia cmdlet, dostawcy i aplikacje hosta

zestaw SDK programu Windows PowerShell

Przewodnik programisty programu Windows PowerShell