multithreading - Powershell 可以并行运行命令吗?

标签 multithreading powershell parallel-processing

我有一个 powershell 脚本来对一堆图像进行一些批处理,我想做一些并行处理。 Powershell 似乎有一些后台处理选项,例如启 Action 业、等待作业等,但我发现用于并行工作的唯一好的资源是编写脚本文本并运行它们( PowerShell Multithreading )

理想情况下,我想要类似于 .net 4 中的并行 foreach 的东西。

一些看起来很不起眼的东西,例如:

foreach-parallel -threads 4 ($file in (Get-ChildItem $dir))
{
   .. Do Work
}

也许我最好直接转向 c#...

最佳答案

您可以使用 Background Jobs 在 Powershell 2 中执行并行作业。查看Start-Job以及其他作业 cmdlet。

# Loop through the server list
Get-Content "ServerList.txt" | %{

  # Define what each job does
  $ScriptBlock = {
    param($pipelinePassIn) 
    Test-Path "\\$pipelinePassIn\c`$\Something"
    Start-Sleep 60
  }

  # Execute the jobs in parallel
  Start-Job $ScriptBlock -ArgumentList $_
}

Get-Job

# Wait for it all to complete
While (Get-Job -State "Running")
{
  Start-Sleep 10
}

# Getting the information back from the jobs
Get-Job | Receive-Job

关于multithreading - Powershell 可以并行运行命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016451/

相关文章:

消费者-生产者。没有错误。有时工作。为什么?

PowerShell stderr 重定向到文件插入换行符

带有多个附件的电子邮件

git - 使用 GitHub for Windows 从 pagodabox 克隆应用程序

java - 检查 Android 中另一个线程中的任务是否已经完成

C++ winapi-单击按钮上的新线程导致 fatal error

java - 提前/快速启动 ScheduledThreadPoolExecutor 中的任务

java - 这是 Files.lines() 中的错误,还是我对并行流有误解?

c# - 从 Bitmap 类的颜色填充 160x43 字节数组的更快方法

algorithm - 从 mapreduce 中的 n 个元素中选择 k