

Version 5 (V5) von AWS -Tools für PowerShell wurde veröffentlicht\$1

Informationen zu wichtigen Änderungen und zur Migration Ihrer Anwendungen finden Sie im [Migrationsthema](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)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Pipelining, Ausgabe und Iteration in der AWS -Tools für PowerShell
<a name="pstools-pipelines"></a>

## Pipelining
<a name="pstools-pipelining"></a>

PowerShell ermutigt Benutzer, Cmdlets mit [Pipelines](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines) zu verbinden, die die Ausgabe eines Cmdlets in die Eingabe des nächsten weiterleiten. Das folgende Beispiel zeigt dieses Verhalten bei der Verwendung von. AWS -Tools für PowerShell Der Befehl ruft alle EC2 Amazon-Instances in der aktuellen Standardregion ab und stoppt sie dann.

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

## Cmdlet-Ausgabe
<a name="pstools-output"></a>

Um das Pipelining besser zu unterstützen, werden einige Daten aus den Antworten von AWS SDK für .NET möglicherweise standardmäßig verworfen. Die Ausgabe von AWS -Tools für PowerShell Cmdlets wird nicht so umgestaltet, dass sie die Dienstantwort und die Ergebnisinstanzen als `Note` Eigenschaften für das ausgegebene Auflistungsobjekt enthält. Stattdessen wird bei Aufrufen, die eine einzelne Sammlung als Ausgabe ausgeben, die Sammlung nun in der Pipeline aufgezählt. PowerShell Das bedeutet, dass die SDK-Antwort und die Ergebnisdaten nicht in der Pipeline existieren können, da es kein enthaltendes Sammlungsobjekt gibt, an das sie angehängt werden können.

Obwohl die meisten Benutzer diese Daten wahrscheinlich nicht benötigen, können sie für Diagnosezwecke nützlich sein, da Sie genau sehen können, was an die zugrunde liegenden AWS Serviceanfragen gesendet und von ihnen empfangen wurde, die vom Cmdlet getätigt wurden. Cmdlets können den `-Select *` Parameter und das Argument verwenden, um die gesamte Dienstantwort zurückzugeben.

Sehen Sie sich die folgenden Beispiele an, um zu veranschaulichen, wie alle Daten aus einer Antwort zurückgegeben werden können.

Das erste Beispiel gibt einfach eine Liste von Amazon S3 S3-Buckets zurück. Dies ist das Standardverhalten.

```
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
```

Das zweite Beispiel gibt ein AWS SDK für .NET Antwortobjekt zurück. Da angegeben `-Select *` wurde, umfasst die Ausgabe die gesamte API-Antwort, die die Sammlung von Buckets in der `Buckets` Eigenschaft enthält. In diesem Beispiel ist das `Format-List` Cmdlet nicht unbedingt erforderlich, aber es ist vorhanden, um sicherzustellen, dass alle Eigenschaften angezeigt werden.

```
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
```

## Iteration durch seitenweise gespeicherte Daten
<a name="pstools-iteration"></a>

In den folgenden Abschnitten werden verschiedene Arten von Iterationen beschrieben, die möglich sind.

### Automatische Iteration
<a name="pstools-iteration-auto"></a>

Für Dienste APIs , die eine standardmäßige maximale Anzahl zurückgegebener Objekte für einen bestimmten Aufruf festlegen oder Ergebnismengen unterstützen, implementieren die meisten Cmdlets die automatische Iteration, wodurch das Standardverhalten von "" aktiviert wird. page-to-completion In diesem Szenario führt ein Cmdlet in Ihrem Namen so viele Aufrufe durch, wie erforderlich sind, um den vollständigen Datensatz an die Pipeline zurückzugeben.

Im folgenden Beispiel, in dem das [Get-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/index.html?page=Get-S3Object.html&tocid=Get-S3Object)Cmdlet verwendet wird, enthält die `$result` Variable `S3Object` Instanzen für jeden Schlüssel in einem aufgerufenen Bucket`amzn-s3-demo-bucket1`, bei dem es sich möglicherweise um einen sehr großen Datensatz handelt.

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

Im folgenden Beispiel wird die Anzahl der Ergebnisse für jede Seite während der automatischen Iteration vom Standardwert 1000 auf 500 reduziert. In diesem Beispiel werden doppelt so viele automatische Iterationsaufrufe ausgeführt, da bei jedem Aufruf nur halb so viele Ergebnisse zurückgegeben werden.

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

### Automatische Iteration deaktivieren
<a name="pstools-iteration-disable-auto"></a>

Wenn Sie möchten, dass die Tools für PowerShell nur die erste Datenseite zurückgeben, können Sie den `-NoAutoIteration` Parameter hinzufügen, um zu verhindern, dass weitere Datenseiten zurückgegeben werden.

Das folgende Beispiel verwendet die `-MaxKey` Parameter `-NoAutoIteration` und, um die Anzahl der zurückgegebenen `S3Object` Instanzen auf nicht mehr als die ersten 500 im Bucket zu beschränken.

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

Um festzustellen, ob weitere Daten verfügbar, aber nicht zurückgegeben wurden, verwenden Sie den `-Select *` Parameter und das Argument und überprüfen Sie, ob die nächste Token-Eigenschaft einen Wert enthält.

Das folgende Beispiel gibt zurück`$true`, ob sich mehr als 500 Objekte im Bucket befinden, und `$false` andernfalls.

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

**Anmerkung**  
Die Namen der nächsten Token-Antworteigenschaft und des nächsten Cmdlet-Parameters variieren je nach Cmdlet. Einzelheiten finden Sie in der Hilfedokumentation zu den einzelnen Cmdlets.

### Manuelle Iteration
<a name="pstools-iteration-manual"></a>

Im folgenden Beispiel werden alle S3-Objekte aus einem Bucket mithilfe einer [Do-Schleife](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_do) zurückgegeben, die die Bedingung nach jeder Iteration auswertet. Die `do` Schleife führt Iterationen durch, bis der Wert `$result.NextMarker` auf `Get-S3Object` 0 gesetzt ist`$null`, was bedeutet, dass keine ausgelagerten Daten mehr übrig sind. Die Ausgabe der Schleife wird der Variablen zugewiesen. `$s3Objects`

```
$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)
```

In diesem Beispiel wird PowerShell [Splatting](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting) verwendet, um eine lange Codezeile zu vermeiden, die durch die Inline-Deklaration von Parametern und Argumenten verursacht würde.