我在使用以下代码创建作业时添加了哈希表:
$jobtimer = @{}
1..10 | foreach {
Start-Job -name $_ -ScriptBlock {
Start-Sleep -Seconds (Get-Random -Minimum 456 -Maximum 46546520)
}
$jobtimer[$_] = [System.Diagnostics.Stopwatch]::StartNew()
}
(谢谢@mjolinor顺便帮忙!)
然后我遍历我的工作并获取每个工作的时间。但是我在读取数组的值时遇到了问题。如果我直接引用它的工作原理:
$jobtimer[4].elapsed.totalseconds
但如果我试图循环我的工作并输出经过的时间,我什么也得不到:
get-job | foreach {
echo $jobtimer[$_.name].elapsed.totalseconds
}
如何循环并引用我的数组?
答案 0 :(得分:3)
这是因为在设置时使用的是整数,但是为了让您使用字符串(作业的名称是字符串,因此作业的名称将为"1"
,"2"
等,而不是1
,2
。
在设置时执行以下操作:
$jobtimer["$_"] = [System.Diagnostics.Stopwatch]::StartNew()
或者在获得以下内容时执行以下操作:
$jobtimer[[int]$_.name]
答案 1 :(得分:2)
在访问数组时将字符串中的转换添加到int:
get-job | foreach { $jobtimer[[int]$_.name] }