我有一个powershell脚本,它一次会调用另外两个PowerShell脚本来运行。它运行一个脚本完成,然后另一个,但这会导致它需要更长的时间。我可以强制脚本执行其他脚本并继续循环吗?当我以前手动运行这些脚本时,我会运行20-30个会话,并在它工作时离开。我写的内容是手动点击它们的单调
这是父脚本:
$List = Get-Content C:\archive\${env:id}.txt
$Batch = New-Object System.Collections.ArrayList
foreach ($Data in $List){
if ($Data -eq "" -or $data -eq $List[-1]){
$ProjectName = $Batch[0]
out-file C:\archive\"$ProjectName".txt
foreach($Data in $Batch -ne $Batch[0]){
Add-Content -Path C:\archive\"$ProjectName".txt -Exclude
$Batch[0] -Value $Data
}
--> C:\archive\GetPrograms.ps1 $ProjectName
--> C:\archive\GetNetwork.ps1 $ProjectName
$Batch = New-Object System.Collections.ArrayList
}
else{
[void]$Batch.Add($Data)
}
}
父脚本不依赖于其他2个脚本生成的数据。它只是通过传入数据
来执行它们答案 0 :(得分:0)
老实说,根据您的用例描述,您真的想要查看并行作业/任务/脚本处理。
这是一篇关于应该满足你的目标的帖子。
如何在不使用Jobs的情况下并行运行PowerShell脚本?
更新 - 虽然这个答案解释了过程和机制 PowerShell运行空间以及它们如何帮助您实现多线程 非顺序工作负载,PowerShell爱好者Warren'Cookie Monster'F已经加倍努力,并将其纳入其中 将概念转换为一个名为Invoke-Parallel的工具 - 它就是我做的事情 在下面描述,然后他用可选开关扩展了它 用于记录和准备会话状态,包括导入的模块, 非常酷的东西 - 我强烈建议你先检查一下 建立你自己的闪亮解决方案!