Windows PowerShelles tartalomszolgáltató létrehozásaCreating a Windows PowerShell Content Provider

Ez a témakör azt ismerteti, hogyan hozhat létre egy olyan Windows PowerShell-szolgáltatót, amely lehetővé teszi a felhasználó számára az adattárban lévő elemek tartalmának kezelését.This topic describes how to create a Windows PowerShell provider that enables the user to manipulate the contents of the items in a data store. Ennek következményeként az elemek tartalmának manipulálására szolgáló szolgáltató Windows PowerShell-tartalomszolgáltató.As a consequence, a provider that can manipulate the contents of items is referred to as a Windows PowerShell content provider.

Megjegyzés

A szolgáltatóhoz tartozó C#-forrásfájl (AccessDBSampleProvider06.cs) a Windows Vista és a .NET Framework 3,0 Runtime Components Microsoft Windows szoftverfejlesztői készletének használatával tölthető le.You can download the C# source file (AccessDBSampleProvider06.cs) for this provider using the Microsoft Windows Software Development Kit for Windows Vista and .NET Framework 3.0 Runtime Components. A letöltési utasításokért lásd: a Windows PowerShell telepítése és a Windows POWERSHELL SDK letöltése.For download instructions, see How to Install Windows PowerShell and Download the Windows PowerShell SDK. A letöltött forrásfájlok a címtárban érhetők el <PowerShell Samples> .The downloaded source files are available in the <PowerShell Samples> directory. További információ a Windows PowerShell-szolgáltatók egyéb implementációkkal kapcsolatban: a Windows PowerShell-szolgáltató megtervezése.For more information about other Windows PowerShell provider implementations, see Designing Your Windows PowerShell Provider.

A Windows PowerShell tartalmi szolgáltató osztályának megadásaDefine the Windows PowerShell Content Provider Class

A Windows PowerShell-szolgáltatónak létre kell hoznia egy .NET-osztályt, amely támogatja a System. Management. Automation. Provider. Icontentcmdletprovider felületet.A Windows PowerShell content provider must create a .NET class that supports the System.Management.Automation.Provider.Icontentcmdletprovider interface. Itt látható az ebben a részben ismertetett cikkcsoport osztályának definíciója.Here is the class definition for the item provider described in this section.

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

Vegye figyelembe, hogy ebben az osztályban a System. Management. Automation. Provider. Cmdletproviderattribute attribútum két paramétert tartalmaz.Note that in this class definition, the System.Management.Automation.Provider.Cmdletproviderattribute attribute includes two parameters. Az első paraméter a Windows PowerShell által használt szolgáltató felhasználóbarát nevét adja meg.The first parameter specifies a user-friendly name for the provider that is used by Windows PowerShell. A második paraméter azt a Windows PowerShell-specifikus képességeket határozza meg, amelyeket a szolgáltató a parancs feldolgozásakor a Windows PowerShell futtatókörnyezet számára tesz elérhetővé.The second parameter specifies the Windows PowerShell specific capabilities that the provider exposes to the Windows PowerShell runtime during command processing. Ebben a szolgáltatóban nincsenek hozzáadott Windows PowerShell-funkciók.For this provider, there are no added Windows PowerShell specific capabilities.

Az alaposztály funkcióinak meghatározásaDefine Functionality of Base Class

A Windows PowerShell-szolgáltató megtervezésecímű témakörben leírtak szerint a System. Management. Automation. Provider. Navigationcmdletprovider osztály számos más osztályból származik, amelyek különböző szolgáltatói funkciókat biztosítanak.As described in Design Your Windows PowerShell Provider, the System.Management.Automation.Provider.Navigationcmdletprovider class derives from several other classes that provided different provider functionality. A Windows PowerShell-tartalomszolgáltató ezért általában meghatározza az adott osztályok által biztosított összes funkciót.A Windows PowerShell content provider, therefore, typically defines all of the functionality provided by those classes.

A munkamenet-specifikus inicializálási információk hozzáadásával és a szolgáltató által használt erőforrások felszabadításával kapcsolatos további információkért tekintse meg az alapszintű Windows PowerShell-szolgáltató létrehozásacímű témakört.For more information about how to implement functionality for adding session-specific initialization information and for releasing resources that are used by the provider, see Creating a Basic Windows PowerShell Provider. Azonban a legtöbb szolgáltató, beleértve az itt leírt szolgáltatót is, a Windows PowerShell által biztosított funkció alapértelmezett implementációját használhatja.However, most providers, including the provider described here, can use the default implementation of this functionality that is provided by Windows PowerShell.

Az adattár eléréséhez a szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Drivecmdletprovider alaposztály metódusait.To access the data store, the provider must implement the methods of the System.Management.Automation.Provider.Drivecmdletprovider base class. A módszerek végrehajtásával kapcsolatos további információkért lásd: Windows PowerShell meghajtó-szolgáltató létrehozása.For more information about implementing these methods, see Creating a Windows PowerShell Drive Provider.

Az adattár elemeinek (például a beolvasási, beállítási és törlési elemek) kezeléséhez a szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Itemcmdletprovider alaposztály által megadott metódusokat.To manipulate the items of a data store, such as getting, setting, and clearing items, the provider must implement the methods provided by the System.Management.Automation.Provider.Itemcmdletprovider base class. A módszerek végrehajtásával kapcsolatos további információkért lásd: Windows PowerShell-elem szolgáltatójának létrehozása.For more information about implementing these methods, see Creating a Windows PowerShell Item Provider.

A többrétegű adattárakon való munkavégzéshez a szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Containercmdletprovider alaposztály által biztosított módszereket.To work on multi-layer data stores, the provider must implement the methods provided by the System.Management.Automation.Provider.Containercmdletprovider base class. A módszerek végrehajtásával kapcsolatos további információkért lásd: Windows PowerShell-tároló szolgáltatójának létrehozása.For more information about implementing these methods, see Creating a Windows PowerShell Container Provider.

A rekurzív parancsok, a beágyazott tárolók és a relatív elérési utak támogatásához a szolgáltatónak be kell vezetnie a System. Management. Automation. Provider. Navigationcmdletprovider alaposztályt.To support recursive commands, nested containers, and relative paths, the provider must implement the System.Management.Automation.Provider.Navigationcmdletprovider base class. Emellett ez a Windows PowerShell-tartalomszolgáltató a System. Management. Automation. Provider. Icontentcmdletprovider felületet a System. Management. Automation. Provider. Navigationcmdletprovider alaposztályhoz csatolja, és ezért az adott osztály által biztosított metódusokat is végre kell hajtania.In addition, this Windows PowerShell content provider can attaches System.Management.Automation.Provider.Icontentcmdletprovider interface to the System.Management.Automation.Provider.Navigationcmdletprovider base class, and must therefore implement the methods provided by that class. További információ: a módszerek megvalósítása. lásd: navigációs Windows PowerShell-szolgáltató implementálása.For more information, see implementing those methods, see Implement a Navigation Windows PowerShell Provider.

Tartalom-olvasó implementálásaImplementing a Content Reader

Egy elem tartalmának olvasásához a szolgáltatónak egy Content Reader osztályt kell létrehoznia, amely a System. Management. Automation. Provider. Icontentreaderszármaztatja.To read content from an item, a provider must implements a content reader class that derives from System.Management.Automation.Provider.Icontentreader. A szolgáltatóhoz tartozó tartalom-olvasó lehetővé teszi az adattábla sorainak tartalmának elérését.The content reader for this provider allows access to the contents of a row in a data table. A Content Reader osztály olyan olvasási metódust határoz meg, amely lekéri az adatokat a jelzett sorból, és egy olyan listát ad vissza, amely a tartalom-olvasót áthelyező keresési módszert, a tartalom olvasóját lezáró metódust és egy eldobási metódust jelöl.The content reader class defines a Read method that retrieves the data from the indicated row and returns a list representing that data, a Seek method that moves the content reader, a Close method that closes the content reader, and a Dispose method.

public class AccessDBContentReader : IContentReader
{
    // A provider instance is required so as to get "content"
    private AccessDBProvider provider;
    private string path;
    private long currentOffset;

    internal AccessDBContentReader(string path, AccessDBProvider provider)
    {
        this.path = path;
        this.provider = provider;
    }

    /// <summary>
    /// Read the specified number of rows from the source.
    /// </summary>
    /// <param name="readCount">The number of items to 
    /// return.</param>
    /// <returns>An array of elements read.</returns>
    public IList Read(long readCount)
    {
        // Read the number of rows specified by readCount and increment
        // offset
        string tableName;
        int rowNumber;
        PathType type = provider.GetNamesFromPath(path, out tableName, out rowNumber);

        Collection<DatabaseRowInfo> rows =
            provider.GetRows(tableName);
        Collection<DataRow> results = new Collection<DataRow>();

        if (currentOffset < 0 || currentOffset >= rows.Count)
        {
            return null;
        }

        int rowsRead = 0;

        while (rowsRead < readCount && currentOffset < rows.Count)
        {
            results.Add(rows[(int)currentOffset].Data);
            rowsRead++;
            currentOffset++;
        }

        return results;
    } // Read

    /// <summary>
    /// Moves the content reader specified number of rows from the 
    /// origin
    /// </summary>
    /// <param name="offset">Number of rows to offset</param>
    /// <param name="origin">Starting row from which to offset</param>
    public void Seek(long offset, System.IO.SeekOrigin origin)
    {
        // get the number of rows in the table which will help in
        // calculating current position
        string tableName;
        int rowNumber;

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

        if (type == PathType.Invalid)
        {
            throw new ArgumentException("Path specified must represent a table or a row :" + path);
        }

        if (type == PathType.Table)
        {
            Collection<DatabaseRowInfo> rows = provider.GetRows(tableName);

            int numRows = rows.Count;

            if (offset > rows.Count)
            {
                throw new
                       ArgumentException(
                           "Offset cannot be greater than the number of rows available"
                                        );
            }

            if (origin == System.IO.SeekOrigin.Begin)
            {
                // starting from Beginning with an index 0, the current offset
                // has to be advanced to offset - 1
                currentOffset = offset - 1;
            }
            else if (origin == System.IO.SeekOrigin.End)
            {
                // starting from the end which is numRows - 1, the current
                // offset is so much less than numRows - 1
                currentOffset = numRows - 1 - offset;
            }
            else
            {
                // calculate from the previous value of current offset
                // advancing forward always
                currentOffset += offset;
            }
        } // if (type...
        else
        {
            // for row, the offset will always be set to 0
            currentOffset = 0;
        }

    } // Seek

    /// <summary>
    /// Closes the content reader, so all members are reset
    /// </summary>
    public void Close()
    {
        Dispose();
    } // Close

    /// <summary>
    /// Dispose any resources being used
    /// </summary>
    public void Dispose()
    {
        Seek(0, System.IO.SeekOrigin.Begin);
        
        GC.SuppressFinalize(this);
    } // Dispose
} // AccessDBContentReader

Tartalom-író implementálásaImplementing a Content Writer

Ha tartalmat szeretne írni egy elembe, a szolgáltatónak egy Content Writer osztályt kell létrehoznia a System. Management. Automation. Provider. Icontentwriterszármaztatva.To write content to an item, a provider must implement a content writer class derives from System.Management.Automation.Provider.Icontentwriter. A tartalmi író osztály olyan írási metódust határoz meg, amely a megadott sor tartalmát írja le, egy olyan keresési metódust, amely áthelyezi a tartalom-írót, egy bezárási metódust , amely lezárja a tartalom-írótThe content writer class defines a Write method that writes the specified row content, a Seek method that moves the content writer, a Close method that closes the content writer, and a Dispose method.

public class AccessDBContentWriter : IContentWriter
{
    // A provider instance is required so as to get "content"
    private AccessDBProvider provider;
    private string path;
    private long currentOffset;

    internal AccessDBContentWriter(string path, AccessDBProvider provider)
    {
        this.path = path;
        this.provider = provider;
    }

    /// <summary>
    /// Write the specified row contents in the source
    /// </summary>
    /// <param name="content"> The contents to be written to the source.
    /// </param>
    /// <returns>An array of elements which were successfully written to 
    /// the source</returns>
    /// 
    public IList Write(IList content)
    {
        if (content == null)
        {
            return null;
        }

        // Get the total number of rows currently available it will 
        // determine how much to overwrite and how much to append at
        // the end
        string tableName;
        int rowNumber;
        PathType type = provider.GetNamesFromPath(path, out tableName, out rowNumber);

        if (type == PathType.Table)
        {
            OdbcDataAdapter da = provider.GetAdapterForTable(tableName);
            if (da == null)
            {
                return null;
            }

            DataSet ds = provider.GetDataSetForTable(da, tableName);
            DataTable table = provider.GetDataTable(ds, tableName);

            string[] colValues = (content[0] as string).Split(',');

            // set the specified row
            DataRow row = table.NewRow();

            for (int i = 0; i < colValues.Length; i++)
            {
                if (!String.IsNullOrEmpty(colValues[i]))
                {
                    row[i] = colValues[i];
                }
            }

            //table.Rows.InsertAt(row, rowNumber);
            // Update the table
            table.Rows.Add(row);
            da.Update(ds, tableName);
            
        }
        else 
        {
            throw new InvalidOperationException("Operation not supported. Content can be added only for tables");
        }

        return null;
    } // Write

    /// <summary>
    /// Moves the content reader specified number of rows from the 
    /// origin
    /// </summary>
    /// <param name="offset">Number of rows to offset</param>
    /// <param name="origin">Starting row from which to offset</param>
    public void Seek(long offset, System.IO.SeekOrigin origin)
    {
        // get the number of rows in the table which will help in
        // calculating current position
        string tableName;
        int rowNumber;

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

        if (type == PathType.Invalid)
        {
            throw new ArgumentException("Path specified should represent either a table or a row : " + path);
        }

        Collection<DatabaseRowInfo> rows =
               provider.GetRows(tableName);

        int numRows = rows.Count;

        if (offset > rows.Count)
        {
            throw new
                   ArgumentException(
                       "Offset cannot be greater than the number of rows available"
                                           );
        }

        if (origin == System.IO.SeekOrigin.Begin)
        {
            // starting from Beginning with an index 0, the current offset
            // has to be advanced to offset - 1
            currentOffset = offset - 1;
        }
        else if (origin == System.IO.SeekOrigin.End)
        {
            // starting from the end which is numRows - 1, the current
            // offset is so much less than numRows - 1
            currentOffset = numRows - 1 - offset;
        }
        else
        {
            // calculate from the previous value of current offset
            // advancing forward always
            currentOffset += offset;
        }

    } // Seek

    /// <summary>
    /// Closes the content reader, so all members are reset
    /// </summary>
    public void Close()
    {
        Dispose();
    } // Close

    /// <summary>
    /// Dispose any resources being used
    /// </summary>
    public void Dispose()
    {
        Seek(0, System.IO.SeekOrigin.Begin);

        GC.SuppressFinalize(this);
    } // Dispose
} // AccessDBContentWriter

A tartalom olvasójának beolvasásaRetrieving the Content Reader

Egy elem tartalmának beolvasásához a szolgáltatónak a (z ) System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentreader * alkalmazást kell megvalósítania a parancsmag támogatásához Get-Content .To get content from an item, the provider must implement the System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentreader* to support the Get-Content cmdlet. Ez a metódus visszaadja a tartalom-olvasót a megadott elérési úton található elemmel.This method returns the content reader for the item located at the specified path. Ezután megnyithatja az olvasó objektumot, hogy beolvassa a tartalmat.The reader object can then be opened to read the content.

Ehhez a szolgáltatóhoz a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentreader * implementálja ezt a metódust.Here is the implementation of System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentreader* for this method for this provider.

public IContentReader GetContentReader(string path)
{
    string tableName;
    int rowNumber;

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

    if (type == PathType.Invalid)
    {
        ThrowTerminatingInvalidPathException(path);
    }
    else if (type == PathType.Row)
    {
        throw new InvalidOperationException("contents can be obtained only for tables");
    }

    return new AccessDBContentReader(path, this);
} // GetContentReader
public IContentReader GetContentReader(string path)
{
    string tableName;
    int rowNumber;

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

    if (type == PathType.Invalid)
    {
        ThrowTerminatingInvalidPathException(path);
    }
    else if (type == PathType.Row)
    {
        throw new InvalidOperationException("contents can be obtained only for tables");
    }

    return new AccessDBContentReader(path, this);
} // GetContentReader

A GetContentReader megvalósításának tudnivalóiThings to Remember About Implementing GetContentReader

A következő feltételek vonatkozhatnak a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentreader *megvalósítására:The following conditions may apply to an implementation of System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentreader*:

Dinamikus paraméterek csatolása a Get-Content parancsmaghozAttaching Dynamic Parameters to the Get-Content Cmdlet

A Get-Content parancsmaghoz szükség lehet a futásidőben dinamikusan meghatározott további paraméterekre.The Get-Content cmdlet might require additional parameters that are specified dynamically at runtime. A dinamikus paraméterek megadásához a Windows PowerShell-szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentreaderdynamicparameters * metódust.To provide these dynamic parameters, the Windows PowerShell content provider must implement the System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentreaderdynamicparameters* method. Ezzel a módszerrel lekéri a megadott elérési úton található elem dinamikus paramétereit, és egy olyan objektumot ad vissza, amely a parancsmag osztályához vagy a System. Management. Automation. Runtimedefinedparameterdictionary objektumhoz hasonló tulajdonságokat és mezőket tartalmaz.This method retrieves dynamic parameters for the item at the indicated path and returns an object that has properties and fields with parsing attributes similar to a cmdlet class or a System.Management.Automation.Runtimedefinedparameterdictionary object. A Windows PowerShell futtatókörnyezet a visszaadott objektum használatával adja hozzá a paramétereket a parancsmaghoz.The Windows PowerShell runtime uses the returned object to add the parameters to the cmdlet.

Ez a Windows PowerShell-tároló szolgáltatója nem valósítja meg ezt a metódust.This Windows PowerShell container provider does not implement this method. Az alábbi kód azonban a metódus alapértelmezett implementációja.However, the following code is the default implementation of this method.

public object GetContentReaderDynamicParameters(string path)
{
    return null;
}
public object GetContentReaderDynamicParameters(string path)
{
    return null;
}

A tartalom-író beolvasásaRetrieving the Content Writer

Ha tartalmat szeretne írni egy elembe, a szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentwriter * -t a Set-Content és a Add-Content parancsmagok támogatásához.To write content to an item, the provider must implement the System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentwriter* to support the Set-Content and Add-Content cmdlets. Ez a metódus a megadott elérési úton található tételhez tartozó tartalom-írót adja vissza.This method returns the content writer for the item located at the specified path.

A következő a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentwriter * implementációja ehhez a metódushoz.Here is the implementation of System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentwriter* for this method.

public IContentWriter GetContentWriter(string path)
{
    string tableName;
    int rowNumber;

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

    if (type == PathType.Invalid)
    {
        ThrowTerminatingInvalidPathException(path);
    }
    else if (type == PathType.Row)
    {
        throw new InvalidOperationException("contents can be added only to tables");
    }

    return new AccessDBContentWriter(path, this);
}
public IContentWriter GetContentWriter(string path)
{
    string tableName;
    int rowNumber;

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

    if (type == PathType.Invalid)
    {
        ThrowTerminatingInvalidPathException(path);
    }
    else if (type == PathType.Row)
    {
        throw new InvalidOperationException("contents can be added only to tables");
    }

    return new AccessDBContentWriter(path, this);
}

A GetContentWriter megvalósításának tudnivalóiThings to Remember About Implementing GetContentWriter

A következő feltételek vonatkozhatnak a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentwriter *megvalósítására:The following conditions may apply to your implementation of System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentwriter*:

Dinamikus paraméterek csatolása a hozzáadási tartalomhoz és a set-Content parancsmagokhozAttaching Dynamic Parameters to the Add-Content and Set-Content Cmdlets

A Add-Content és a Set-Content parancsmagokhoz további dinamikus paraméterek is szükségesek, amelyek egy futtatókörnyezetet adnak hozzá.The Add-Content and Set-Content cmdlets might require additional dynamic parameters that are added a runtime. A dinamikus paraméterek megadásához a Windows PowerShell-szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Icontentcmdletprovider. Getcontentwriterdynamicparameters * metódust a paraméterek kezelésére.To provide these dynamic parameters, the Windows PowerShell content provider must implement the System.Management.Automation.Provider.Icontentcmdletprovider.Getcontentwriterdynamicparameters* method to handle these parameters. Ezzel a módszerrel lekéri a megadott elérési úton található elem dinamikus paramétereit, és egy olyan objektumot ad vissza, amely a parancsmag osztályához vagy a System. Management. Automation. Runtimedefinedparameterdictionary objektumhoz hasonló tulajdonságokat és mezőket tartalmaz.This method retrieves dynamic parameters for the item at the indicated path and returns an object that has properties and fields with parsing attributes similar to a cmdlet class or a System.Management.Automation.Runtimedefinedparameterdictionary object. A Windows PowerShell futtatókörnyezet a visszaadott objektum használatával adja hozzá a paramétereket a parancsmagokhoz.The Windows PowerShell runtime uses the returned object to add the parameters to the cmdlets.

Ez a Windows PowerShell-tároló szolgáltatója nem valósítja meg ezt a metódust.This Windows PowerShell container provider does not implement this method. Az alábbi kód azonban a metódus alapértelmezett implementációja.However, the following code is the default implementation of this method.

public object GetContentWriterDynamicParameters(string path)
{
    return null;
}

Tartalom törléseClearing Content

A szolgáltató implementálja a System. Management. Automation. Provider. Icontentcmdletprovider. Clearcontent * metódust a parancsmag támogatásához Clear-Content .Your content provider implements the System.Management.Automation.Provider.Icontentcmdletprovider.Clearcontent* method in support of the Clear-Content cmdlet. Ez a metódus eltávolítja az elem tartalmát a megadott elérési úton, de érintetlenül hagyja az elemeket.This method removes the contents of the item at the specified path, but leaves the item intact.

Itt látható a System. Management. Automation. Provider. Icontentcmdletprovider. Clearcontent * metódus implementálása ehhez a szolgáltatóhoz.Here is the implementation of the System.Management.Automation.Provider.Icontentcmdletprovider.Clearcontent* method for this provider.

public void ClearContent(string path)
{
    string tableName;
    int rowNumber;

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

    if (type != PathType.Table)
    {
        WriteError(new ErrorRecord(
            new InvalidOperationException("Operation not supported. Content can be cleared only for table"),
                "NotValidRow", ErrorCategory.InvalidArgument,
                    path));
        return;
    }

    OdbcDataAdapter da = GetAdapterForTable(tableName);

    if (da == null)
    {
        return;
    }

    DataSet ds = GetDataSetForTable(da, tableName);
    DataTable table = GetDataTable(ds, tableName);

    // Clear contents at the specified location
    for (int i = 0; i < table.Rows.Count; i++)
    {
        table.Rows[i].Delete();
    }

    if (ShouldProcess(path, "ClearContent"))
    {
        da.Update(ds, tableName);
    }

} // ClearContent

A ClearContent megvalósításának tudnivalóiThings to Remember About Implementing ClearContent

A következő feltételek vonatkozhatnak a System. Management. Automation. Provider. Icontentcmdletprovider. Clearcontent *megvalósítására:The following conditions may apply to an implementation of System.Management.Automation.Provider.Icontentcmdletprovider.Clearcontent*:

Dinamikus paraméterek csatolása a Clear-Content parancsmaghozAttaching Dynamic Parameters to the Clear-Content Cmdlet

A Clear-Content parancsmaghoz további dinamikus paraméterek is szükségesek, amelyeket a rendszer futásidőben ad hozzá.The Clear-Content cmdlet might require additional dynamic parameters that are added at runtime. A dinamikus paraméterek megadásához a Windows PowerShell-szolgáltatónak meg kell valósítania a System. Management. Automation. Provider. Icontentcmdletprovider. Clearcontentdynamicparameters * metódust a paraméterek kezelésére.To provide these dynamic parameters, the Windows PowerShell content provider must implement the System.Management.Automation.Provider.Icontentcmdletprovider.Clearcontentdynamicparameters* method to handle these parameters. Ez a metódus lekéri a megadott elérési úton található tétel paramétereit.This method retrieves the parameters for the item at the indicated path. Ezzel a módszerrel lekéri a megadott elérési úton található elem dinamikus paramétereit, és egy olyan objektumot ad vissza, amely a parancsmag osztályához vagy a System. Management. Automation. Runtimedefinedparameterdictionary objektumhoz hasonló tulajdonságokat és mezőket tartalmaz.This method retrieves dynamic parameters for the item at the indicated path and returns an object that has properties and fields with parsing attributes similar to a cmdlet class or a System.Management.Automation.Runtimedefinedparameterdictionary object. A Windows PowerShell futtatókörnyezet a visszaadott objektum használatával adja hozzá a paramétereket a parancsmaghoz.The Windows PowerShell runtime uses the returned object to add the parameters to the cmdlet.

Ez a Windows PowerShell-tároló szolgáltatója nem valósítja meg ezt a metódust.This Windows PowerShell container provider does not implement this method. Az alábbi kód azonban a metódus alapértelmezett implementációja.However, the following code is the default implementation of this method.

public object ClearContentDynamicParameters(string path)
{
    return null;
}
public object ClearContentDynamicParameters(string path)
{
    return null;
}

MintakódCode Sample

A teljes mintakód: AccessDbProviderSample06- kód minta.For complete sample code, see AccessDbProviderSample06 Code Sample.

Objektumtípusok és formázások definiálásaDefining Object Types and Formatting

Szolgáltató írásakor szükség lehet tagok hozzáadására meglévő objektumokhoz vagy új objektumok definiálásához.When writing a provider, it may be necessary to add members to existing objects or define new objects. Ha ez történik, létre kell hoznia egy olyan típusú fájlt, amelyet a Windows PowerShell az objektum tagjainak azonosítására, valamint egy, az objektum megjelenítését meghatározó formátumú fájl létrehozására használhat.When this is done, you must create a Types file that Windows PowerShell can use to identify the members of the object and a Format file that defines how the object is displayed. További információ: az Objektumtípusok és a formázás kiterjesztése.For more information, see Extending Object Types and Formatting.

A Windows PowerShell-szolgáltató felépítéseBuilding the Windows PowerShell Provider

Lásd: parancsmagok, szolgáltatók és gazda alkalmazások regisztrálása.See How to Register Cmdlets, Providers, and Host Applications.

A Windows PowerShell-szolgáltató teszteléseTesting the Windows PowerShell Provider

Ha a Windows PowerShell-szolgáltató regisztrálva van a Windows PowerShellben, tesztelheti azt a parancssorban található támogatott parancsmagok futtatásával.When your Windows PowerShell provider has been registered with Windows PowerShell, you can test it by running the supported cmdlets on the command line. Tesztelje például a minta tartalomszolgáltató szolgáltatót.For example, test the sample content provider.

A Get-Content parancsmaggal kérheti le a megadott elemek tartalmát az adatbázis táblában a paraméterben megadott elérési úton Path .Use the Get-Content cmdlet to retrieve the contents of specified item in the database table at the path specified by the Path parameter. A ReadCount paraméter határozza meg, hogy hány elemnek kell olvasnia a megadott tartalom-olvasót (alapértelmezés szerint 1).The ReadCount parameter specifies the number of items for the defined content reader to read (default 1). A következő paranccsal a parancsmag két sort (elemet) kér le a táblából, és megjeleníti azok tartalmát.With the following command entry, the cmdlet retrieves two rows (items) from the table and displays their contents. Vegye figyelembe, hogy a következő példában a kimenet kitalált hozzáférési adatbázist használ.Note that the following example output uses a fictitious Access database.

Get-Content -Path mydb:\Customers -ReadCount 2
ID        : 1
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
ID        : 2
FirstName : Eva
LastName  : Corets
Email     : evacorets@cohowinery.com
Title     : Sales Representative
Company   : Coho Winery
WorkPhone : (360) 555-0100
Address   : 8910 Main Street
City      : Cabmerlot
State     : WA
Zip       : 98089
Country   : USA

Lásd még:See Also

Windows PowerShell-szolgáltatók létrehozásaCreating Windows PowerShell providers

A Windows PowerShell-szolgáltató megtervezéseDesign Your Windows PowerShell provider

Objektumok típusának és formázásának kiterjesztéseExtending Object Types and Formatting

Navigációs Windows PowerShell-szolgáltató implementálásaImplement a Navigation Windows PowerShell provider

Parancsmagok, szolgáltatók és gazdagép-alkalmazások regisztrálásaHow to Register Cmdlets, Providers, and Host Applications

Windows PowerShell SDKWindows PowerShell SDK

Windows PowerShell – programozói útmutatóWindows PowerShell Programmer's Guide