en-US/about_OData_Format.help.txt

TOPIC
    about_OData_Query
 
OVERVIEW
    The OData PowerShell provider supports custom formatting of entities.
 
DETAILS
    OData entities can include an optional category element. According to the
    specification, the term value of this element indicates the entity type of
    the entry. For example, entries returned from the NuGet package feed include
    this category term:
 
    <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
    <feed xml:base="http://packages.nuget.org/v1/FeedService.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
      ...
      <entry>
        <id>http://packages.nuget.org/v1/FeedService.svc/Packages(Id='StudioShell',Version='1.2')</id>
        ...
        <category term="NuGetGallery.V1FeedPackage" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
         
    When this category term is present, the OData PowerShell provider uses it
    as the typename of the objects returned from the feed. In the case above,
    the entry is returned to the pipe as a generic object with a typename of
    "NuGetGallery.V1FeedPackage":
 
    > get-item nuget:/packages -filter "Id eq 'StudioShell'" | get-member
 
       TypeName: NuGetGallery.V1FeedPackage
 
    Name MemberType Definition
    ---- ---------- ----------
    Equals Method bool Equals(System.Object value)
    GetHashCode Method int GetHashCode()
    GetType Method type GetType()
    ToString Method string ToString()
    Authors NoteProperty System.String ...
    Categories NoteProperty System.String ...
    Copyright NoteProperty System.String ...
    ...
 
    This allows you to include custom formats for different OData feeds. For
    instance, you can create a custom format file for the NuGet OData entities:
 
    <?xml version="1.0" encoding="utf-8" ?>
    <Configuration>
        <Controls>
            <Control>
                <Name>NuGet-GroupingFormat</Name>
                        <CustomControl>
                            <CustomEntries>
                                <CustomEntry>
                                    <CustomItem>
                                        <Frame>
                                            <LeftIndent>4</LeftIndent>
                                            <CustomItem>
                                                <Text>Container: </Text>
                                                <ExpressionBinding>
                                                    <PropertyName>PSParentPath</PropertyName>
                                                </ExpressionBinding>
                                              <NewLine/>
                                            </CustomItem>
                                        </Frame>
                                    </CustomItem>
                                </CustomEntry>
                            </CustomEntries>
                </CustomControl>
            </Control>
        </Controls>
 
        <ViewDefinitions>
            <View>
                <Name>NuGet-Entity</Name>
                <ViewSelectedBy>
                    <TypeName>NuGetGallery.V1FeedPackage</TypeName>
                </ViewSelectedBy>
                <GroupBy>
                    <PropertyName>PSParentPath</PropertyName>
                    <CustomControlName>NuGet-GroupingFormat</CustomControlName>
                </GroupBy>
                <TableControl>
                    <TableHeaders>
                      <TableColumnHeader>
                            <Label>Name</Label>
                            <Alignment>Left</Alignment>
                        </TableColumnHeader>
                      <TableColumnHeader>
                            <Label>Version</Label>
                            <Alignment>Left</Alignment>
                        </TableColumnHeader>
                      <TableColumnHeader>
                        <Label>Downloads</Label>
                        <Alignment>Right</Alignment>
                      </TableColumnHeader>
                    </TableHeaders>
                    <TableRowEntries>
                      <TableRowEntry>
                            <TableColumnItems>
                              <TableColumnItem>
                                <PropertyName>Id</PropertyName>
                              </TableColumnItem>
                              <TableColumnItem>
                                    <PropertyName>Version</PropertyName>
                                </TableColumnItem>
                              <TableColumnItem>
                                    <PropertyName>DownloadCount</PropertyName>
                                </TableColumnItem>
                            </TableColumnItems>
                        </TableRowEntry>
                    </TableRowEntries>
                </TableControl>
            </View>
        </ViewDefinitions>
    </Configuration>
 
    By importing this format file into your session along with the OData
    provider, you can customize the output of the NuGet feed:
 
    > import-module OData
    > new-psdrive -psp odata -name n -root 'http://packages.nuget.org';
 
    Name Used (GB) Free (GB) Provider ...
    ---- --------- --------- -------- ...
    n OData ...
 
    > get-item n:\packages -filter "Id eq 'StudioShell'"
     
    PSPath : OData::http:\\packages.nuget.org\packages
    PSParentPath : OData::http:\\packages.nuget.org
    PSChildName : packages
    PSDrive : nf
    PSProvider : OData
    PSIsContainer : True
    Id : StudioShell
    Version : 1.2
    ...
 
    > Update-FormatData .\NuGet.Formats.ps1xml
    > get-item n:\packages -filter "Id eq 'StudioShell'"
 
        Container: OData::http:\\packages.nuget.org
 
    Name Version Downloads
    ---- ------- ---------
    StudioShell 1.2 51
 
     
SEE ALSO
    http://o.codeplex.com
    http://www.odata.org
    about_OData
    about_Format