【发布时间】:2021-01-25 12:09:03
【问题描述】:
如果您正在迭代一个数组,使用 Write-Progress 很容易提供反馈,因此:
$items = @('a', 'b', 'c')
foreach ($item in $items) {
Write-Progress -Activity 'Foo' -PercentComplete ($items.IndexOf($item) * 100 / $items.Count) -CurrentOperation $item
Start-Sleep 2
}
在迭代哈希时是否可以使用类似的技巧?
$items = @{'x' = 'a'; 'y' = 'b'; 'z' = 'c'}
foreach ($item in $items.GetEnumerator()) {
Write-Progress ...
Start-Sleep 2
}
我仍然可以访问$items.count,但似乎没有办法从枚举器中获取项目的索引。
我很感激我可以很简单地在开头声明 $i=0 并将 $i++ 包含在循环中,但是还有其他方法吗?
【问题讨论】:
-
嗯...我不确定我是否做对了。您可以在循环内通过
$item.Name访问键和通过$item.Value访问值 -
没有索引,因为哈希表不保留任何项目的顺序。请改用计数器变量。
标签: powershell hashtable