0

我正在尝试使用 Powershell 工作流程和一些我需要并行完成的工作来让我的脚湿透。

在遇到第一个障碍之前我没有走多远,但我不明白我在这里做错了什么:

$operations = ,("Item0", "Item1")

ForEach ($operation in $operations) {
    Write-Output "Item0: $($operation.Item(0)) Item1: $($operation.Item(1))"
}

workflow operationsWorkflow{
    Write-Output "Running Workflow"
    $operations = ,("Item0", "Item1")
    ForEach -Parallel ($operation in  $operations) {
        #Fails: Method invocation failed because [System.String] does not contain a method named 'Item'.
        #Write-Output "Item0: $($operation.Item(0)) Item1: $($operation.Item(1))"

        Write-Output "Item $operation"
    }
}

operationsWorkflow
4

1 回答 1

0

问题解决了,感谢这篇关于 powershell 阵列的优秀文章

现在,由于它已经是一个数组,再次转换它不会导致第二级嵌套:

PS (66) > $a = [数组] [数组] 1

PS (67) > $a[0]

1

但是使用 2 个逗号确实会嵌套数组,因为它是数组构造操作:

PS (68) > $a = ,,1

PS (69) > $a[0][0]

1

鉴于此,这很好用:

workflow operationsWorkflow{
    Write-Output "Running Workflow"
    $operations = ,,("Item0", "Item1")
    ForEach -Parallel ($operation in  $operations) {
            Write-Output "Item0: $($operation.Item(0)) Item1: $($operation.Item(1))"
    }
}

operationsWorkflow

但是,如果在工作流之外添加第二个逗号,则会出现错误。所以这是一个workflowparallel特定的问题和解决方法。

于 2016-07-06T00:54:17.057 回答