2014-11-28 2 views
6

PSCustomObject 속성을 얻고 값 : 인쇄동적으로 나는 다음과 같은 한

$test = [pscustomobject]@{ 
    First="Donald"; 
    Middle="Fauntleroy"; 
    Last="Duck"; 
    Age=80 
} 
$test | Get-Member -MemberType NoteProperty | % {"$($_.Name)="} 

:

Age= 
First= 
Last= 
Middle= 
나는 각 속성의 값을 추출하기 좋아하고 그것을 포함 할 것이다

내 이름 값 쌍의 값은 다음과 같습니다.

Age=80 
First=Donald 
Last=Duck 
Middle=Fauntleroy 

문자열을 작성하려고하고 있으며 속성 이름을 미리 알지 못합니다. 이름 값 쌍을 완성하기 위해 값을 가져 오는 방법은 무엇입니까? 나는 (지금까지) 찾을 수

답변

7

있는 유일한 방법은 같은 일을하는 것입니다 : 사람이이 게시하시기 바랍니다 일을 더 간결 방법이있는 경우

$test = [pscustomobject]@{ 
    First="Donald"; 
    Middle="Fauntleroy"; 
    Last="Duck"; 
    Age=80 
} 

$props=Get-Member -InputObject $test -MemberType NoteProperty 

foreach($prop in $props) { 
    $propValue=$test | Select-Object -ExpandProperty $prop.Name 
    $prop.Name + "=" + $propValue 
} 

의 핵심은 -ExpandProperty

을 사용하고 있습니다!

+2

약간 개선 값 검색 :'$ prop.Name + "="+ $ test. ($ prop.Name)' – scobi

+0

@scobi 아이러닉이 2 살짜리 스레드를 필요로했습니다. 그는 당신이 이것을 게시 한 그날! 당신의 방법은 매우 간결하고 질문에 대한 좋은 답변입니다. 나는 그것을 대답으로 옮길 것이다! –

+0

OK, 확실하지, 왜 안 되니 :) – scobi

4

짧은, 더 poshy 옵션 : 정말 좋은,하지만 여기에 또 하나의 변종 인 경우

$test | Get-Member -MemberType NoteProperty | % Name | %{ 
    $_ + '=' + $test.$_ 
} 
1

확실하지 :

$test.psobject.Members | ? {$_.Membertype -eq "noteproperty"} | 
    %{ $_.Name + '='+ $_.Value } 
+0

이것은 ToString()과 GetHashCode()와 같은'Object' 메쏘드를 선택한다. 예를 들어,'ConvertFrom-Json'으로 생성 된 객체의 속성을 열거한다면'Get-Member -Type NoteProperty'에서 얻은 noteproperties 만 원합니다. – Arnavion

0

내 변형 님의

$memberNames=($test |Get-Member -Type NoteProperty).Name 
foreach ($mname in $memberNames) { 
    "{0}={1}" -f $mname,$Test."$mname" 
}