是否Powershell的最新版本必须做类似JavaScript的能力:

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

如果没有,什么是等效或解决方法吗?

<强>更新结果 读取所有评论

有帮助吗?

解决方案

不直接通过功能支持的语法是那里通过附加构件小命令的。一段时间以前,我在通用元组功能包裹此功能。

这会给你创建这些对象的能力一行。

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

下面是用于新元组

的代码
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也比较好/组/格式/导出,

对不起,即使所选择的答案是好的,我无法抗拒的哈克一行答案:

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

关于您的意见一个其他地方,因为他们与期待的对象有命名属性的cmdlet更好的工作,自定义对象可能会比哈希表更加有用。例如:

$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