国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PowerShell > 正文

Powershell后臺作業、異步操作實例

2020-03-26 19:25:15
字體:
來源:轉載
供稿:網友

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秒。與后臺作業幾乎同時完成,所以后臺作業更適合解決長時間執行的任務。從三個任務返回的數據觀察,好處是這種按順數在前臺獲得數據能減少了執行過程的開銷。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚远县| 海南省| 云南省| 老河口市| 汽车| 鄂尔多斯市| 鲁甸县| 祁阳县| 姚安县| 鸡西市| 阿拉善右旗| 安康市| 濉溪县| 镇平县| 泰兴市| 哈尔滨市| 瑞金市| 高淳县| 襄汾县| 个旧市| 上虞市| 海阳市| 剑河县| 涞水县| 天门市| 石首市| 黄石市| 田林县| 邵阳县| 长沙市| 六安市| 通州区| 韩城市| 彭山县| 璧山县| 青岛市| 芦山县| 手游| 嵊州市| 大连市| 济源市|