.net Foreach在工作流并行中反向工作
输出:.net Foreach在工作流并行中反向工作,.net,powershell,.net,Powershell,输出: workflow test($a) { foreach –parallel ($item in $a){ Write-Output $item } } test ("1", "2", "3", "4") 为什么foreach从末尾开始提取项目???这是因为您在foreach中使用了-Parallel 4 3 2 1 工作流测试字符串($a){ foreach($a中的
workflow test($a) {
foreach –parallel ($item in $a){
Write-Output $item
}
}
test ("1", "2", "3", "4")
为什么foreach从末尾开始提取项目???这是因为您在foreach中使用了-Parallel
4
3
2
1
工作流测试字符串($a){
foreach($a中的项目){
写入输出$item
}
}
测试字符串(“1”、“2”、“3”、“4”)
#结果
。。。根据帮助文件,工作流具有并行实现:
并行执行
Windows PowerShell工作流的一个优点是能够
并行执行一组命令,而不是按顺序执行
典型的剧本。这在Runbook中特别有用,因为它们
可能会执行多个需要很长时间才能完成的操作。
例如,runbook可能提供一组虚拟机。
而不是一个一个地依次执行每个资源调配过程
另一方面,可以同时执行这些操作
总体效率。只有当一切都完成后,运行手册才能运行
继续
您可以使用Parallel关键字创建脚本块
将同时运行的多个命令。这使用了语法
如下所示。在这种情况下,Activity1和Activity2将在
同时。活动3仅在活动1和之后启动
活动2已完成
因此,以你的例子:
workflow testStrings($a) {
foreach ($item in $a){
Write-Output $item
}
}
testStrings ("1", "2", "3", "4")
# Results
<#
1
2
3
4
#>
工作流测试字符串($a){
平行的
{
foreach($a中的项目){
写入输出$item
}
}
}
测试字符串(“1”、“2”、“3”、“4”)
#结果
工作流测试($a){
平行的
{
foreach($a中的项目){
写入输出$item
}
}
}
测试(1,2,3,4)
#结果
或者这个片段
Sequence关键字用于在一个命令行中按顺序运行命令
并行脚本块。序列脚本块与并行运行
其他命令,但块内的命令按顺序运行。
这使用如下所示的语法
在本例中,Activity1、Activity2和Activity3将在
同时
只有在Activity3完成后,Activity4才会启动。活动5
将在所有其他活动完成后开始
并行
{
序列
{
}
}
在第二个ur代码(共3个)中,它将仅是一个活动,对吗?请查看文档,它是关于序列的特定内容。我只是抛出了你的代码示例,以保持与发布文档中显示的相同代码的一致性。我现在将改变这一点,以消除其他人对本问答的困惑
workflow testStrings($a) {
Parallel
{
foreach ($item in $a){
Write-Output $item
}
}
}
testStrings ("1", "2", "3", "4")
# Results
<#
1
2
3
4
#>
workflow testInt($a) {
Parallel
{
foreach ($item in $a){
Write-Output $item
}
}
}
testInt (1, 2, 3, 4)
# Results
<#
1
2
3
4
#>
Parallel
{
<Activity1>
<Activity2>
Sequence
{
<Activity3>
<Activity4>
}
}
<Activity5>