문제

PowerShell의 최신 버전은 JavaScript와 같은 작업을 수행 할 수 있습니다.

var point = new Object();
point.x = 12;
point.y = 50;

그렇지 않다면, 동등한 또는 해결 방법은 무엇입니까?

업데이트
모든 의견을 읽으십시오

도움이 되었습니까?

해결책

구문은 기능에 의해 직접 지원되지 않습니다. 잠시 전에, 나는이 기능을 범용 튜플 기능으로 마무리했다.

이것은 당신에게 한 줄을 만들 수있는 능력을 제공합니다.

$point = New-Tuple "x",12,"y",50

다음은 New-Tuple의 코드입니다

function New-Tuple()
{
    param ( [object[]]$list= $(throw "Please specify the list of names and values") )

    $tuple = new-object psobject
    for ( $i= 0 ; $i -lt $list.Length; $i = $i+2)
    {
        $name = [string]($list[$i])
        $value = $list[$i+1]
        $tuple | add-member NoteProperty $name $value
    }

    return $tuple
} 

주제에 대한 블로그 게시물 : http://blogs.msdn.com/jaredpar/archive/2007/11/29/tuples-in-powershell.aspx#comments

다른 팁

간단한 방법은 먼저 해시 가능 (V1에서 사용 가능)입니다.

$obj = @{}
$obj.x = 1
$obj.y = 2

둘째, psobject입니다 (v2에서 더 쉽습니다)

$obj = new-object psobject -property @{x = 1; y =2}

그것은 당신에게 대략 같은 객체를 제공하지만, 정렬/그룹/형식/내보내기를 원한다면 psobjects는 더 좋습니다.

죄송합니다. 선택한 답변이 좋지만 Hacky One Line 답변에 저항 할 수 없었습니다.

New-Object PsObject | Select-Object x,y | %{$_.x = 12; $_.y = 50; $foo = $_; }

당신은 다음과 같이 할 수 있습니다 :

$point = New-Object Object |
    Add-Member NoteProperty x ([int] 12) -passThru |
    Add-Member NoteProperty y ([int] 15) -passThru

다른 곳에서 귀하의 의견 중 하나와 관련하여 사용자 정의 객체는 해시 테이블보다 더 유용 할 수 있습니다. 객체가 이름이 지정된 속성을 기대하는 CMDLETS에서 더 잘 작동하기 때문입니다. 예를 들어:

$mypoints | Sort-Object y   # mypoints sorted by y-value
$point = "" | Select @{Name='x'; Expression={12}} ,@{Name='y'; Expression={15}}

또는 더 직관적으로

$point = "" | Select x,y
$point.x=12; $point.y=15
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top