强制PowerShell脚本到下一行

时间:2018-02-07 18:38:36

标签: powershell

我有一个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个脚本生成的数据。它只是通过传入数据

来执行它们

1 个答案:

答案 0 :(得分:0)

老实说,根据您的用例描述,您真的想要查看并行作业/任务/脚本处理。

这是一篇关于应该满足你的目标的帖子。

  

如何在不使用Jobs的情况下并行运行PowerShell脚本?

     

更新 - 虽然这个答案解释了过程和机制   PowerShell运行空间以及它们如何帮助您实现多线程   非顺序工作负载,PowerShell爱好者Warren'Cookie   Monster'F已经加倍努力,并将其纳入其中   将概念转换为一个名为Invoke-Parallel的工具 - 它就是我做的事情   在下面描述,然后他用可选开关扩展了它   用于记录和准备会话状态,包括导入的模块,   非常酷的东西 - 我强烈建议你先检查一下   建立你自己的闪亮解决方案!

     

https://serverfault.com/questions/626711/how-do-i-run-my-powershell-scripts-in-parallel-without-using-jobs