HOWTO · PowerShell

PowerShell 함수에서 여러 항목을 반환하는 방법

이 튜토리얼은 PowerShell 함수에서 여러 값을 반환하는 방법을 가르쳐 줄 것입니다.

PowerShell 함수 작업을 할 때 효율적으로 여러 값을 반환할 필요가 자주 발생합니다. 이를 위한 효과적인 접근법 중 하나는 배열, [PSCustomObject], 해시 테이블 또는 사용자 지정 개체를 사용하여 이러한 값을 캡슐화하고 표시하는 것입니다.

이 기사에서는 언급된 방법을 사용하여 PowerShell 함수에서 여러 항목을 반환하는 방법을 자세히 설명합니다. 각 방법에 대한 단계별 절차를 설명하고 구현 및 출력을 보여주는 코드 예제를 제공합니다.

배열을 사용하여 PowerShell 함수에서 여러 항목 반환하기

배열을 사용하여 PowerShell 함수에서 여러 값을 반환하려면, 다음 단계를 따르세요:

  • 배열 변수 선언: 반환하려는 여러 값을 보유할 배열 변수를 함수 내에서 선언합니다.
  • 배열 채우기: 반환하려는 원하는 값으로 배열을 채웁니다. 인덱싱을 사용하여 배열에 요소를 추가할 수 있습니다.
  • 배열 반환: 채운 배열을 함수의 출력으로 반환합니다.

간단한 PowerShell 함수를 만들어 배열을 사용하여 여러 값을 반환해 봅시다.

function Get-MultipleValues {
    $values = @()

    $values += "Value1"
    $values += "Value2"
    $values += "Value3"

    return $values
}

$resultArray = Get-MultipleValues

Write-Output "Values returned from the function:"
foreach ($value in $resultArray) {
    Write-Output $value
}

출력:

Values returned from the function:
Value1
Value2
Value3

이 예제에서는 Get-MultipleValues라는 함수가 있습니다. 함수 내에서 배열 변수 $values를 선언합니다.

그 다음, 배열에 "Value1", "Value2", "Value3"라는 세 값을 채웁니다. 마지막으로, 채운 배열을 함수의 출력으로 반환합니다.

함수를 호출할 때 결과를 변수($resultArray)에 저장하고, 루프를 사용하여 배열 내부의 값을 표시합니다.

[PSCustomObject]를 사용하여 PowerShell 함수에서 여러 항목 반환하기

PowerShell에서 사용자 지정 개체를 생성하기 위해 [PSCustomObject]를 사용할 수도 있습니다. 개체에 대한 속성과 값을 정의할 수 있어, 함수에서 여러 값을 반환하는 데 적합한 선택이 됩니다.

[PSCustomObject]를 사용하여 사용자 지정 개체를 만들려면, 속성과 해당 값들을 다음과 같이 정의하면 됩니다:

$customObject = [PSCustomObject]@{
    Property1 = 'Value1'
    Property2 = 'Value2'
    ...
}

PowerShell 함수에서 [PSCustomObject]를 사용하여 여러 값을 반환하려면, PowerShell 함수를 정의하고 [PSCustomObject]의 인스턴스를 만듭니다. 사용자 지정 개체 내에서 반환하려는 속성과 값을 정의합니다.

function Get-MultipleValues {
    [CmdletBinding()]
    param (
        [string]$Value1,
        [int]$Value2,
        [string]$Value3
    )

    $resultObject = [PSCustomObject]@{
        Name    = $Value1
        Age     = $Value2
        Address = $Value3
    }

    return $resultObject
}

이제 함수를 호출하여 여러 값을 포함하는 사용자 지정 개체를 검색할 수 있습니다.

$result = Get-MultipleValues -Value1 'Rohan' -Value2 21 -Value3 'UK'

Write-Output "Values returned from the function:"
foreach ($value in $result) {
    Write-Output $value
}

출력:

Values returned from the function:
Name  Age Address
----  --- -------
Rohan  21 UK

위의 PowerShell 코드에서는 Get-MultipleValues라는 함수가 도입되었습니다. 이 함수는 [CmdletBinding()] 태그가 붙어 있어 일반 cmdlet 매개변수를 사용할 수 있음을 나타냅니다.

함수 내에서 세 개의 매개변수가 정의됩니다: $Value1 (문자열), $Value2 (정수), 그리고 $Value3 (문자열). 함수는 이러한 매개변수를 사용하여 $resultObject라는 사용자 지정 개체를 구성하고, 이를 개체 내 속성 Name, Age, Address에 할당합니다.

return $resultObject 문장은 이 사용자 지정 개체가 Get-MultipleValues 함수의 출력으로 반환되도록 보장합니다.

그 후, 스크립트는 Get-MultipleValues 함수를 호출하고 각 매개변수에 대한 값을 지정합니다: $Value1'Rohan', $Value221, $Value3'UK'로 설정됩니다. 제공된 매개변수 값을 통합한 결과 사용자 지정 개체는 변수 $result에 저장됩니다.

그 후, 스크립트는 Write-Output을 사용하여 콘솔에 메시지를 표시하고, $result에 담긴 사용자 지정 개체의 속성을 순회하는 루프를 시작합니다. 각 속성에 대해 스크립트는 속성 이름과 해당 값을 콘솔에 표시합니다.

해시 테이블을 사용하여 PowerShell 함수에서 여러 항목 반환하기

PowerShell의 해시 테이블은 키-값 쌍의 순서가 없는 모음입니다. 각 키는 고유해야 하며, 연관된 값은 어떤 데이터 유형도 될 수 있습니다.

해시 테이블은 특정 키를 기반으로 데이터를 저장하고 검색해야 할 때 특히 유용하며, 정보를 조직하는 구조화된 방법을 제공합니다.

해시 테이블을 사용하여 PowerShell 함수에서 여러 값을 반환하려면 다음 단계를 따르세요:

  • 해시 테이블 만들기: 반환하고자 하는 데이터를 나타내는 키-값 쌍을 저장하기 위해 함수 내에서 해시 테이블을 생성합니다.

    해시 테이블은 @{}를 사용하여 PowerShell에서 생성할 수 있습니다. 키와 값은 {} 괄호 안에 배치됩니다.

    해시 테이블을 만드는 구문은 다음과 같습니다.

    @{ <key> = <value>; [<key> = <value> ] ... }
    
  • 키-값 쌍 추가: 고유한 키와 연관된 각 값을 해시 테이블에 추가합니다.
  • 해시 테이블 반환: 채운 해시 테이블을 함수의 출력으로 반환합니다.

사용자라는 함수에서 여러 값을 반환하기 위해 해시 테이블을 사용하는 예제를 살펴봅시다.

코드:

function user() {
    $hash = @{ Name = 'Rohan'; Age = 21; Address = 'UK' }
    return $hash
}

$a = user
Write-Host "$($a.Name) is $($a.Age) and lives in $($a.Address)."

출력:

Rohan is 21 and lives in UK.

위의 코드를 보면, function 키워드를 사용하여 user()라는 함수를 정의하고 있습니다. 이 함수 내에서 @{} 구문을 사용하여 해시 테이블 $hash를 생성하며, 여기에는 세 개의 키-값 쌍이 포함되어 있습니다: Name은 값 'Rohan', Age는 값 21, Address는 값 'UK'입니다.

return $hash 문장은 이 해시 테이블이 user() 함수의 출력임을 보장합니다.

그 후, 스크립트는 user() 함수를 호출하고 결과 해시 테이블을 변수 $a에 할당합니다. 이는 $a가 이제 user() 함수에서 반환된 해시 테이블을 보유하고 있음을 의미합니다.

마지막으로, Write-Host cmdlet은 콘솔에 메시지를 표시하는 데 사용됩니다. 이 메시지는 $a에 저장된 해시 테이블의 값을 포함하며, 각각의 Name, Age, Address 값에 접근하여 표시합니다.

이제 두 숫자의 합과 곱을 계산하고 해시 테이블을 사용하여 결과를 반환하는 또 다른 PowerShell 함수를 만들어 보겠습니다.

function Calculate-SumAndProduct {
    param(
        [int]$num1,
        [int]$num2
    )

    $resultHashTable = @{
        Sum     = $num1 + $num2
        Product = $num1 * $num2
    }

    return $resultHashTable
}

$inputNum1 = 5
$inputNum2 = 7

$result = Calculate-SumAndProduct -num1 $inputNum1 -num2 $inputNum2

Write-Output "Sum: $($result['Sum'])"
Write-Output "Product: $($result['Product'])"

출력:

Sum: 12
Product: 35

이 코드는 Calculate-SumAndProduct라는 함수를 정의하며, 두 개의 int 매개변수 $num1$num2를 받습니다. 함수 내에서 @{} 구문을 사용하여 해시 테이블 $resultHashTable이 생성됩니다.

이 해시 테이블에는 Sum 키에 $num1$num2의 합과, Product 키에 $num1$num2의 곱에 해당하는 값이 포함됩니다. 함수는 이후 이 해시 테이블을 반환하여 Calculate-SumAndProduct 함수의 출력으로 만듭니다.

그 다음 스크립트에서는 두 개의 입력 숫자가 정의됩니다: $inputNum1는 값 5, $inputNum2는 값 7입니다. Calculate-SumAndProduct 함수는 이러한 입력 숫자로 호출되며, 결과 해시 테이블은 $result라는 변수에 저장됩니다.

마지막으로 스크립트는 해당 해시 테이블의 값을 접근하여 합과 곱 값을 표시하기 위해 Write-Output cmdlet을 사용합니다.

사용자 지정 개체를 사용하여 PowerShell 함수에서 여러 항목 반환하기

PowerShell에서 사용자 지정 개체는 System.Management.Automation.PSCustomObject 클래스의 인스턴스입니다. 이를 통해 속성과 해당 속성과 연결된 값을 정의할 수 있어 실제 개체처럼 보이게 할 수 있습니다.

사용자 지정 개체는 유연성이 있으며 데이터를 구조화된 방식으로 조직하고 검색할 수 있게 해줍니다.

사용자 지정 개체를 사용하여 PowerShell 함수에서 여러 값을 반환하려면 다음 단계를 따르세요:

  • 사용자 지정 개체 정의: 함수 내에서 사용자 지정 개체를 작성하고 반환하려는 값에 대한 속성을 정의합니다.
  • 속성 값 할당: 반환하려는 값을 사용자 지정 개체의 속성에 할당합니다.
  • 사용자 지정 개체 반환: 채운 사용자 지정 개체를 함수의 출력으로 반환합니다.

두 숫자의 합과 곱을 계산하고 사용자 지정 개체를 사용하여 결과를 반환하는 PowerShell 함수를 만들어 보겠습니다.

function Calculate-SumAndProduct {
    param(
        [int]$num1,
        [int]$num2
    )

    $resultObject = New-Object PSObject
    $resultObject | Add-Member -MemberType NoteProperty -Name "Sum" -Value ($num1 + $num2)
    $resultObject | Add-Member -MemberType NoteProperty -Name "Product" -Value ($num1 * $num2)

    return $resultObject
}

$inputNum1 = 5
$inputNum2 = 7

$result = Calculate-SumAndProduct -num1 $inputNum1 -num2 $inputNum2

Write-Output "Sum: $($result.Sum)"
Write-Output "Product: $($result.Product)"

출력:

Sum: 12
Product: 35

이 예제에서는 두 개의 입력 숫자($num1$num2)를 받는 Calculate-SumAndProduct라는 함수가 정의되었습니다. 함수 내에서 $resultObject라는 사용자 지정 개체를 만들고, 두 개의 속성(SumProduct)을 추가하며, 각각의 계산된 값을 할당합니다.

입력 숫자(57)로 함수를 호출할 때 결과를 변수($result)에 저장합니다. 그런 다음 결과 사용자 지정 개체의 속성에 접근하여 합과 곱을 표시합니다.

결론

이 기사는 배열, [PSCustomObject], 해시 테이블 및 사용자 지정 개체를 사용하여 함수에서 여러 값을 반환하는 다양한 기술을 탐구했습니다. 각 방법은 장점을 제공하며 스크립트의 특정 요구 사항에 따라 선택할 수 있습니다.

배열은 특히 데이터 항목이 유사한 유형이나 구조를 공유할 때 여러 값을 반환하는 간단한 방법을 제공합니다. [PSCustomObject]는 이름이 지정된 속성으로 사용자 지정 개체를 생성할 수 있어 데이터를 반환하는 구조적인 접근 방식을 제공합니다.

해시 테이블은 특정 키를 기반으로 데이터 검색이 필요한 상황에서 뛰어난 성능을 발휘하며, 정보를 구조화하고 효율적으로 저장하는 솔루션을 제공합니다. [System.Management.Automation.PSCustomObject] 클래스를 사용하여 구축된 사용자 지정 개체는 유연성을 제공하며 실제 개체를 모방합니다.