2017-10-25 6 views
1

PowerShell에서 해시 테이블 변수에 여러 개의 매개 변수를 래핑 한 다음 대신 @이라는 접두사가 붙은 변수를 전달하여 함수 또는 cmdlet에 여러 매개 변수를 전달할 수 있습니다.개체의 속성을 사용하여 함수 분할

다른 객체 (즉, 하나의 라이너)의 속성 인 해시 테이블로 표시 할 수 있습니까? 예 : 아래에 나는 Demo으로 표시하기 전에 다른 변수에 먼저 속성 (testInt, testString)을 할당해야합니다. https://github.com/PowerShell/PowerShell/issues/5227

+0

'@ ($ test.testInt)'를 사용해 보셨습니까? – Clijsters

+0

@ Clijsters : 예; 하지만 슬프게도 기쁨은 없습니다. – JohnLBevan

+0

@Clijsters'@()'는 배열 생성 연산자입니다. 매개 변수를 감싸더라도 스플래팅 기능을 사용할 수 없습니다. –

답변

3
: 나는 제안이 제출

업데이트

function Demo { 
    [CmdletBinding()] 
    Param (
     [Parameter()] 
     [string]$One 
     , 
     [Parameter()] 
     [string]$Two 
    ) 
    "1 = $One" 
    "2 = $Two" 
} 
$test = @{ 
    testInt = @{ 
     One = '1' 
     Two = '2' 
    } 
    testString = @{ 
     One = 'One' 
     Two = 'Two' 
    } 
} 

$t = $test.testInt 
Demo @t 
$t = $test.testString 
Demo @t 

Demo @test.testInt #this doesn't work/I've also tried similar options with various castings and braces though to no avail. 

...이 추가 단계를 방지 할 수있는 방법을 싶습니다하지만 깔끔한 해결책을 찾을 수 없어

AFAIK 개체 속성이나 배열 또는 해시 테이블의 요소를 표시하는 유일한 방법은 변수에 할당 한 다음 해당 변수를 표시하는 것입니다.

$p = $variable.property 
demo @p 

표기법 @variable.property은 유효하지 않으며 다른 의미 (배열 구성 및 해시 테이블 구성)가 이미 있으므로 이러한 구문을 허용하기 위해 @()@{}을 사용할 수 없습니다.

+0

참고 : 제안으로 제출 : https : //github.com/PowerShell/PowerShell/issues/5227 ... 다른 사람들에게 유용 할 것입니다/받아 들여지기를 바랍니다. – JohnLBevan