我有一个 Powershell 脚本,我在其中调用了一个名为 generate_html 的函数。
有没有办法调用函数而不是在继续下一个函数调用之前等待它的返回?
我宁愿不必将其分解为多个脚本并同时运行这些脚本。
function generate_html($var)
{
...
}
generate_html team1
generate_html team2
最佳答案
您可以使用 Start-Job
将方法作为异步作业启动。 cmdlet。
所以,你会做这样的事情:
function generate_html($var)
{
#snipped
}
Start-Job -ScriptBlock { generate_html team1 }
如果您需要监视作业是否完成,请存储 Start-Job 的输出或使用
Get-Job
在当前 session 中开始所有工作,取出您想要的工作。一旦你有了,检查
State
属性来查看值是否为 Finished
编辑 :
实际上,我的错误是,作业将在另一个线程中,因此在您开始作业的线程中定义或不可用的函数(不在 powershell 知道的模块中)不可用。
尝试将您的函数声明为脚本 block :
$generateHtml = {
param($var)
#snipped
}
Start-Job -ScriptBlock $generateHtml -ArgumentList team1
Start-Job -ScriptBlock $generateHtml -ArgumentList team2
关于Powershell:不要等待函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681862/