

버전 5(V5) AWS Tools for PowerShell 가 릴리스되었습니다.

변경 사항 해제 및 애플리케이션 마이그레이션에 대한 자세한 내용은 [마이그레이션 주제를](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)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 의 파이프라인, 출력 및 반복 AWS Tools for PowerShell
<a name="pstools-pipelines"></a>

## 파이프라이닝
<a name="pstools-pipelining"></a>

PowerShell은 사용자가 한 cmdlet의 출력을 다음 cmdlet의 입력으로 전달하는 [파이프라인](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines)에 cmdlet을 연결하도록 권장합니다. 다음 예제에서는를 사용할 때이 동작을 보여줍니다 AWS Tools for PowerShell. 명령은 현재 기본 리전의 모든 Amazon EC2 인스턴스를 가져온 다음 중지합니다.

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

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

파이프라이닝을 더 잘 지원하기 위해의 응답에서 일부 데이터가 기본적으로 삭제될 AWS SDK for .NET 수 있습니다. AWS Tools for PowerShell cmdlet의 출력은 서비스 응답 및 결과 인스턴스를 내보낸 컬렉션 객체의 `Note` 속성으로 포함하도록 재구성되지 않습니다. 대신에, 단일 모음을 출력으로 내보내는 이러한 호출의 경우, 모음이 이제 PowerShell 파이프라인에 열거됩니다. 즉, 연결할 수 있는 컬렉션 객체가 포함되어 있지 않으므로 SDK 응답 및 결과 데이터가 파이프라인에 존재할 수 없습니다.

대부분의 사용자에게는이 데이터가 필요하지 않을 수도 있지만 cmdlet에서 수행한 기본 AWS 서비스 호출로 송수신된 내용을 정확하게 확인할 수 있으므로 진단 목적으로 유용할 수 있습니다. Cmdlet은 `-Select *` 파라미터와 인수를 사용하여 전체 서비스 응답을 반환할 수 있습니다.

응답의 모든 데이터를 반환하는 방법을 설명하려면 다음 예제를 고려하세요.

첫 번째 예제에서는 Amazon S3 버킷 목록을 반환합니다. 이는 기본 설정 동작입니다.

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

두 번째 예제에서는 AWS SDK for .NET 응답 객체를 반환합니다. `-Select *`가 지정되었으므로 출력에는 `Buckets` 속성의 버킷 모음이 포함된 전체 API 응답이 포함됩니다. 이 예제에서는 `Format-List` cmdlet이 반드시 필요한 것은 아니지만 모든 속성이 표시되도록 하기 위해 존재합니다.

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

## 페이징된 데이터를 통한 반복
<a name="pstools-iteration"></a>

다음 섹션에서는 가능한 다양한 유형의 반복에 대해 설명합니다.

### 자동 반복
<a name="pstools-iteration-auto"></a>

지정된 호출에 대해 반환된 객체의 기본 최대 수를 부과하거나 페이지 지정 가능한 결과 집합을 지원하는 서비스 APIs의 경우 대부분의 cmdlet은 자동 반복을 구현하여 "page-to-completion"의 기본 동작을 활성화합니다. 이 시나리오에서는 cmdlet이 사용자를 대신하여 필요한 만큼 호출하여 전체 데이터 세트를 파이프라인에 반환합니다.

[Get-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/index.html?page=Get-S3Object.html&tocid=Get-S3Object) cmdlet을 사용하는 다음 예제에서 `$result` 변수에는 버킷의 모든 키에 대한 `S3Object` 인스턴스가 포함되며`amzn-s3-demo-bucket1`, 이는 잠재적으로 매우 큰 데이터 세트입니다.

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

다음 예제에서는 자동 반복 중 각 페이지의 결과 수를 기본값인 1000에서 500으로 줄입니다. 이 예제에서는 각 호출에 대해 반환되는 결과가 절반에 불과하므로 자동 반복 호출을 두 배로 수행합니다.

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

### 자동 반복 비활성화
<a name="pstools-iteration-disable-auto"></a>

Tools for PowerShell이 데이터의 첫 번째 페이지만 반환하도록 하려면 `-NoAutoIteration` 파라미터를 추가하여 데이터의 추가 페이지가 반환되지 않도록 할 수 있습니다.

다음 예제에서는 `-NoAutoIteration` 및 `-MaxKey` 파라미터를 사용하여 반환된 `S3Object` 인스턴스 수를 버킷에서 발견된 처음 500개 이하로 제한합니다.

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

사용 가능했지만 반환되지 않은 데이터가 더 있는지 확인하려면 `-Select *` 파라미터와 인수를 사용하고 다음 토큰 속성에 값이 있는지 확인합니다.

다음 예제에서는 버킷에 객체가 500개를 초과하는 `$true` 경우를 반환하고 `$false` 그렇지 않은 경우를 반환합니다.

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

**참고**  
다음 토큰 응답 속성과 cmdlet 파라미터의 이름은 cmdlet마다 다릅니다. 자세한 내용은 각 cmdlet에 대한 도움말 설명서를 참조하세요.

### 수동 반복
<a name="pstools-iteration-manual"></a>

다음 예제에서는 각 반복 후 조건을 평가하는 [do](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_do) 루프를 사용하여 버킷의 모든 S3 객체를 반환합니다. `do` 루프는가 `$result.NextMarker`로 `Get-S3Object` 설정될 때까지 반복을 수행하여 더 이상 페이징된 데이터가 남아 있지 않음을 `$null`나타냅니다. 루프의 출력은 `$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)
```

이 예제에서는 PowerShell [스플랫팅](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting)을 사용하여 파라미터와 인수를 인라인으로 선언하여 발생하는 긴 코드 줄을 방지합니다.