• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Powershell后台作业、异步操作实例

    Powershell是单线程程序且一次只能做一件事情。后台作业能额外增加Powershell进程在后台处理作业。当需要程序同时运行且数据量不是很大时它能很好的解决问题。但从Powershell后台回传数据是一个非常麻烦的工作,它将浪费很多时间。将会导致脚本更慢。

    这里有3个并发执行任务:

    复制代码 代码如下:

    $start = Get-Date

    # get all hotfixes
    $task1 = { Get-Hotfix }

    # get all scripts in your profile
    $task2 = { Get-Service | Where-Object Status -eq Running }

    # parse log file
    $task3 = { Get-Content -Path $env:windir\windowsupdate.log | Where-Object { $_ -like '*successfully installed*' } }

    # run 2 tasks in the background, and 1 in the foreground task
    $job1 =  Start-Job -ScriptBlock $task1
    $job2 =  Start-Job -ScriptBlock $task2
    $result3 = Invoke-Command -ScriptBlock $task3

    # wait for the remaining tasks to complete (if not done yet)
    $null = Wait-Job -Job $job1, $job2

    # now they are done, get the results
    $result1 = Receive-Job -Job $job1
    $result2 = Receive-Job -Job $job2

    # discard the jobs
    Remove-Job -Job $job1, $job2

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

    上面执行全部的任务消耗了5.9秒。三个任务的结果将分别存入$result1, $result2, 和 $result3.
    让我们再继续查看相继在前台执行完命令需要多长时间:

    复制代码 代码如下:

    $start = Get-Date

    # get all hotfixes
    $task1 = { Get-Hotfix }

    # get all scripts in your profile
    $task2 = { Get-Service | Where-Object Status -eq Running }

    # parse log file
    $task3 = { Get-Content -Path $env:windir\windowsupdate.log | Where-Object { $_ -like '*successfully installed*' } }

    # run them all in the foreground:
    $result1 = Invoke-Command -ScriptBlock $task1
    $result2 = Invoke-Command -ScriptBlock $task2
    $result3 = Invoke-Command -ScriptBlock $task3

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

    结果,这次只花费了5.05秒。与后台作业几乎同时完成,所以后台作业更适合解决长时间执行的任务。从三个任务返回的数据观察,好处是这种按顺数在前台获得数据能减少了执行过程的开销。

    您可能感兴趣的文章:
    • PowerShell快速创建一个指定大小文件的实例分享
    • PowerShell 获取系统信息的函数
    上一篇:PowerShell快速创建一个指定大小文件的实例分享
    下一篇:PowerShell多线程执行前后台作业的例子
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Powershell后台作业、异步操作实例 Powershell,后台,作业,异步,