如何在 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}
我有两个函数,每个函数我都想运行在后台监控用户行为。这些功能本身运行良好;但是,我似乎无法弄清楚如何调用它们同时进行工作。在 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}