如何在 PowerShell 中同时 运行 2 个方法

How to run 2 methods simultaneously in PowerShell

我有两个函数,每个函数我都想运行在后台监控用户行为。这些功能本身运行良好;但是,我似乎无法弄清楚如何调用它们同时进行工作。在 UNIX 中,我会简单地使用 fork() 并完成它,但我正在努力 PS.

#start-job -ScriptBlock $(func1) 
#start-job -ScriptBlock $(func2)

因为每个函数 运行 在无限的时间内,第二行实际上并没有被调用,只有第一个函数在做任何工作。

我已经尝试使用 [diagnostics.process] 中的 start-job、invoke-command、start-process 和 start 方法。我的直觉告诉我,我没有正确理解 start-job 的作用,因为如果它在后台进程中执行 运行 func1,那么就没有理由阻止这个顶级脚本。如有任何帮助,我们将不胜感激!

使用此语法 ${function:Function-Name} 引用函数的定义:

$job1 = Start-Job -ScriptBlock ${function:func1}
$job2 = Start-Job -ScriptBlock ${function:func2}

首先你应该使用脚本块来调用里面的函数。

其次,函数必须在 InitializationScript 块中声明,否则 Start-job 将无法理解要调用哪个函数。

尝试这样的事情:

start-job -InitializationScript {
    #--Define function1 here
    } -ScriptBlock {func1} 

start-job -InitializationScript {
#define your  function2 here
} -ScriptBlock {func2}