亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開發(fā) > PowerShell > 正文

PowerShell中Job相關(guān)命令及并行執(zhí)行任務(wù)詳解

2020-03-26 18:52:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

在 PowerShell 中可以輕松的執(zhí)行后臺(tái)任務(wù)并且讓多個(gè)后臺(tái)任務(wù)并行執(zhí)行。本文介紹 PowerShell 中 Job 相關(guān)的一些命令,并通過(guò) demo 演示如何在后臺(tái)同時(shí)執(zhí)行多個(gè)任務(wù)。下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

PowerShell 中執(zhí)行后臺(tái)任務(wù)的模式

下圖描述了在 PowerShell 中執(zhí)行后臺(tái)任務(wù)的進(jìn)程模型(此圖來(lái)自互聯(lián)網(wǎng)):

powershell,并行,job,命令

首先我們需要一個(gè) PowerShell 進(jìn)程執(zhí)行與用戶交互的命令,比如執(zhí)行 Start-Job 命令運(yùn)行一個(gè)后臺(tái)任務(wù)。每一個(gè)這樣的后臺(tái)任務(wù)都會(huì)在一個(gè)新啟動(dòng)的 PowerShell 進(jìn)程中執(zhí)行。所以,如果我們同時(shí)啟動(dòng)三個(gè)后臺(tái)任務(wù),那么一共有四個(gè) PowerShell 進(jìn)程在同時(shí)運(yùn)行。

Job 相關(guān)的命令

Start-Job 命令會(huì)啟動(dòng)一個(gè)運(yùn)行在后臺(tái)的任務(wù)。注意,每通過(guò) Start-Job 命令運(yùn)行一個(gè)任務(wù)都會(huì)創(chuàng)建一個(gè)單獨(dú)的 PowerShell 進(jìn)程。

Stop-Job 命令用來(lái)停止一個(gè)正在運(yùn)行的后臺(tái)任務(wù)(由 Start-Job 啟動(dòng)的任務(wù))。

Get-Job 命令用來(lái)獲得當(dāng)前 session 中的后臺(tái)任務(wù)對(duì)象。

Wait-Job 命令阻塞當(dāng)前的執(zhí)行流程,等待指定的后臺(tái)任務(wù)執(zhí)行結(jié)束。

Receive-Job 命令用來(lái)獲得后臺(tái)執(zhí)行任務(wù)的執(zhí)行結(jié)果。比如在一個(gè)后臺(tái)任務(wù)結(jié)束時(shí),可以通過(guò) Receive-Job 來(lái)得到結(jié)果,并輸出任務(wù)執(zhí)行時(shí)的 output。

Remove-Job 命令刪除當(dāng)前 session 中的已經(jīng)完成的任務(wù)。當(dāng)一個(gè)任務(wù)運(yùn)行結(jié)束后,它并不會(huì)被自動(dòng)刪除,除非你調(diào)用 Remove-Job 命令進(jìn)行刪除,或者是關(guān)閉這個(gè) session。如果使用 Remove-Job 刪除一個(gè)正在運(yùn)行的任務(wù),命令會(huì)運(yùn)行失敗。此時(shí)需要先使用 Stop-Job 命令先停止任務(wù),然后再用 Remove-Job 進(jìn)行刪除。

在后臺(tái)執(zhí)行任務(wù)

如果只是啟動(dòng)一個(gè)后臺(tái)執(zhí)行的任務(wù),不需要知道任務(wù)執(zhí)行的結(jié)果,也不關(guān)心任務(wù)何時(shí)執(zhí)行結(jié)束,那么僅僅使用 Start-Job 命令啟動(dòng)任務(wù)的執(zhí)行就可以了:

> Start-Job -ScriptBlock { sleep 5 }

啟動(dòng)單個(gè)任務(wù)并等待任務(wù)結(jié)束

多數(shù)情況下我們是需要知道任務(wù)的結(jié)束時(shí)間的,此時(shí)可以通過(guò) Wait-Job 命令阻塞執(zhí)行流程,直到等待的任務(wù)結(jié)束:

> Start-Job -ScriptBlock { sleep 5; Write-Host "Hello world."; } | Wait-Job

powershell,并行,job,命令

注意:上面的內(nèi)容是由 Wait-Job 命令輸出的,當(dāng)時(shí)任務(wù)的狀態(tài)為 "Completed"。

更進(jìn)一步,我們還想要獲得任務(wù)執(zhí)行過(guò)程中的輸出。這時(shí)我們就需要用到 Receive-Job 命令。你可以在任務(wù)啟動(dòng)后的任何時(shí)刻執(zhí)行 Receive-Job 命令,但是如果想要得到完整的輸出,就需要在任務(wù)結(jié)束后調(diào)用,此時(shí)需要配合 Wait-Job 命令一起使用:

$job = Start-Job -ScriptBlock { sleep 5; Write-Host "Hello world."; }Wait-Job $jobReceive-Job -Job $job

把上面的代碼保存到文件 mytask.ps1 中執(zhí)行:

powershell,并行,job,命令

Receive-Job 命令輸出了我們?cè)诤笈_(tái)執(zhí)行的任務(wù)的 output。

在后臺(tái)執(zhí)行多個(gè)任務(wù)并等待結(jié)束

因?yàn)?Start-Job 命令是非阻塞的,所以理論上我們可以執(zhí)行任意多次從而啟動(dòng)很多的后臺(tái)任務(wù)。和等待單個(gè)任務(wù)相同,仍然可以使用 Wait-Job 命令來(lái)等待所有的任務(wù)結(jié)束,不過(guò)此時(shí)需要配合 Get-Job 命令一起使用:

> Get-Job | Wait-Job

更常用的方式是我們?cè)?while 循環(huán)中不斷的檢查任務(wù)的狀態(tài),當(dāng)所有任務(wù)的狀態(tài)都是 "Completed" 時(shí)表示全部任務(wù)執(zhí)行結(jié)束:

Remove-Job *#測(cè)試計(jì)時(shí)開始$start_time = (Get-Date)Start-Job -ScriptBlock { sleep 9; Write-Host "Hello myJob1."; } -Name "myJob1"Start-Job -ScriptBlock { sleep 5; Write-Host "Hello myJob2."; } -Name "myJob2"$taskCount = 2while($taskCount -gt 0){ foreach($job in Get-Job) {  $state = [string]$job.State  if($state -eq "Completed")  {    Write-Host($job.Name + " 已經(jīng)完成")   Receive-Job $job   $taskCount--   Remove-Job $job  } } sleep 1}"所有任務(wù)已完成" #得出任務(wù)運(yùn)行的時(shí)間(New-TimeSpan $start_time).totalseconds

把上面的代碼保存到 mytask.ps1 文件中并執(zhí)行:

powershell,并行,job,命令

代碼中我們給每個(gè)任務(wù)起了名字,并在 while 循環(huán)中不斷的使用 Get-Job 命令檢查任務(wù)當(dāng)前的狀態(tài),如果發(fā)現(xiàn)任務(wù)的狀態(tài)為 "Completed",就通過(guò) Remove-Job 命令刪除它,并在刪除前打印任務(wù)的名稱和 output。

封裝一個(gè)執(zhí)行后臺(tái)任務(wù)的函數(shù)

下面我們用封裝一個(gè)簡(jiǎn)單的函數(shù)來(lái)并行執(zhí)行多個(gè)任務(wù):

function Run-Tasks{ Param (  $taskArr,  $parallelcount=1 ) #測(cè)試計(jì)時(shí)開始 $startTime = (Get-Date)  #移除本次會(huì)話中已有的所有后臺(tái)任務(wù) Remove-Job * # 使用變量 $taskCount 保存還沒(méi)有執(zhí)行完成的任務(wù)數(shù) $taskCount = $taskArr.Length  #判斷設(shè)定的并行任務(wù)數(shù)是否超過(guò)當(dāng)前任務(wù)隊(duì)列中的任務(wù)數(shù) if($parallelCount -gt $taskArr.Length) {  $parallelCount = $taskArr.Length } #啟動(dòng)初始任務(wù) foreach($i in 1..$parallelCount) {  Start-Job $taskArr[$i - 1] -Name "task$i" } #初始任務(wù)完成后開始的任務(wù) $nextIndex = $parallelCount #當(dāng)任務(wù)隊(duì)列中還有任務(wù)時(shí)不斷輪詢已建立的任務(wù),當(dāng)一個(gè)后臺(tái)任務(wù)結(jié)束時(shí)刪除這個(gè)任務(wù), #然后從任務(wù)隊(duì)列中取出下一個(gè)任務(wù)進(jìn)行執(zhí)行,然后等待所有任務(wù)執(zhí)行完成。 while(($nextIndex -lt $taskArr.Length) -or ($taskCount -gt 0)) {  foreach($job in Get-Job)  {   $state = [string]$job.State   if($state -eq "Completed")   {     Write-Host($job.Name + " 已經(jīng)完成,結(jié)果如下:")    Receive-Job $job    Remove-Job $job    $taskCount--    if($nextIndex -lt $taskArr.Length)    {      $taskNumber = $nextIndex + 1     Start-Job $taskArr[$nextIndex] -Name "task$taskNumber"     $nextIndex++    }   }  }  sleep 1 } "所有任務(wù)已完成" #得出任務(wù)運(yùn)行的時(shí)間 (New-TimeSpan $startTime).totalseconds}

上面的函數(shù)會(huì)在后臺(tái)執(zhí)行用戶的任務(wù),然后等待所有的任務(wù)執(zhí)行結(jié)束。并且用戶可以指定同時(shí)執(zhí)行的任務(wù)的個(gè)數(shù),在任務(wù)執(zhí)行完成后,輸出任務(wù)的 output。接下來(lái)讓我們嘗試使用這個(gè)函數(shù)執(zhí)行一些任務(wù):

#定義 6 個(gè)任務(wù)$task1 = {sleep 12; Write-Host "Hello myJob1."; }$task2 = {sleep 5; Write-Host "Hello myJob2."; }$task3 = {sleep 8; Write-Host "Hello myJob3."; }$task4 = {sleep 3; Write-Host "Hello myJob4."; }$task5 = {sleep 20; Write-Host "Hello myJob5."; }$task6 = {sleep 15; Write-Host "Hello myJob6."; } #將 6 個(gè)任務(wù)寫入到一個(gè)數(shù)組中作為任務(wù)隊(duì)列$taskArr = $task1, $task2, $task3, $task4, $task5, $task6#運(yùn)行數(shù)組中的任務(wù),允許同時(shí)運(yùn)行 4 個(gè)任務(wù)Run-Tasks -taskArr $taskArr -parallelcount 4

下面是運(yùn)行的結(jié)果:

powershell,并行,job,命令

總結(jié)

能夠隨心所欲的在后臺(tái)執(zhí)行任務(wù)是一件感覺(jué)非常棒的事情!當(dāng)然,對(duì)于工作來(lái)說(shuō)你能夠把事情做得又快又好(又好可不敢說(shuō))。本文只是提供了一個(gè)簡(jiǎn)單的運(yùn)行并行任務(wù)的 demo,省略了異常處理等重要內(nèi)容,但這已經(jīng)足夠您開始 PowerShell 并行任務(wù)之旅了。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国模无码国产精品视频| 国产精品久久占久久| 亚洲精品一区二区久| 国产视频第一页| 国产亚洲欧美另类一区二区三区| 欧美成ee人免费视频| 亚洲2020天天堂在线观看| 欧美国产在线看| www.男人天堂网| 日韩深夜福利网站| 国产成人啪午夜精品网站男同| 国产理论视频在线观看| 国产精品美女xx| 公交车强行挺进岳身体| 免费在线观看黄色网| vam成人资源在线观看| 新版中文字幕在线资源| av免费网站在线观看| 亚洲色图在线播放| 精品国产1区2区| 欧美日韩精品一区视频| 污视频网站观看| 亚洲午夜av电影| 午夜视频在线免费观看| 亚洲国产综合人成综合网站| 亚洲成人av网址| 日韩视频久久| 真实乱视频国产免费观看| 捆绑变态av一区二区三区| 日韩精品99| 日韩一区二区三区电影| 欧美一级全黄| 欧美97人人模人人爽人人喊视频| 五月丁香综合缴情六月小说| 永久在线免费观看| 亚洲成人手机在线观看| 国产精品视频中文字幕91| 国产毛片久久久久| 激情久久99| 日韩中文字幕免费视频| 51精品国产黑色丝袜高跟鞋| 日韩人体视频一二区| 国产又粗又长又黄| 久久成人人人人精品欧| 哺乳挤奶一区二区三区免费看| 欧美天堂一区| 影音先锋在线中文字幕| 日韩一区二区视频在线观看| 国产黄页在线观看| 精品久久久久久久久久ntr影视| jizz亚洲女人高潮大叫| 国产精品五月天| 久热免费在线视频| 青青草视频一区| 热久久精品免费视频| av电影在线观看网址| 精品动漫一区二区| 欧美一区在线视频| 不卡视频免费播放| 日本护士做爰视频| 亚洲精品视频99| 伊人av在线播放| 国产福利在线看| 精品国模在线视频| 中文字幕无码精品亚洲资源网久久| 国产偷国产偷亚洲高清97cao| 欧美大片在线免费观看| 精品国产欧美日韩不卡在线观看| 欧美精品电影免费在线观看| 国产99久久久久久免费看农村| 精品国产一二三四区| 亚洲精品日韩av| 亚洲av无码久久精品色欲| 久久99久久亚洲国产| 欧美变态凌虐bdsm| 久久精品色欧美aⅴ一区二区| 欧美一区二区高清在线观看| 日韩成人免费在线| 女性裸体视频网站| 色爱综合网站| 波多野结衣在线高清| 久青草视频在线观看| 希岛爱理一区二区三区| 国产精品一区在线| 成年人视频大全| 久久久影院一区二区三区| 九九热免费精品视频| 少妇高潮爽到全身痉挛抽搐| 国产二级c片l毛片| 久久国产高清| 日本一区午夜艳熟免费| 黄色亚洲大片免费在线观看| 欧美成人观看免费全部完小说| 欧美人与牲动交xxxxbbbb| 精品久久久久久无码人妻| 国产精品免费人成网站| 人与牲动交xxxbbb| 亚洲乱码电影| 国产97在线 | 亚洲| 色在线视频免费| 欧美一区国产| 少妇高潮一区二区三区| 激情综合网俺也去| 国产一区欧美二区| av在线网址导航| 亚洲国产欧美91| 欧美无遮挡国产欧美另类| av影音资源网| 亚洲风情在线资源站| 日本黄色不卡视频| 能在线观看av网站| 亚洲小说欧美激情另类| 一区二区三区电影大全| blackedav金发美女大战黑人| 久热免费在线视频| 免费在线观看av网站| 久久精品久久久久久国产 免费| 久99久精品视频免费观看| 日韩成人激情在线| 国产三级精品网站| 色综合视频一区中文字幕| 九色porny丨国产首页在线| 免费成人在线观看av| 国内自拍视频一区| 朝桐光av在线一区二区三区| 国产裸体舞一区二区三区| 国内精品在线视频| 久久久天堂国产精品女人| 蜜桃av成人| 亚洲在线免费| 无码精品在线观看| 国产成人久久精品麻豆二区| www.8ⅹ8ⅹ羞羞漫画在线看| 女仆av观看一区| 国产综合色区在线观看| 免费一级欧美在线观看视频| 国产日本在线| 国产喷水吹潮视频www| 美女黄视频在线观看| 超碰人人干人人| 欧美一区二区三区电影在线观看| 奇米色欧美一区二区三区| 免费91在线观看| 一道精品视频一区二区三区图片| 国产成人精品亚洲午夜麻豆| av大全在线| brazzers欧美精品| 亚洲卡通动漫在线| 日本欧美久久久久免费播放网| 国产一级在线观看| 国产精品热视频| 99视频在线视频| 亚洲精华液一区二区三区| 国产在线视频在线| 五月天婷婷激情| 日本三级很黄试看120秒| 亚洲性线免费观看视频成熟| 国产欧美丝袜| 国产精品区在线观看| 九九爱免费视频在线观看| 国产一区二区视频免费在线观看| 欧美激情日韩| 亚洲综合av影视| 国产日韩在线看片| 欧美人成在线观看| 96pao国产成视频永久免费| 激情se五月| 欧美成人aaa| 要久久电视剧全集免费| 天天干天天操天天操| 国产日韩成人内射视频| 国产一区二区在线网站| 国产99久久精品一区二区永久免费| 成人51免费| 91欧美日韩一区| 7色.com| 日韩亚洲精品视频| 日韩欧美一级二级三级久久久| 九九热精品在线| 综合一区二区三区| 91成人超碰| 视频一区中文字幕精品| 明星国产一级毛片范冰冰视频| 久久免费小视频| 国产精品被窝福利一区| 中文字幕在线播放一区二区| 成人一区在线看| 在线精品亚洲欧美日韩国产| 日本三级中国三级99人妇网站| 婷婷开心激情综合| 亚洲日本韩国在线| 色呦呦在线免费观看| 视频一区二区三区中文字幕| 青春草视频在线| 一出一进一爽一粗一大视频| 51社区在线成人免费视频| 在线观看91精品国产入口| 国产精品23p| 美女黄色片网站| 久久国产一区| 又色又爽的视频| 亚洲国产精品一区二区第四页av| 日韩高清成人| 杨幂一区二区三区免费看视频| 国产99久一区二区三区a片| 视频一区视频二区视频| www.五月婷| 天堂久久一区二区三区| 亚洲少妇xxx| 二区中文字幕| 国产精品久久久久久久久粉嫩av| 国产日韩欧美激情| 久久国产精品亚洲va麻豆| 激情 小说 亚洲 图片: 伦| 91禁在线观看| 污污网站在线看| 亚洲深爱激情| 久久狠狠久久| 秋霞影院一区二区三区| 久久精品国产99国产| 婷婷丁香激情五月| 国产精品丝袜久久久久久app| 97久精品国产片一区二区三区| 国产综合久久久久久| 678五月天丁香亚洲综合网| 97在线视频一区| 激情综合色丁香一区二区| 99亚洲伊人久久精品影院红桃| 欧洲亚洲一区二区三区| 国产精品私人自拍| 国产精品亚洲第一区在线暖暖韩国| 国产一二三四五| 热久久一区二区| 欧美国产视频一区二区| 高潮精品一区videoshd| 日本午夜精品理论片a级appf发布| 久久久精品五月天| 91麻豆免费在线视频| 日韩精品一区二区三区蜜臀| 麻豆视频在线免费看| 另类综合图区| jizzwww| 成人性生交大片免费看午夜| 成人污网站在线观看| 欧美怡春院一区二区三区| 欧美日韩国产三区| 久久久精品视频免费| 91九色综合久久| 免费a在线观看| 欧美午夜精品理论片a级大开眼界| 日本中文字幕影院| 亚洲三级视频网站| 日本一区二区三区精品| 成全电影大全在线观看| 国产无套粉嫩白浆内谢的出处| 右手影院亚洲欧美| 日韩免费电影在线观看| 亚洲女人被黑人巨大进入| 中文字幕成人精品久久不卡| 两个人看的免费完整在线观看| 黑人精品一区二区| 久久久免费av| 男人的天堂va免费视频| ●精品国产综合乱码久久久久| 92国产在线视频| 国产成人一级片| 亚洲欧美另类一区| 中文字幕人妻精品一区| 欧美一区二区三区公司| 91精品国产综合久久福利软件| 亚洲国产网站| 日本韩国在线不卡| 国产精品日韩二区| 久久久久亚洲AV成人无码国产| 日韩欧美国产综合在线一区二区三区| 欧美精品xxxxbbbb| 九色国产蝌蚪视频| 亚洲小视频在线观看| 天天操,天天操| 亚洲成人国产综合| 久久久久久久久97| 国产视色精品亚洲一区二区| 狠狠色狠狠色综合日日五| 亚洲国产成人精品视频| 国产一级做a爱免费视频| 国产成人在线视频网址| 尤物av无码色av无码| 国产精品亚洲一区二区三区在线| 一个人看的www片免费高清视频| 四虎永久在线精品免费一区二区| 国产亚洲福利社区| 久久噜噜噜精品国产亚洲综合| 亚洲国产私拍精品国模在线观看| 一区二区三区四区毛片| 私人高清影院 强乱中文字| 欧美性受xxxxxx黑人xyx性爽| 亚洲高清成人影院| 免费a级人成a大片在线观看| 日韩黄色碟片| 在线观看毛片av| 成人h猎奇视频网站| 色视频成人在线观看免| 日本一级一片免费视频| 中文字幕久久午夜不卡| 男人天堂99| 国产精品爱啪在线线免费观看| 精品成在人线av无码免费看| 国产精品无码无卡无需播放器| 国产午夜一区二区三区| 肥熟一91porny丨九色丨| www.99r| 成人黄色在线观看视频| 26uuu成人网| 日韩成人av一区二区| 在线看片免费人成视久网| 欧美国产欧美亚州国产日韩mv天天看完整| 国产乱码精品一区二区三区亚洲人| 久久影视电视剧免费网站清宫辞电视| 日韩高清不卡在线| 国产亚洲精品激情久久| 天堂日韩电影| 黄频网站在线观看| 影音先锋中文在线观看| 亚洲av无码不卡| 国产免费久久久久| 国产精品极品| 精品日韩av一区二区| 久久久亚洲欧洲日产国码αv|