HOWTO · PowerShell

PowerShell에서 배열을 함수에 전달하는 방법

PowerShell에서 배열은 어떤 유형의 요소 모음으로 구성된 데이터 구조입니다. 배열은 PowerShell 함수에 쉽게 전달되어 사용할 수 있습니다.

많은 프로그래밍 언어, 특히 PowerShell을 포함하여, 배열은 기본 데이터 구조입니다. 배열은 값을 효율적으로 저장할 수 있게 해주어 PowerShell 스크립팅의 다양한 작업에 중요한 도구가 됩니다.

이 문서에서는 배열과 PowerShell에서 배열을 함수에 전달하는 관례에 초점을 맞출 것입니다.

PowerShell 배열

PowerShell 배열은 Java, Python, C# 등과 같은 범용 프로그래밍 언어의 배열과 다르지 않습니다. 이들은 고정 크기의 값을 또는 어떤 데이터 타입의 객체를 저장할 수 있는 기능을 제공합니다.

구문:

$intTypeArray = 34, 100, 1000, 45, 455, 1

다음 예제에서 $intTypeArray 변수의 타입을 확인하기 위해 내장된 GetType() 메서드를 사용할 것입니다.

변수 1의 유형 확인

예상한 대로, 기본 타입은 System.Array입니다. 이 배열의 데이터 타입을 명시적으로 지정하지 않았기 때문에 PowerShell 엔진은 이를 객체 배열로 생성했습니다.

흥미롭게도, PowerShell 배열은 단일 배열 내에서 다양한 타입의 요소를 수용할 수 있으며, 아래 코드 조각에서 예시 볼 수 있습니다.

코드:

$mixedElementArray = 200, 'stringElement', 12.555, 'hello'

출력:

변수 2의 유형을 확인하세요.

보시다시피, 기본 PowerShell 배열은 Object[] 타입을 기반으로 합니다.

PowerShell에서는 모든 값이나 객체가 Object에서 상속됩니다. 따라서 기본 PowerShell 배열에 모든 값이나 객체를 할당할 수 있습니다.

기본 배열 외에도 PowerShell은 강타입 배열로 알려진 변형을 제공합니다. 이 배열은 특정 데이터 타입의 값을 전용으로 수용합니다.

강타입 배열을 생성할 때는 참조 변수를 int32[], string[] 등과 같은 특정 배열 타입으로 캐스팅할 필요가 있습니다.

[string[]]$stringTypeArray = 'tesla', 'mecedes', 'audi', 'lambo'

$stringTypeArray의 타입을 확인해 봅시다.

$stringTypeArray.GetType()

출력:

변수 3의 유형을 확인하다

배열을 PowerShell 함수에 전달하기

PowerShell에서는 강타입 배열이 타입 안전성 때문에 PowerShell 프로그램에서 사용하는 것이 권장됩니다. 이미 정의된 배열을 함수에 전달해야 할 때, 다음 구문이 제대로 작동해야 합니다.

구문:

function <function_identifier>([<data_type>[]]$<parameter_name>)
{

}

이 구문에서:

  • function: PowerShell에서 함수 정의를 시작하는 데 사용되는 키워드를 나타냅니다.
  • <function_name>: 함수의 이름을 나타냅니다.
  • [<data_type>[]]: 매개변수의 데이터 타입을 지정하여 함수 내에서 지정된 데이터 타입의 배열로 작업할 수 있음을 허용합니다.
  • $<parameter_name>: 함수 내에서 매개변수의 이름으로 사용됩니다.

이러한 방식으로 배열을 함수에 쉽게 전달할 수 있습니다. 이를 설명하기 위해 먼저 letsPassAnArray라는 PowerShell 함수를 정의해 보겠습니다.

코드:

function letsPassAnArray([string[]]$stringList) {
    foreach ($arrEle in $stringList) {
        Write-Host $arrEle
    }
}

이 예제에서 우리는 $stringList라는 매개변수를 가진 letsPassAnArray라는 PowerShell 함수를 정의합니다. 그런 다음 $stringList 배열의 각 요소($arrEle)를 반복하는 foreach 루프를 시작합니다.

루프 내부에서는 각 배열 요소를 콘솔에 씁니다. 함수를 테스트하기 위해 'Apple', 'Orange''Grapes' 요소로 구성된 문자열 타입 배열인 $stringArr를 생성합니다.

코드:

[string[]]$stringArr = 'Apple', 'Orange', 'Grapes'
letsPassAnArray($stringArr)

마지막으로 letsPassAnArray 함수를 호출하고 $stringArr 배열을 인수로 전달하여 함수가 배열의 각 요소를 반복하고 출력하게 합니다.

출력:

PowerShell 함수에 배열 전달하기

결론

PowerShell에서 배열과 이를 함수에 전달하는 방법을 이해하는 것은 효율적이고 체계적인 스크립팅에 필수적입니다. 다양한 데이터 타입을 수용할 수 있는 일반 배열이든, 타입 안전성을 위한 강타입 배열이든, 배열 조작을 마스터하면 더 효과적인 PowerShell 스크립트를 작성할 수 있습니다.