

Versi 5 (V5) dari Alat AWS untuk PowerShell telah dirilis\$1

Untuk informasi tentang melanggar perubahan dan memigrasi aplikasi Anda, lihat [topik migrasi](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)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pipelining, output, dan iterasi di Alat AWS untuk PowerShell
<a name="pstools-pipelines"></a>

## Pemipaan pipa
<a name="pstools-pipelining"></a>

PowerShell mendorong pengguna untuk menghubungkan cmdlet ke [saluran pipa](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines) yang mengarahkan output dari satu cmdlet ke input berikutnya. Contoh berikut menunjukkan perilaku ini saat menggunakan Alat AWS untuk PowerShell. Perintah mendapatkan dan kemudian menghentikan semua EC2 instance Amazon di Wilayah default saat ini.

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

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

Untuk mendukung pipelining dengan lebih baik, beberapa data dari tanggapan AWS SDK untuk .NET mungkin dibuang secara default. Output dari Alat AWS untuk PowerShell cmdlet tidak dibentuk ulang untuk menyertakan respons layanan dan instance hasil sebagai `Note` properti pada objek koleksi yang dipancarkan. Sebaliknya, untuk panggilan yang memancarkan satu koleksi sebagai output, koleksi sekarang disebutkan ke pipeline. PowerShell Ini berarti bahwa respons SDK dan data hasil tidak dapat ada di pipeline karena tidak ada objek koleksi yang dapat dilampirkan.

Meskipun sebagian besar pengguna mungkin tidak memerlukan data ini, ini dapat berguna untuk tujuan diagnostik karena Anda dapat melihat dengan tepat apa yang dikirim dan diterima dari panggilan AWS layanan yang mendasari yang dibuat oleh cmdlet. Cmdlet dapat menggunakan `-Select *` parameter dan argumen untuk mengembalikan seluruh respons layanan.

Untuk mengilustrasikan bagaimana semua data dari respons dapat dikembalikan, pertimbangkan contoh berikut.

Contoh pertama hanya mengembalikan daftar ember Amazon S3. Ini adalah perilaku default.

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

Contoh kedua mengembalikan objek AWS SDK untuk .NET respon. Karena `-Select *` telah ditentukan, output mencakup seluruh respons API, yang berisi kumpulan bucket di `Buckets` properti. Dalam contoh ini, `Format-List` cmdlet tidak sepenuhnya diperlukan, tetapi hadir untuk memastikan bahwa semua properti ditampilkan.

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

## Iterasi melalui data halaman
<a name="pstools-iteration"></a>

Bagian berikut menjelaskan berbagai jenis iterasi yang mungkin.

### Iterasi otomatis
<a name="pstools-iteration-auto"></a>

Untuk layanan APIs yang memaksakan jumlah maksimum default objek yang dikembalikan untuk panggilan tertentu atau yang mendukung set hasil yang dapat dihalaman, sebagian besar cmdlet menerapkan iterasi otomatis, yang memungkinkan perilaku default "”. page-to-completion Dalam skenario ini, cmdlet membuat panggilan sebanyak yang diperlukan atas nama Anda untuk mengembalikan kumpulan data lengkap ke pipeline.

Dalam contoh berikut, yang menggunakan [Get-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/index.html?page=Get-S3Object.html&tocid=Get-S3Object)cmdlet, `$result` variabel berisi `S3Object` instance untuk setiap kunci dalam bucket yang disebut`amzn-s3-demo-bucket1`, yang berpotensi merupakan kumpulan data yang sangat besar.

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

Contoh berikut mengurangi jumlah hasil untuk setiap halaman selama iterasi otomatis dari nilai default 1000 menjadi 500. Contoh melakukan dua kali lebih banyak panggilan iterasi otomatis karena hanya setengah dari banyak hasil yang dikembalikan untuk setiap panggilan.

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

### Nonaktifkan iterasi otomatis
<a name="pstools-iteration-disable-auto"></a>

Jika Anda ingin Alat PowerShell untuk mengembalikan hanya halaman pertama data, Anda dapat menambahkan `-NoAutoIteration` parameter untuk mencegah halaman data tambahan dikembalikan.

Contoh berikut menggunakan `-MaxKey` parameter `-NoAutoIteration` and untuk membatasi jumlah `S3Object` instance yang dikembalikan tidak lebih dari 500 pertama yang ditemukan di bucket.

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

Untuk menentukan apakah lebih banyak data tersedia tetapi tidak dikembalikan, gunakan `-Select *` parameter dan argumen dan periksa apakah ada nilai di properti token berikutnya.

Contoh berikut kembali `$true` jika ada lebih dari 500 objek dalam ember dan `$false` sebaliknya.

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

**catatan**  
Nama-nama properti respons token berikutnya dan parameter cmdlet bervariasi di antara cmdlet. Untuk detailnya, lihat dokumentasi bantuan untuk setiap cmdlet.

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

Contoh berikut mengembalikan semua objek S3 dari bucket menggunakan [do](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_do) loop, yang mengevaluasi kondisi setelah setiap iterasi. `do`Loop melakukan iterasi hingga `Get-S3Object` set `$result.NextMarker` ke`$null`, menunjukkan bahwa tidak ada lagi data halaman yang tersisa. Output dari loop ditugaskan ke `$s3Objects` variabel.

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

Contoh ini menggunakan PowerShell [percikan](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting) untuk menghindari baris panjang kode yang akan disebabkan oleh mendeklarasikan parameter dan argumen in-line.