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

  1. 배열을 사용하여 PowerShell 함수에서 여러 항목 반환하기
  2. [PSCustomObject]를 사용하여 PowerShell 함수에서 여러 항목 반환하기
  3. 해시 테이블을 사용하여 PowerShell 함수에서 여러 항목 반환하기
  4. 사용자 지정 개체를 사용하여 PowerShell 함수에서 여러 항목 반환하기
  5. 결론
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] 클래스를 사용하여 구축된 사용자 지정 개체는 유연성을 제공하며 실제 개체를 모방합니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - PowerShell Function