2017-02-02 1 views
1

이것은 매우 간단해야합니다. 함수에서 해시 테이블 배열을 반환해야합니다. 이것은 하나 이상의 해시 테이블이있을 때 작동하지만 하나만있는 경우 결과는 배열이 아닙니다. 결과가 배열인지 아닌지 테스트하고 싶습니다.PowerShell에서 단일 요소가있는 배열 반환

function GetArrayWith1Hashtable() 
{ 
    $array = @() 

    $hashtable = @{} 
    $hashtable["a"] = "a" 
    $hashtable["b"] = "b" 
    $hashtable["c"] = "c" 
    $array += $hashtable 

    Write-Host "GetArrayWith1Hashtable array.Length =" $array.Length 
    Write-Host "GetArrayWith1Hashtable array.Count" $array.Count 
    Write-Host "GetArrayWith1Hashtable array[0].Keys" $array[0].Keys 

    $array 
} 

function GetArrayWith2Hashtables() 
{ 
    $array = @() 

    $hashtable = @{} 
    $hashtable["a"] = "a" 
    $hashtable["b"] = "b" 
    $hashtable["c"] = "c" 
    $array += $hashtable 

    $hashtable2 = @{} 
    $hashtable2["d"] = "d" 
    $hashtable2["e"] = "e" 
    $hashtable2["f"] = "f" 
    $array += $hashtable2 

    Write-Host "GetArrayWith2Hashtables array.Length = " $array.Length 
    Write-Host "GetArrayWith2Hashtables array.Count = " $array.Count 
    Write-Host "GetArrayWith2Hashtables array[0].Keys =" $array[0].Keys 
    Write-Host "GetArrayWith2Hashtables array.Count = "$array[1].Keys 

    $array 
} 

$result1 = GetArrayWith1Hashtable 
# $result1.Length - not available 
Write-Host "Result of GetArrayWith1Hashtable result1.Count = " $result1.Count      # Count = 2 (would expect this to be 1) 
# $result1[0] not available - not an array 

$result2 = GetArrayWith2Hashtables 
Write-Host "Result of GetArrayWith2Hashtables result2.Length = " $result2.Length # Length = 2 
Write-Host "Result of GetArrayWith2Hashtables result2.Count = "  $result2.Count # Count = 2 
Write-Host "Result of GetArrayWith2Hashtables result2[0].Keys = "  $result2[0].Keys # Keys = c a b 
Write-Host "Result of GetArrayWith2Hashtables result2[1].Keys = "  $result2[1].Keys # Keys = d e f 

<# 
    FULL OUTPUT: 

GetArrayWith1Hashtable array.Length = 1 
GetArrayWith1Hashtable array.Count 1 
GetArrayWith1Hashtable array[0].Keys c a b 

Result of GetArrayWith1Hashtable result1.Count = 2 

GetArrayWith2Hashtables array.Length = 2 
GetArrayWith2Hashtables array.Count = 2 
GetArrayWith2Hashtables array[0].Keys = c a b 
GetArrayWith2Hashtables array.Count = d e f 

Result of GetArrayWith2Hashtables result2.Length = 2 
Result of GetArrayWith2Hashtables result2.Count = 2 
Result of GetArrayWith2Hashtables result2[0].Keys = c a b 
Result of GetArrayWith2Hashtables result2[1].Keys = d e f 

#> 

답변

1

그냥 배열로 리턴 타입 캐스트 :

$result1 = @(GetArrayWith1Hashtable) 
관련 문제