Generare cmdlet di PowerShell in base a un endpoint ODataGenerate PowerShell Cmdlets based on OData Endpoint

Generare cmdlet di Windows PowerShell in base a un endpoint ODataGenerate Windows PowerShell cmdlets based on an OData endpoint

Export-ODataEndpointProxy è un cmdlet che genera un set di cmdlet di Windows PowerShell basati sulle funzionalità esposte da un determinato endpoint OData.Export-ODataEndpointProxy is a cmdlet that generates a set of Windows PowerShell cmdlets based on the functionality exposed by a given OData endpoint.

L'esempio seguente mostra come usare questo nuovo cmdlet:The following example shows how to use this new cmdlet:

# Caso d'uso di base di Export-ODataEndpointProxy# Basic use case of Export-ODataEndpointProxy

Export-ODataEndpointProxy -Uri 'http://services.odata.org/v3/(S(snyobsk1hhutkb2yulwldgf1))/odata/odata.svc' -OutputModule C:\Users\user\Generated.psd1

ipmo 'C:\Users\user\Generated.psd1'
# Cmdlets are created based on the following heuristics
# New-<EntityType> -<Key> [-<Other Attributes>]
#
# Get-<EntityType> [-<Key> -Top –Skip –Filter -OrderBy]
# # If there is a complex key, the keys will actually be -<Key1> -<Key2>…
# # Note this rule applies to any other instances of the key
#
# Set-<EntityType> -<Key> [-<Other Attributes>]
#
# Remove-<EntityType> -<Key>
#
# Invoke-<EntityType><Action> [-<Key> -<Other Parameters>]
#
#
# Cmdlets from associations (Note: Get and Remove get additional parameter sets)
# Get-<EntityType> -<AssociatedEntity>
# New-<EntityType> -<AssociatedEntity> -<Key>
# Remove-<EntityType> -<AssociatedEntity> -<Key>
#
#
# Note: Every cmdlet has the –ConnectionURI parameter for explicitly setting the URI of the endpoint. This normally uses the same address that you gave the Export-ODataEndpointProxy cmdlet, but can be overridden in this fashion for the sake of similar endpoints.
#

Parti dei principali casi d'uso per questa funzionalità sono ancora in fase di sviluppo, ad esempio:There are still parts of key use cases in development for this functionality, including, but not limited to:

  • AssociazioniAssociations
  • Passaggio di flussiPassing streams

Generare cmdlet di Windows PowerShell in base a un endpoint OData con ODataUtilsGenerate Windows PowerShell cmdlets based on an OData endpoint with ODataUtils

Il modulo ODataUtils consente la generazione di cmdlet di Windows PowerShell da endpoint REST che supportano OData.The ODataUtils module allows generation of Windows PowerShell cmdlets from REST endpoints that support OData. I seguenti miglioramenti incrementali sono disponibili nel modulo di Windows PowerShell Microsoft.PowerShell.ODataUtils.The following incremental enhancements are in the Microsoft.PowerShell.ODataUtils Windows PowerShell module.

  • Informazioni aggiuntive del canale dall'endpoint sul lato server al lato client.Channel additional information from server-side endpoint to client side.
  • Supporto del paging sul lato clientClient-side paging support
  • Filtro sul lato server tramite il parametro -SelectServer-side filtering by using the -Select parameter
  • Supporto delle intestazioni di richieste WebSupport for web request headers

I cmdlet proxy generati dal cmdlet Export-ODataEndPointProxy forniscono informazioni aggiuntive (non indicate nei $metadata usati durante la generazione di proxy sul lato client) dall'endpoint OData sul lato server sul flusso di informazioni (una nuova funzionalità di Windows PowerShell 5.0).The proxy cmdlets generated by the Export-ODataEndPointProxy cmdlet provide additional information (not mentioned in the $metadata used during the client-side proxy generation) from the server side OData endpoint on the Information stream (a new Windows PowerShell 5.0 feature). Di seguito è riportato un esempio di come ottenere tali informazioni.Here is an example of how to get that information.

Import-Module Microsoft.PowerShell.ODataUtils -Force
$generatedProxyModuleDir = Join-Path -Path $env:SystemDrive -ChildPath 'ODataDemoProxy'
$uri = "http://services.odata.org/V3/(S(fhleiief23wrm5a5nhf542q5))/OData/OData.svc/"
Export-ODataEndpointProxy -Uri $uri -OutputModule $generatedProxyModuleDir -Force -AllowUnSecureConnection -Verbose -AllowClobber
Import-Module $generatedProxyModuleDir -Force

# In the below command, we are retrieving top 1 product.
# By specifying -IncludeTotalResponseCount parameter,
# we are getting the total count of all the Product records
# available on the server side. This information
# is surfaced on the client side through the Information stream.
$product = Get-Product -Top 1 -AllowUnsecureConnection -AllowAdditionalData -IncludeTotalResponseCount -InformationVariable infoStream
# The Information stream contains the additional
# information sent from the server side.
$additionalInfo = $infoStream.GetEnumerator() | % MessageData
# 'Odata.Count' indicates the total product records
# available on the server side Odata endpoint.
$additionalInfo['odata.count']

È possibile ottenere i record dal lato server in batch usando il supporto del paging sul lato client.You can get the records from the server side in batches by using client-side paging support. Ciò è utile quando è necessario ottenere una grande quantità di dati dal server tramite la rete.This is useful when you must get a large amount of data from the server over the network.

$skipCount = 0
$batchSize = 3
# Client-Side Paging Support: The records from the server side
# are retrieved in batches of $batchSize
while($skipCount -le $additionalInfo['odata.count'])
{
Get-Product -AllowUnsecureConnection -AllowAdditionalData -Top $batchSize -Skip $skipCount
$skipCount += $batchSize
}

I cmdlet proxy generato supportano il parametro -Select che è possibile usare come filtro per ricevere solo le proprietà dei record necessarie per il client.The generated proxy cmdlets support the –Select parameter which you can use as a filter to receive only the record properties that the client needs. In questo modo si riduce la quantità di dati trasferiti in rete, perché il filtro viene applicato sul lato server.This reduces the amount of data that is transferred over the network, because the filtering occurs on the server side.

# In the below example only the Name property of the
# Product record is retrieved from the server side.
Get-Product -Top 2 -AllowUnsecureConnection -AllowAdditionalData -Select Name

Il cmdlet Export-ODataEndpointProxy e i cmdlet proxy generati da questo cmdlet supportano ora il parametro Headers (specificare i valori come tabella hash), che è possibile usare per canalizzare qualsiasi informazione aggiuntiva prevista dall'endpoint OData sul lato server.The Export-ODataEndpointProxy cmdlet, and the proxy cmdlets generated by it, now support the Headers parameter (supply values as a hash table), which you can use to channel any additional information that is expected by the server-side OData endpoint. Nell'esempio seguente, è possibile canalizzare una chiave della sottoscrizione tramite Headers per i servizi che prevedono una chiave della sottoscrizione per l'autenticazione.In the following example, you can channel a Subscription key through Headers for services that are expecting a Subscription key for authentication.

# As an example, in the below command 'XXXX' is the authentication used by the
# Export-ODataEndpointProxy cmdlet to interact with the server-side
# OData endpoint accessed through $endPointUri.

Export-ODataEndpointProxy -Uri $endPointUri -OutputModule $generatedProxyModuleDir -Force -AllowUnSecureConnection -Verbose -Headers @{'subscription-key'='XXXX'}