【问题标题】:Forcing a powershell script to the next line将 powershell 脚本强制到下一行
【发布时间】:2018-02-08 03:09:31
【问题描述】:

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

【问题讨论】:

  • 我建议您注意Get-Help Start-Process -Full 的输出。
  • 谢谢你,我可以问一个更准确的问题并在这里找到我的解决方案:stackoverflow.com/questions/17776426/… 我使用了 Start-Process Powershell -ArgumentList "C:/archive/script $ProjectName"
  • 你应该删除这个问题
  • 我的意思是我能够更具体地在谷歌上搜索我正在寻找的内容并弹出该线程
  • 那么你找到解决方案了吗?

标签: powershell


【解决方案1】:

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

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

如何在不使用作业的情况下并行运行我的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2010-12-15
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多