将值附加到Powershell对象

时间:2016-09-15 21:02:55

标签: powershell object powershell-v4.0

我有一个PS对象,无法找到一种方法将值附加到我的对象。

$object = New-Object PSObject
Add-Member -InputObject $object -MemberType NoteProperty -Name Col1 -Value ""
Add-Member -InputObject $object -MemberType NoteProperty -Name Col2 -Value ""
Add-Member -InputObject $object -MemberType NoteProperty -Name Type -Value ""
1..10 |ForEach{
    $src=$_
    11..20 | ForEach{
        $dst = $_
        $object.Col1=$src
        $object.Col2=$dst
        $object.Type="New"
    }    
}

我希望我的结果像

col1  col2  Type
----  ----  ----
   1    11  New
   1    12  New
   1    13  New
   1    14  New
...

2 个答案:

答案 0 :(得分:1)

使用PS 自定义对象:

let views: [String:UIView] = ["view":aView]
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "...", options:[], metrics: metrics, views: views))

答案 1 :(得分:0)

您想要的输出是对象的列表,而不是单个对象。您可以通过在循环内创建对象来生成它。 @Burt_Harris已经向您展示了一种方法(使用类型加速器[PSCustomObject]),但当然您也可以使用New-Object到同一端:

$list = 1..10 | ForEach-Object {
    $src = $_
    11..20 | ForEach-Object {
        $prop = @{
            Col1 = $src
            Col2 = $_
            Type = 'New'
        }
        New-Object -Type PSObject -Property $prop
    }
}

如果希望属性在输出中以特定顺序出现(仅限PowerShell v3和更新版本),请将属性哈希表创建为有序哈希表:

$prop = [ordered]@{
    Col1 = $src
    Col2 = $_
    Type = 'New'
}

可以通过将管道输出分配给变量($list = ...)来捕获对象列表。