我有两个功能,每个功能都要在后台监控用户行为中运行。功能本身运作良好;但是,我似乎无法弄清楚如何同时调用它们来做同事。在UNIX中,我只是使用fork()并完成它,但我正在与PS挣扎。
#start-job -ScriptBlock $(func1)
#start-job -ScriptBlock $(func2)
因为每个函数都是无限运行的,所以第二行实际上并没有被调用,只有第一个函数实际上正在进行任何工作。
我尝试在[diagnostics.process]中使用start-job,invoke-command,start-process和start方法。我的直觉告诉我,我没有正确理解启动作业的作用,因为如果它在后台进程中运行了func1,那么就没有理由阻止这个顶级脚本。任何帮助将不胜感激!
答案 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}