索引和哈希表

时间:2012-03-20 07:44:52

标签: arrays loops powershell

我在使用以下代码创建作业时添加了哈希表:

$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
    } 

如何循环并引用我的数组?

2 个答案:

答案 0 :(得分:3)

这是因为在设置时使用的是整数,但是为了让您使用字符串(作业的名称是字符串,因此作业的名称将为"1""2"等,而不是12

在设置时执行以下操作:

$jobtimer["$_"] = [System.Diagnostics.Stopwatch]::StartNew()

或者在获得以下内容时执行以下操作:

$jobtimer[[int]$_.name]

答案 1 :(得分:2)

在访问数组时将字符串中的转换添加到int:

get-job | foreach { $jobtimer[[int]$_.name] }