最新版本的Powershell是否能够执行类似JavaScript的操作:
var point = new Object(); point.x = 12; point.y = 50;
如果没有,那等价或解决方法是什么?
更新
阅读所有评论
通过add-member cmdlet可以直接支持该语法的功能.前一段时间,我将这个功能包装在一个通用的元组函数中.
这将使您能够一行创建这些对象.
$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}
它为您提供了大致相同的对象,但如果您想对它们进行排序/分组/格式化/导出,则psobject会更好
对不起,即使选择的答案是好的,我也无法抗拒这个hacky one line的回答:
New-Object PsObject | Select-Object x,y | %{$_.x = 12; $_.y = 50; $foo = $_; }