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

时间:2017-09-11 14:38:55

标签: windows powershell start-job

我有两个功能,每个功能都要在后台监控用户行为中运行。功能本身运作良好;但是,我似乎无法弄清楚如何同时调用它们来做同事。在UNIX中,我只是使用fork()并完成它,但我正在与PS挣扎。

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

因为每个函数都是无限运行的,所以第二行实际上并没有被调用,只有第一个函数实际上正在进行任何工作。

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

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

尝试这样的事情:

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

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