【问题标题】:How to run multiple Powershell Scripts at the same time?如何同时运行多个 Powershell 脚本?
【发布时间】:2016-08-09 23:18:12
【问题描述】:

所以我有两个 .ps1 脚本,每 60 秒检查一次新任务,我想同时运行它们。我每天都使用它们,启动它们有点烦人。 理想情况下,我想编写一个我可以运行的脚本,为我运行这两个脚本。

问题在于,由于它们不会在某个时候停止,因此我不能一个接一个地启动它们,也找不到打开新 PS ISE 实例的命令。但是,一个实例不能同时运行两个脚本。 Ctrl+T 选项会很完美,但我找不到等效的命令。

有人知道如何解决这个问题吗? 谢谢!

【问题讨论】:

  • 是否需要在 ISE 中运行这两个脚本?如果是:为什么?
  • 是的,因为它们都加载了本地模块...
  • 您可以在没有 ISE 的情况下加载模块。 link

标签: powershell


【解决方案1】:

我认为你想要的是类似的东西

Start-Process Powershell.exe -Argumentlist "-file C:\myscript.ps1"
Start-Process Powershell.exe -Argumentlist "-file C:\myscript2.ps1"

除此之外:在脚本中使用Import-Module $Modulepath 以确保模块的可用性。

【讨论】:

    【解决方案2】:

    如果你有 Powershell 3.0+,你可以使用workflows。它们类似于函数,但具有可以并行运行命令的优点。

    所以你的工作流程应该是这样的:

    workflow RunScripts {
        parallel {
            InlineScript { C:\myscript.ps1 }   
            InlineScript { C:\myotherscript.ps1 }
        }
    }
    

    请记住,工作流的行为类似于函数。所以需要先加载到缓存中,然后通过RunScripts命令调用。

    更多信息: https://blogs.technet.microsoft.com/heyscriptingguy/2013/01/09/powershell-workflows-nesting/

    【讨论】:

    • 然而,应该提到的是,并非所有 cmdlet 在工作流中都受支持,并且找出脚本在工作流中无法按预期工作的原因可能是 *.尽管如此,工作流程还是很棒的,但如果开发内部代码时考虑到“应该在工作流程中运行”这一思想,则会更有趣。
    【解决方案3】:

    使用 CTRL+T 在 Powershell ISE 中创建一个新的 powershell 实例(创建了一个选项卡,我相信它称为 powershell 2)。

    现在,您可以从新的 Powershell 选项卡打开第二个 powershell 脚本并在其他 powershell 选项卡中运行的脚本旁边运行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-06
      • 2020-02-19
      • 2016-03-07
      • 2017-05-08
      • 2023-04-07
      • 2021-06-06
      相关资源
      最近更新 更多