多线程异步执行脚本

获取远程计算机信息:

$d=get-date
$servers="10.4.34.41","10.4.34.40","10.4.34.36","10.4.34.37","10.4.34.39"
$serverpass="Dell1950"
$UserName="Administrator"

#定义线程数量
$throttleLimit = 5
$SessionState = [system.management.automation.runspaces.initialsessionstate]::CreateDefault()
$Pool = [runspacefactory]::CreateRunspacePool(1, $throttleLimit, $SessionState, $Host)
$Pool.Open()

#脚本块
$ScriptBlock = {
param($server,$serverpass,$username)
$Password = ConvertTo-SecureString $serverpass -AsPlainText –Force
$cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)
$cs = gwmi win32_computersystem -computer $server -Credential $cred
$cs.Name
}

$threads = @()
$handles = foreach ($server in $servers) {
$powershell = [powershell]::Create().AddScript($ScriptBlock).AddArgument($server).AddArgument($serverpass).AddArgument($username)
$powershell.RunspacePool = $Pool
$powershell.BeginInvoke()
$threads += $powershell
}

do {
$i = 0
$done = $true
foreach ($handle in $handles)
{
if ($handle -ne $null)
{
if ($handle.IsCompleted)
{
$threads[$i].EndInvoke($handle)
$threads[$i].Dispose()
$handles[$i] = $null
}
else {$done = $false}
}
$i++
}
if (-not $done) { Start-Sleep -Milliseconds 500 }
} until ($done)

New-TimeSpan $d

==============================

进度提示:

function Start-Progress {

  param(

    [ScriptBlock]

    $code

  )

  

  $newPowerShell [PowerShell]::Create().AddScript($code)

  $handle $newPowerShell.BeginInvoke()

  

  while ($handle.IsCompleted -eq $false) {

    Write-Host ‘.‘ -NoNewline

    Start-Sleep -Milliseconds 500

  }

  

  Write-Host ‘‘

  

  $newPowerShell.EndInvoke($handle)

  

  $newPowerShell.Runspace.Close()

  $newPowerShell.Dispose()

}

From:http://www.pstips.net/speeding-up-powershell-multithreading.html

多线程异步执行脚本,布布扣,bubuko.com

时间: 2024-10-04 12:38:17

多线程异步执行脚本的相关文章

异步执行脚本

异步执行脚本 script 元素的 async 属性可以使关联脚本相对于页面的其余部分进行异步加载和执行. 也就是说,在继续对页面进行解析的同时,在后台加载并执行脚本.如果页面使用了要占用大量处理时间的脚本,那么使用 async 属性可以显著提高页面加载性能. async 属性. async 属性是万维网联合会 (W3C)  HTML5 规范的一部分,它是为以下情形设计的:对于脚本不存在依赖关系,但是脚本仍需要尽快运行.在以下假设示例中,如果不使用 async(或 defer)属性,则脚本可能会

php 异步执行脚本

这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行.比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式.主脚本和子脚本的通讯可以采用外部文件或memcached的方式.原理就是通过exec或system来执行一个外部命令.注意:本文所述的是针对Linux环境. 在Linux下要让一个脚本挂在后台执行可以在命令的结尾加上一个 "&" 符号,有时候这还不够,需要借助nohup命令,关于nohup,可以参考http

任务执行和任务处理的异步执行

最近在看<深入剖析Tomcat>,在第四章有讲解Tomcat的默认连接器,和这个连接器有着密切关系的是一个处理器.一个连接器可以对应多个处理器.连接器的作用是从客户端的请求中提取出Socket,然后把Socket传递给处理器来处理用户的请求.需要注意的是连接器的关注点是在接收请求,分派给他下游的处理器去执行,在把Socket传递下去后,连接器在这次请求中的任务已经完成.这里可以看到,连接器和处理器他们是异步进行的,异步的处理为多线程的执行提供了可能. 在这里我要说的是,在看了Tomcat的源码

异步执行js脚本——防止阻塞

JS允许我们修改页面中的所有方面:内容,样式和用户进行交互时的行为. 但是js同样可以阻塞DOM树的形成并且延迟页面的渲染. 让你的js变成异步执行,并且减少不必要的js文件从而提高性能. JavaScript可以查询和修改DOM和CSSOM JavaScript的执行阻塞了CSSOM的执行 JavaScript 阻塞了DOM的形成,除非特殊声明js异步执行 js是一个同步语言可以修改网页的任何方面: <html> <head> <meta name="viewpo

什么是异步执行?异步执行和多线程执行的不同?

什么是异步执行? 异步执行:就是不需要等待别的任务完,就立刻执行同步执行刚好相反,异步执行,所以可以多个进程执行 异步跟多线程有什么区别? 异步同步是交互方式?多线程是性能任务的说法

GCD网络多线程---同步执行,异步执行,串行队列,并行队列

总结:同步(不管是串行还是并行)----不开辟子线程 异步(不管是串行还是并行)----开辟子线程 GCD: dispatch queue 主线程的main queue 并行队列 global dispatch queue 串行队列serial queues 一般用于按顺序同步访问 #pragma mark - 加载多线程 - (void) _loadMutil { //GCD基于C语言 //1.主对列:(串行队列) dispatch_queue_t mainQueue=dispatch_get

生产者消费者模型实现多线程异步交互

[Python之旅]第六篇(五):生产者消费者模型实现多线程异步交互 消息队列 生产者消费者模型 多线程异步交互 摘要:  虽然标题是"生产者消费者模型实现多线程异步交互",但这里要说的应该还包括Python的消息队列,因为这里多线程异步交互是通过Python的消息队列来实现的,因此主要内容如下: 1 2 3 4 1.生产者消费者模型:厨师做包子与顾客吃包子 2.Python的消息队列 3.利用... 虽然标题是"生产者消费者模型实现多线程异步交互",但这里要说的应

Cocos2d-x 3.0多线程异步资源加载

Cocos2d-x从2.x版本到上周刚刚才发布的Cocos2d-x 3.0 Final版,其引擎驱动核心依旧是一个单线程的"死循环",一旦某一帧遇到了"大活儿",比如Size很大的纹理资源加载或网络IO或大量计算,画面将 不可避免出现卡顿以及响应迟缓的现象.从古老的Win32 GUI编程那时起,Guru们就告诉我们:别阻塞主线程(UI线程),让Worker线程去做那些"大活儿"吧. 手机游戏,即便是休闲类的小游戏,往往也涉及大量纹理资源.音视频资

多线程异步编程示例和实践-Thread和ThreadPool

说到多线程异步编程,总会说起Thread.ThreadPool.Task.TPL这一系列的技术.总结整理了一版编程示例和实践,分享给大家. 先从Thread和ThreadPool说起: 1. 创建并启动线程 2. 暂停线程 当前线程在执行Thread.Sleep方法时,会等待指定的时间(1000ms)此时,当前线程处于阻塞状态:WaitSleepJoin 3. 线程等待 当程序运行时,启动了一个耗时较长的线程打印数字,每次打印输出前需要等待1000ms,我们在主程序中调用ThreadJoin方法