PowerShell多线程执行前后台作业的例子_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/

时间: 2024-10-28 00:35:47

PowerShell多线程执行前后台作业的例子_PowerShell的相关文章

PowerShell中执行Javascript的方法示例_PowerShell

背景与问题 别人写了一个Web应用程序,使用的是ASP.NET Forms技术.其中用到了一个DropdownList控件,用户选择了某项后,页面会回传,然后在下面再动态的显示另外一个控件,逻辑很简单. 这是产生的的部分的html源码: 复制代码 代码如下: <select name="eventTypeDropDown" id="eventTypeDropDown" onchange="javascript:setTimeout('__doPost

Powershell创建简洁的HTML报告例子_PowerShell

支持所有版本 把结果变成复杂的HTML报告,一个简单的方法是定义三个脚本块:一个用作HTML的开头文档,一个用作它的结尾,还有一个是存放动态对象的表格 接着,把这些脚本块传入到ForEach-Object,分别对应脚本的开始块.中间要处理的动态列表块和结束代码块. 下面有个简单的例子阐述如何用它创造一个服务报告: 复制代码 代码如下: $path = "$env:temp\report.hta"   $beginning = {  @'     <html>     <

PowerShell因为在此系统中禁止执行脚本的解决方法_PowerShell

在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 所在位置 行:1 字符: 17 + E:\Test\test.ps1 <<<< + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException p

无 PowerShell.exe 执行 Empire 的几种姿势

本文讲的是无 PowerShell.exe 执行 Empire 的几种姿势,客户端已经使用AppLocker阻止了Powershell.exe运行,我也无法执行Cobalt Strike.我想通过网络钓鱼攻击在工作站上获得一个Empire的有效载荷,一旦我在内网立足我就需要准备攻击所用的有效载荷.Empire中几乎所有的启动方法都依赖于使用PowerShell.exe的功能.像msbuild.exe这样的一些其他方法需要将文件放到磁盘上,我真的很喜欢利用regsvr32方法通过互联网加载我的.s

Linux 前后台作业切换及脱机管理

    Linux bash shell单一终端界面下,我们经常需要管理或同时完成多个作业,如一边执行编译,一边实现数据备份,以及执行SQL查询等其他的任务.所有的上述的这些工作我们可以在一个bash内实现,也就是说在同一个终端窗口完成.下面主要描述了Linux下前后台作业切换与管理以及作业在脱机的情形下如何管理.   1.前后台作业的定义   前后台作业实际上对应的也就是前后台进程,因此也就有对应的pid.在这里我们统称为作业.   无论是前台作业还是后台作业,两者都来自当前的shell,是当

完全恢复执行和留在rollup例子

本文<完全恢复执行和留在rollup例子>,介绍oracle的一些操作和代码. 一.将数据文件备份复制回去之后,还有执行完全恢复命令 1.recover database startup force mount recover database;   ==alter database reover database; 2.recover tablespace  只能在open状态下运行 recover tablespace users; == alter database recover ta

在ironpython中利用装饰器执行SQL操作的例子

  这篇文章主要介绍了在ironpython中利用装饰器执行SQL操作的例子,文章中以操作MySQL为例,需要的朋友可以参考下 比较喜欢python的装饰器, 试了下一种用法,通过装饰器来传递sql,并执行返回结果 这个应用应该比较少 为了方便起见,直接使用了ironpython, 连接的mssql server ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Python多线程执行失败

问题描述 Python多线程执行失败 我使用python编程实现查找某根目录下所有重复文件的功能,新手小白. 但是通过单步调试后,发现thread2.start()好像完全没有执行,直接就跳出循环了. 请高手看看~ 解决方案 附代码 -*- coding: utf-8 -*- import threading import os import os.path import sys import hashlib def findFile1(rootPath, fileSeq, delSeq): d

java多线程执行出现异常怎么办?

问题描述 java多线程执行出现异常怎么办? 使用spring+ibatis框架开发: 现在网站的下单流程分为三步,1.发送邮件和短信:2.删除购物车表:3.插入订单表: 现在用线程池来实现多线程的并发操作.但是如果其中一个线程出现异常,想的是应该全 部都回滚.那么如果来保证这三个线程之间的原子性. 解决方案 首先,必须使用互斥锁将你的操作在锁保护范围内:其次了,就是使用try-catch-finally进行异常捕获,一旦捕获异常就执行回滚操作 .最后,只要保证同一时刻只有一个线程执行相应的操作