PowerShell의 스트러크 또는 물체 2
-
22-07-2019 - |
문제
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
PowerShell에서 객체를 만드는 방법
http://blogs.msdn.com/powershell/archive/2009/03/11/how-to-create-an-object-in-powershell.aspx
$point = "" | Select @{Name='x'; Expression={12}} ,@{Name='y'; Expression={15}}
또는 더 직관적으로
$point = "" | Select x,y
$point.x=12; $point.y=15