Powershell:不要等待函数返回

标签 powershell parallel-processing

我有一个 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/

相关文章:

powershell - 在 Powershell 中,如何传递 IEnumerable 参数?

powershell - $ PROFILE环境变量有问题吗?

c - 我们如何根据 c 中的行设置文件指针新位置

python - 确保两条消息来自同一 MPI 任务

c++ - OpenMP:用锁替换临界区

multithreading - 我如何总结使用 Rust 从 1 到 1000000 的并发性?

powershell - 注销多个空闲用户

powershell - 如何在 Powershell Get-Process 中实现 'Wait' 模式

powershell - 使用 PowerShell 的日期差异

java - 在多个主机上使用Java中的zip算法压缩文件