about_Arrays

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

여기에 소개를 삽입합니다.

항목

about_arrays

간단한 설명

항목 컬렉션을 저장하도록 설계된 데이터 구조인 배열에 대해 설명합니다.

자세한 설명

배열은 항목 컬렉션을 저장하도록 설계된 데이터 구조입니다. 항목은 형식이 동일하거나 다를 수 있습니다.

Windows PowerShell® 3.0부터는 0개 또는 1개 개체로 구성된 컬렉션에서 배열의 일부 속성을 사용합니다.

배열 만들기 및 초기화

배열을 만들고 초기화하려면 변수에 여러 값을 할당합니다. 배열에 저장된 값은 쉼표로 구분되며 할당 연산자(=)를 사용하여 변수 이름과 구분됩니다.

예를 들어 22, 5, 10, 8, 12, 9, 80 등의 숫자(int) 값 7개가 포함된 $A라는 배열을 만들려면 다음을 입력합니다.

$A = 22,5,10,8,12,9,80

범위 연산자(..)를 사용하여 배열을 만들고 초기화할 수도 있습니다. 예를 들어, 5에서 8까지의 값이 들어 있는 "$B"라는 배열을 만들고 초기화하려면 다음을 입력합니다.

$B = 5..8

결과적으로 $B에는 5, 6, 7, 8의 값 4개가 포함됩니다.

데이터 형식을 지정하지 않으면 Windows PowerShell에서 각 배열을 개체 배열(형식: System.Object[])로 만듭니다. 배열의 데이터 형식을 확인하려면 GetType() 메서드를 사용합니다. 예를 들어 $a 배열의 데이터 형식을 확인하려면 다음을 입력합니다.

$a.GetType()

강력한 형식의 배열, 즉 특정 형식의 값만 포함할 수 있는 배열을 만들려면 변수를 string[], long[], int32[] 등의 배열 형식으로 캐스팅합니다. 배열을 캐스팅하려면 변수 이름 앞에 대괄호로 묶인 배열 형식을 입력합니다. 예를 들어 정수 4개(1500, 2230, 3350, 4000)가 들어 있는 $ia라는 32비트 정수 배열을 만들려면 다음을 입력합니다.

[int32[]]$ia = 1500,2230,3350,4000

그러면 $ia 배열에 정수만 포함될 수 있습니다.

Microsoft .NET Framework에서 지원하는 형식으로 캐스팅되는 배열을 만들 수 있습니다. 예를 들어 Get-Process에서 프로세스를 나타내기 위해 검색하는 개체는 System.Diagnostics.Process 형식입니다. 강력한 형식의 프로세스 개체 배열을 만들려면 다음 명령을 입력합니다.

[Diagnostics.Process[]]$zz = Get-Process

배열 하위 식 연산자

배열 하위 식 연산자는 0개 또는 1개의 개체가 포함된 경우에도 배열을 만듭니다.

배열 연산자의 구문은 다음과 같습니다.

@( ... )

배열 연산자를 사용하여 0개 또는 1개 개체의 배열을 만들 수 있습니다.

PS C:\>$a = @("One")
PS C:\>$a.Count
1

PS C:\>$b = @()
PS C:\>$b.Count
0

배열 연산자는 개체를 가져오려고 하는데 가져올 개체 수를 알지 못하는 경우의 스크립트에서 특히 유용합니다.

PS C:\> $p = @(Get-Process Notepad)

배열 하위 식 연산자에 대한 자세한 내용은 about_Operators를 참조하세요.

배열 읽기

변수 이름을 사용하여 배열을 참조할 수 있습니다. 배열의 모든 요소를 표시하려면 배열 이름을 입력합니다. 예를 들면 다음과 같습니다.

$a

위치 0에서 시작하는 인덱스를 사용하여 배열의 요소를 참조할 수 있습니다. 이렇게 하려면 인덱스 번호를 대괄호로 묶어야 합니다. 예를 들어 $a 배열의 첫 번째 요소를 표시하려면 다음을 입력합니다.

$a[0]

$a 배열의 세 번째 요소를 표시하려면 다음을 입력합니다.

$a[2]

음수는 배열의 끝에서 계산됩니다. 예를 들어 "-1"은 배열의 마지막 요소를 참조합니다. 배열의 마지막 세 요소를 표시하려면 다음을 입력합니다.

$a[-3..-1]

그러나 이 표기법을 사용할 때는 주의해야 합니다.

$a[0..-2]

이 명령은 마지막 요소를 제외한 배열의 모든 요소를 참조하는 대신 배열의 첫 번째, 마지막 및 마지막에서 두 번째 요소를 참조합니다.

범위 연산자를 사용하여 배열에 있는 모든 값의 하위 집합을 표시할 수 있습니다. 예를 들어 인덱스 위치 1부터 3까지의 데이터 요소를 표시하려면 다음을 입력합니다.

$a[1..3]

더하기 연산자(+)를 사용하여 배열에 있는 요소의 범위와 목록을 결합할 수 있습니다. 예를 들어 인덱스 위치 0, 2 및 4 ~ 6의 요소를 표시하려면 다음을 입력합니다.

$a[0,2+4..6]

배열에 있는 항목 수를 확인하려면 Length 속성 또는 Count 별칭을 사용합니다.

$a.Count

또한 Foreach, For, While 루프 등의 루프 구문을 사용하여 배열의 요소를 참조할 수도 있습니다. 예를 들어 Foreach 루프를 사용하여 $a 배열의 요소를 표시하려면 다음을 입력합니다.

foreach ($element in $a) {$element}

Foreach 루프는 배열에서 반복적으로 실행되며 배열의 끝에 도달할 때까지 배열에 있는 각 값을 반환합니다.

For 루프는 배열의 요소를 검사하는 동안 카운터를 증가시키는 경우에 유용합니다. 예를 들어 For 루프를 사용하여 배열에 있는 값을 하나씩 걸러 반환하려면 다음을 입력합니다.

for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}

While 루프를 사용하여 정의된 조건이 더 이상 충족되지 않을 때까지 배열의 요소를 표시할 수 있습니다. 예를 들어 배열 인덱스가 4보다 작을 때 $a 배열의 요소를 표시하려면 다음을 입력합니다.

$i=0
while($i -lt 4) {$a[$i]; $i++}

배열의 멤버 가져오기

Length 속성 및 SetValue 메서드와 같은 배열의 속성 및 메서드를 가져오려면 Get-Member cmdlet의 InputObject 매개 변수를 사용합니다.

배열을 Get-Member로 파이프하면 Windows PowerShell은 한 번에 하나씩 항목을 보내고 Get-Member는 중복 항목을 무시하고 배열에 있는 각 항목의 형식을 반환합니다.

InputObject 매개 변수를 사용하면 Get-Member에서 배열의 멤버를 반환합니다.

예를 들어 다음 명령은 $a 변수에서 배열의 멤버를 가져옵니다.

Get-Member -InputObject $a

Get-Member cmdlet에 파이프되는 값 앞에 쉼표(,)를 입력하여 배열의 멤버를 가져올 수도 있습니다. 쉼표는 배열을 배열로 이루어진 배열의 두 번째 항목으로 만듭니다. Windows PowerShell은 배열을 한 번에 하나씩 파이프하고 Get-Member는 배열의 멤버를 반환합니다.

,$a | Get-Member

,(1,2,3) | Get-Member

배열 조작

배열의 요소를 변경하고, 배열에 요소를 추가하고, 두 배열의 값을 세 번째 배열로 결합할 수 있습니다.

배열에서 특정 요소의 값을 변경하려면 배열 이름과 변경할 요소의 인덱스를 지정한 다음 할당 연산자(=)를 사용하여 요소의 새 값을 지정합니다. 예를 들어 $a 배열에 있는 두 번째 항목(인덱스 위치 1)의 값을 10으로 변경하려면 다음을 입력합니다.

$a[1] = 10

또한 배열의 SetValue 메서드를 사용하여 값을 변경할 수 있습니다. 다음 예제에서는 $a 배열의 두 번째 값(인덱스 위치 1)을 500으로 변경합니다.

$a.SetValue(500,1)

+= 연산자를 사용하여 배열에 요소를 추가할 수 있습니다. 이 연산자를 사용하면 Windows PowerShell에서 원래 배열의 값과 추가된 값을 사용하여 실제로 새 배열을 만듭니다. 예를 들어 값이 200인 요소를 $a 변수의 배열에 추가하려면 다음을 입력합니다.

$a += 200

배열에서 요소를 삭제하기는 쉽지 않지만 기존 배열에서 선택한 요소만 포함된 새 배열을 만들 수 있습니다. 예를 들어 인덱스 위치 2에 있는 값을 제외하고 $a 배열의 모든 요소가 들어 있는 $t 배열을 만들려면 다음을 입력합니다.

$t = $a[0,1 + 3..($a.length - 1)]

두 배열을 단일 배열로 결합하려면 더하기 연산자(+)를 사용합니다. 다음 예제에서는 두 배열을 만들어 결합한 다음 결합된 결과 배열을 표시합니다.

$x = 1,3
$y = 5,9
$z = $x + $y

결과적으로 $z 배열에는 1, 3, 5 및 9가 포함됩니다.

배열을 삭제하려면 배열에 $null 값을 할당합니다. 다음 명령은 $a 변수에서 배열을 삭제합니다.

$a = $null

Remove-Item cmdlet을 사용할 수도 있지만 $null 값을 할당하는 것이 더 빠릅니다. 특히 배열이 큰 경우는 더욱 그렇습니다.

0 또는 1의 배열

Windows PowerShell 3.0부터는 0개 또는 1개 개체로 구성된 컬렉션에서 Count 및 Length 속성을 사용합니다. 또한 한 개체의 배열로 인덱싱할 수 있습니다. 이 기능을 사용하면 컬렉션이 필요한 명령에서 두 개 미만의 항목을 가져올 때 발생하는 스크립팅 오류를 방지할 수 있습니다.

다음 예제에서는 이 기능을 보여 줍니다.

#Zero objects
$a = $null
$a.Count
0
$a.Length
0

#One object
$a = 4
$a.Count
1
$a.Length
1
$a[0]
4
$a[-1]
4

참고 항목

about_assignment_operators

about_Hash_Tables

about_Operators

about_For

about_Foreach

about_While