

¡Se Herramientas de AWS para PowerShell ha lanzado la versión 5 (V5) del\$1

Para obtener información sobre los cambios más importantes y la migración de sus aplicaciones, consulte el tema [sobre migración](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html).

 [https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Canalización, salida e iteración en el Herramientas de AWS para PowerShell
<a name="pstools-pipelines"></a>

## Canalización
<a name="pstools-pipelining"></a>

PowerShell anima a los usuarios a conectar los cmdlets a [canalizaciones](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines) que dirijan la salida de un cmdlet a la entrada del siguiente. En el siguiente ejemplo, se muestra este comportamiento cuando se utiliza el. Herramientas de AWS para PowerShell El comando obtiene y, a continuación, detiene todas las EC2 instancias de Amazon en la región predeterminada actual.

```
PS > Get-EC2Instance | Stop-EC2Instance
```

## Salida del cmdlet
<a name="pstools-output"></a>

Para facilitar la canalización, es AWS SDK para .NET posible que algunos datos de las respuestas del se descarten de forma predeterminada. El resultado de los Herramientas de AWS para PowerShell cmdlets no se ha modificado para incluir las instancias de respuesta y resultado del servicio como `Note` propiedades del objeto de colección emitido. En cambio, en el caso de las llamadas que emiten una única colección como salida, la colección ahora se enumera en la canalización. PowerShell Esto significa que los datos de respuesta y resultados del SDK no pueden existir en la canalización porque no hay ningún objeto de recopilación al que puedan adjuntarse.

Aunque es probable que la mayoría de los usuarios no necesiten estos datos, pueden resultar útiles para fines de diagnóstico, ya que permiten ver exactamente lo que se envió y lo que se recibió de las llamadas de AWS servicio subyacentes que realizó el cmdlet. Los cmdlets pueden usar el `-Select *` parámetro y el argumento para devolver la respuesta completa del servicio.

Para ilustrar cómo se pueden devolver todos los datos de una respuesta, considere los siguientes ejemplos.

El primer ejemplo simplemente devuelve una lista de buckets de Amazon S3. Este es el comportamiento predeterminado.

```
PS > Get-S3Bucket

CreationDate           BucketName
------------           ----------
9/22/2023 10:54:35 PM  amzn-s3-demo-bucket1
9/22/2023 11:04:37 AM  amzn-s3-demo-bucket2
9/22/2023 12:54:34 PM  amzn-s3-demo-bucket3
```

El segundo ejemplo devuelve un objeto de AWS SDK para .NET respuesta. Como `-Select *` se especificó, el resultado incluye toda la respuesta de la API, que contiene el conjunto de cubos de la `Buckets` propiedad. En este ejemplo, el `Format-List` cmdlet no es estrictamente necesario, pero está presente para garantizar que se muestren todas las propiedades.

```
PS > Get-S3Bucket -Select * | Format-List

LoggedAt          : 10/1/2023 9:45:52 AM
Buckets           : {amzn-s3-demo-bucket1, amzn-s3-demo-bucket2,
                    amzn-s3-demo-bucket3}
Owner             : Amazon.S3.Model.Owner
ContinuationToken :
ResponseMetadata  : Amazon.Runtime.ResponseMetadata
ContentLength     : 0
HttpStatusCode    : OK
```

## Iteración a través de datos paginados
<a name="pstools-iteration"></a>

En las siguientes secciones se describen los distintos tipos de iteración posibles.

### Iteración automática
<a name="pstools-iteration-auto"></a>

En el caso de los servicios APIs que imponen un número máximo predeterminado de objetos devueltos para una llamada determinada o que admiten conjuntos de resultados paginables, la mayoría de los cmdlets implementan la iteración automática, lo que habilita el comportamiento predeterminado de "». page-to-completion En este escenario, un cmdlet realiza tantas llamadas como sea necesario en su nombre para devolver el conjunto de datos completo a la canalización.

En el siguiente ejemplo, que usa el [Get-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/index.html?page=Get-S3Object.html&tocid=Get-S3Object)cmdlet, la `$result` variable contiene `S3Object` instancias para cada clave de un depósito llamado`amzn-s3-demo-bucket1`, lo que puede ser un conjunto de datos muy grande.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1
```

En el siguiente ejemplo, se reduce el número de resultados de cada página durante la iteración automática del valor predeterminado de 1000 a 500. El ejemplo realiza el doble de llamadas de iteración automática porque solo se devuelve la mitad de los resultados por cada llamada.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500
```

### Deshabilita la iteración automática
<a name="pstools-iteration-disable-auto"></a>

Si desea que las Herramientas PowerShell devuelvan solo la primera página de datos, puede añadir el `-NoAutoIteration` parámetro para evitar que se devuelvan páginas de datos adicionales.

En el siguiente ejemplo, se utilizan los `-MaxKey` parámetros `-NoAutoIteration` y para limitar el número de `S3Object` instancias devueltas a no más de las 500 primeras que se encuentren en el depósito.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration
```

Para determinar si había más datos disponibles pero no se devolvieron, usa el `-Select *` parámetro y el argumento y comprueba si hay un valor en la siguiente propiedad del token.

En el ejemplo siguiente se muestra `$true` si hay más de 500 objetos en el depósito o si `$false` no.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration -Select *
PS > $null -eq $result.NextMarker
```

**nota**  
Los nombres de la siguiente propiedad de respuesta del token y del parámetro del cmdlet varían de un cmdlet a otro. Para obtener más información, consulte la documentación de ayuda de cada cmdlet.

### Iteración manual
<a name="pstools-iteration-manual"></a>

En el siguiente ejemplo, se devuelven todos los objetos S3 de un bucket mediante un bucle [do](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_do), que evalúa la condición después de cada iteración. El `do` bucle realiza iteraciones hasta que se `Get-S3Object` establece `$result.NextMarker` en`$null`, lo que indica que no quedan más datos paginados. La salida del bucle se asigna a la `$s3Objects` variable.

```
$s3Objects = do
{
    $splatParams = @{
        BucketName = 'amzn-s3-demo-bucket1'
        MaxKey = 500 
        Marker = $result.NextMarker 
        NoAutoIteration = $true
        Select = '*'
    }
    $result = Get-S3Object @splatParams
    
    $result.S3Objects
}
while ($null -ne $result.NextMarker)
```

En este ejemplo, se utilizan PowerShell [salpicaduras](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting) para evitar que una línea de código larga se produzca al declarar los parámetros y argumentos en línea.