PowerShell多线程执行前后台作业的例子

 更新时间:2014年04月16日 11:42:00   作者:  
使用后台作业执行多个任务从先前的技巧中看不是非常高效,它在处理每个后台作业返回结果时将会浪费很多性能。一个更有效的方法是使用进程内的任务。他能分别单独的执行任务与Powershell类似,所以它不是按顺序返回值的

下面例子使用Powershell线程运行了两个后台任务和一个前台任务,创建几个运行时间长点的任务,并且每个任务命令中添加使用Start-Sleep。

复制代码 代码如下:

$start = Get-Date

$task1 = { Start-Sleep -Seconds 4; Get-Service }
$task2 = { Start-Sleep -Seconds 5; Get-Service }
$task3 = { Start-Sleep -Seconds 3; Get-Service }

# run 2 in separate threads, 1 in the foreground
$thread1 = [PowerShell]::Create()
$job1 = $thread1.AddScript($task1).BeginInvoke()

$thread2 = [PowerShell]::Create()
$job2 = $thread2.AddScript($task2).BeginInvoke()

$result3 = Invoke-Command -ScriptBlock $task3

do { Start-Sleep -Milliseconds 100 } until ($job1.IsCompleted -and $job2.IsCompleted)

$result1 = $thread1.EndInvoke($job1)
$result2 = $thread2.EndInvoke($job2)

$thread1.Runspace.Close()
$thread1.Dispose()

$thread2.Runspace.Close()
$thread2.Dispose()

$end = Get-Date
Write-Host -ForegroundColor Red ($end - $start).TotalSeconds

相继执行这3个任务从Start-Sleep中看至少需要花费12秒。但是这个脚本仅执行了5秒多一点。其结果保存为$result1, $result2和$result3。与后台作业对比,它在返回大数据用时将差不多。

文章出处:http://www.pstips.net/

相关文章

  • Powershell小技巧之使用WMI查询插上的U盘

    Powershell小技巧之使用WMI查询插上的U盘

    本文主要讲诉了如何使用WMI查询当前插在你电脑上的USB设备,非常简单,学习powershell的同学可以参考下
    2014-09-09
  • Powershell实现捕获系统内置EXE程序的异常

    Powershell实现捕获系统内置EXE程序的异常

    这篇文章主要介绍了Powershell实现捕获系统内置EXE程序的异常,系统内置的EXE程序是指如robocopy.exe、ipconfig.exe等命令的实现程序,需要的朋友可以参考下
    2014-12-12
  • PowerShell小技巧之配置机器的静态IP

    PowerShell小技巧之配置机器的静态IP

    本文主要介绍了利用PowerShell配置静态IP地址的方法以及示例,有需要的朋友参考下
    2014-09-09
  • PowerShell小技巧之查找获取注册表路径

    PowerShell小技巧之查找获取注册表路径

    这篇文章主要介绍了在PowerShell中使用递归查找获取注册表路径的小技巧,有需要的朋友可以参考下
    2014-09-09
  • 25个常用PowerShell命令总结

    25个常用PowerShell命令总结

    这篇文章主要介绍了25个常用的PowerShell命令总结,本文分为入门级别、收集信息、软件管理三大类常用的PowerShell命令,需要的朋友可以参考下
    2014-10-10
  • PowerShell 语音计算器实现代码

    PowerShell 语音计算器实现代码

    带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币的相关资料
    2017-10-10
  • 自定义PowerShell控制台提示符风格的方法

    自定义PowerShell控制台提示符风格的方法

    这篇文章主要介绍了自定义PowerShell控制台提示符风格的方法,需要的朋友可以参考下
    2014-04-04
  • Windows Powershell 变量的幕后管理

    Windows Powershell 变量的幕后管理

    如果在Powershell中输出一个变量,只会输出这个变量的值。不能够显示它的其它信息,如果想查看一个变量的其它保留信息,就需要变量的基类PSVariable对象,这个可以通过Get-Variable命令得到
    2014-09-09
  • 详谈Ubuntu PowerShell(小白入门必看教程)

    详谈Ubuntu PowerShell(小白入门必看教程)

    下面小编就为大家带来一篇详谈Ubuntu PowerShell(小白入门必看教程)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Powershell小技巧之创建短网址

    Powershell小技巧之创建短网址

    短网址服务,可能很多朋友都已经不再陌生,特别是在微博应用中十分普遍,比如,当我们在腾讯、新浪微博发微博时有时发很长的网址连接,但由于微博只限制140个字,所以微博就自动把您发的长网址给转换成短网址了。今天我们来探讨下,如何用powershell来便捷的使用短网址
    2014-10-10

最新评论