我已经在我的脚本中创建了一个工作流程,该工作流程在网络上发布了" tails"应用程序的日志。我正在寻找错误标记以采取纠正措施并提醒帮助台Send-Spark
功能
由于某种原因,foreach只是"拖尾"一个数组项而不是并行的所有数组项。
workflow Get-Tails {
param ($POS)#Array with terminal names
ForEach -parallel ($item in $POS)
{
write-host "Scanning "$item -ForegroundColor red -BackgroundColor white
Get-Content -Path "\\$item\c$\path\to\logs\Agent.log" -Tail 1 -Wait | % {if ($_ -match '<Status Code="NotReady">') {Send-Spark $item}}
}
}
我不知道自己做错了什么。有一个更好的方法吗?
答案 0 :(得分:0)
`我希望你必须使用inlinescript命令来执行你在foreach-parallel循环中保存的命令。
我修改了你的代码。
步骤1:执行以下powershell代码以创建工作流程
工作流程Get-Tails {
param($ POS)#Array,终端名称为
ForEach -parallel($ POS中的$ item)
{
将InlineScript {
写主机(&#34;扫描&#34; + $使用:项目)-ForegroundColor red -BackgroundColor white
Get-Content -Path&#34; \ $使用:item \ c $ \ path \ to \ logs \ Agent.log&#34; -Tail 1 -Wait | %{if($ _ -match&#39;&#39;){Send-Spark $ Using:item}}
}
}
}
第2步:在powershell中调用工作流程
获取尾巴
带输出的示例执行:
PS C:\ windows \ system32&gt;工作流程测试
{
$ a = @(1,2,3,4,5,6,7,8,9,10)
Foreach -Parallel($ i in $ a)
{
InlineScript {&#34;内联A1 = $使用:i&#34;}
}
}
PS C:\ windows \ system32&gt;测试
内联A1 = 7
内联A1 = 8
内联A1 = 6
内联A1 = 10
内联A1 = 9
内联A1 = 3
内联A1 = 5
内联A1 = 2
内联A1 = 4
内联A1 = 1
`
如果您需要任何帮助,请告诉我
请访问以获取更多信息:
https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_foreach-parallel?view=powershell-5.1