我怎样才能使 foreach 循环在 powershell 中运行,即使函数被调用但尚未在其中完成。?

How can i make foreach loop runing in powershell even a function is called and not yet completed inside it.?

我在 foreach 循环中有一个函数调用,我不想等到该函数完成并需要创建我的 foreach 循环 运行,所以我可以在 powershell 中实现多线程概念。 这可能吗? 请指导谢谢

foreach ($folders in $txtfilepath)

ftp_upload1 $foldertemp $Freelancername $articleid $Freelancermailfinal

因为这是一个上传功能,有时等待时间更长,所以我需要以多线程的方式工作,这样它会尽快处理所有上传请求。

您应该考虑使用 PowerShell 后台作业。它的工作原理如下:

foreach ($folders in $txtfilepath) {
    Start-Job -ScriptBlock {
       ftp_upload1 $foldertemp $Freelancername $articleid $Freelancermailfinal
    }
}

但您可能希望收到结果等,因此请查看 about_jobs

您可能需要考虑使用 ForEach-Object -Parallel 开关:

Windows PowerShell 5.1 https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_foreach-parallel?view=powershell-5.1

PowerShell Core 7.0 预览版 5 https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Core/ForEach-Object?view=powershell-7

所以我终于得到了答案。

$FOO = {write-host "HEY"}
Start-Job -ScriptBlock $FOO | wait-job |Receive-Job

参数化脚本块

$foo = {param($bar) write-host $bar}
Start-Job -ScriptBlock $foo -ArgumentList "HEY" | wait-job | receive-job

毫无疑问,我是从其他 post 那里复制的,这里是 Link