获取PowerShell循环中当前项目的索引?

鉴于PowerShell中的项目列表,如何find循环内的当前项目的索引?

例如:

$letters = { 'A', 'B', 'C' } $letters | % { # Can I easily get the index of $_ here? } 

所有这一切的目标是我想要使用Format-Table输出一个集合,并添加一个包含当前项目索引的初始列。 这样人们可以交互式地select一个项目来select。

不知道这是可能的一个“自动”variables。 你总是可以为自己申报一个,并增加它

 $letters = { 'A', 'B', 'C' } $letters | % {$counter = 0}{...;$counter++} 

或者使用for循环来代替…

 for ($counter=0; $counter -lt $letters.Length; $counter++){...} 

.NET在System.Array中有这样的事情的一些方便的实用方法:

 PS> $a = 'a','b','c' PS> [array]::IndexOf($a, 'b') 1 PS> [array]::IndexOf($a, 'c') 2 

在评论中上述方法的好处。 除了在数组中find一个项的索引之外,考虑到问题的上下文,这可能更适合:

 $letters = { 'A', 'B', 'C' } $letters | % {$i=0} {"Value:$_ Index:$i"; $i++} 

Foreach(%)可以有一个执行一次的Begin sciptblock。 我们在那里设置了一个索引variables,然后我们可以在退出脚本块之前在脚本块中引用它。

有一个内置:)

 foreach ($item in $array) { $array.IndexOf($item) } 
 0..($letters.count-1) | foreach { "Value: {0}, Index: {1}" -f $letters[$_],$_}