使用Select-Object输出索引

时间:2017-03-06 11:26:21

标签: powershell

使用LINQ Select方法的一个重载,我可以使用item的索引构造一个新类型作为属性之一:

var lst = new List<int>() {1,1,2,3,5};
var selected = lst.Select((x,index) => new {
    number = x,
    index
});

是否可以使用Select-Object将当前索引包含为输出对象的属性之一?

# $selected.Visual is a WPF Grid
$selected.Visual.ColumnDefinitions | Select-Object -Property Width, MinWidth, MaxWidth, ActualWidth

2 个答案:

答案 0 :(得分:1)

我怀疑你是否可以访问索引,但是你可以将输出传递给Foreach-Object cmdlet并自己计算索引:

$selected.Visual.ColumnDefinitions | ForEach-Object -Begin {$idx = 0} -Process {
    $_ | Select-Object Width, MinWidth, MaxWidth, ActualWidt, @{l='index'; e={$idx}}
    $idx += 1
}

答案 1 :(得分:1)

另一个选择是使用自动递增的变量,因此不需要循环:

$index = 0
$selected.Visual.ColumnDefinitions | Select-Object -Property @{n="index";e={(++$Script:index)}}, Width, MinWidth, MaxWidth, ActualWidt

在脚本范围改性剂是必要的用于更新索引的值。

相关问题