玩转PowerShell第一节——【后台任务处理】-技术&分享
概述
相信大家对后台任务处理不陌生,比如.Net的后台线程处理,Java的线程处理等等。
而当我们用PowerShell这个强大的工具时怎么样开启后台任务呢,以及怎样处理这些任务呢,本篇将会告诉你PowerShell后台任务处理。
1.什么时候会用到后台任务
当本地机器需要执行一个动作,此动作需要耗费很长时间,而机器在这段时间内只能等待,而我们希望在机器等待的这段时间内,我们还可以做其他事情。
这样我们就可以用后台任务来解决上面遇到的问题。
2.后台任务主要用在哪些场景
(1)将文件拷贝到多台远程机器,可以开启多个任务进行并行拷贝
(2)多台远程机器同时安装文件,可以开启多个任务进行并行安装
等等
3.PowerShell里面怎么开启后台任务
(1)Start-Job
$StartJob = Start-Job -ScriptBlock {Get-Process}
$StartJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
7 Job7 BackgroundJob Running True localhost Get-Process
(2)Invoke-Command -AsJob
$InvokeCommandJob = Invoke-Command -ComputerName LocalHost -ScriptBlock {Get-Process} -AsJob
$InvokeCommandJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
15 Job15 RemoteJob Running True LocalHost Get-Process
开启了一个任务后,我们总不能不管它吧,现在来说下怎么处理这些Job
4.处理Job
(1)Wait-Job
#创建一个等待1s的后台任务
$WaitJob1 = Start-Job -ScriptBlock {Sleep -Seconds 10}
#创建一个等待5s的后台任务
$WaitJob2 = Start-Job -ScriptBlock {Sleep -Seconds 15}
#等待两个Job完成
Wait-Job -Job $WaitJob1,$WaitJob2 -Timeout 2
-- ---- ------------- ----- ----------- -------- -------
31 Job31 BackgroundJob Completed False localhost Sleep -Seconds 1
33 Job33 BackgroundJob Running True localhost Sleep -Seconds 5
Wait-Job -Job $WaitJob1,$WaitJob2 -Timeout 10
还有一些等待Job完成的命令
Wait-Job -Id $WaitJob1.Id,$WaitJob2.Id -Timeout 10
Wait-Job -Name $WaitJob1.Name,$WaitJob2.Name -Timeout 10
Wait-Job -InstanceId $WaitJob1.InstanceId,$WaitJob2.InstanceId -Timeout 10
Wait-Job -State Running -Timeout 10
(2)Remove-Job
Remove-Job -Id $WaitJob1.Id,$WaitJob2.Id
Remove-Job -Name $WaitJob1.Name,$WaitJob2.Name
Remove-Job -InstanceId $WaitJob1.InstanceId,$WaitJob2.InstanceId
Remove-Job -State Completed
stop the job, or use the Force parameter.
Parameter name: Job
如果要强制Remove Job,可以在后面添加一个参数-Force
Remove-Job -Job $WaitJob1,$WaitJob2 -Force
下面我来讲一个非常有趣的问题
5.Start-Job传参
$a = 1
$b = 2
$c = 0
$Job = Start-Job -ScriptBlock {
$c = $a + $b
$c > "D:\a.txt"
}
$a = 1
$b = 2
$c = 0
$Job = Start-Job -ArgumentList $a,$b -ScriptBlock {
param($a,$b)
$c = $a + $b
$c > "d:\a.txt"
}
运行上面的代码,可以看到文本文件中的内容为3。
6.引用&扩展阅读
以下链接为微软提供的技术资料:
http://technet.microsoft.com/library/2bc04935-0deb-4ec0-b856-d7290cca6442(v=wps.630).aspx
玩转PowerShell第一节——【后台任务处理】-技术&分享的更多相关文章
- 辛星跟您玩转vim第一节之vim的下载与三种模式
首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...
- 玩转PowerShell第二节——【利用PsExec进行远程调用】-技术&分享
概述 PowerShell用的最多的地方就是远程调用,在远程机器上执行脚本,监控远程机器的状态,如NLB状态,EventLog,SqlServer DataBase状态等. 本篇将讲到用PsExec. ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触
http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...
- VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)
第一节 vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便 ...
- 第一节:.Net版基于WebSocket的聊天室样例
一. 说在前面的话 该篇文章为实时通讯系列的第一节,基于WebSocket编写了一个简易版聊天样例,主要作用是为引出后面SignalR系列的用法及其强大方便之处,通过这个样例与后续的SignalR对比 ...
- 第一节:ASP.NET开发环境配置
第一节:ASP.NET开发环境配置 什么是ASP.NET,学这个可以做什么,学习这些有什么内容? ASP.NET是微软公司推出的WEB开发技术. 2002年,推出第一个版本,先后推出ASP.NET2. ...
- Android精通教程-第一节Android入门简介
前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be ...
随机推荐
- Redis info参数总结(转)
Redis官网对 info 已经讲解的比较清楚的,参考文档 . 可以看到,info的输出结果是分几块的,有Servers.Clients.Memory等等,通过info后面接这些参数,可以指定输出某一 ...
- [苏飞开发助手V1.0测试版]官方教程与升级报告
[苏飞开发助手V1.0测试版]官方教程与升级报告导读部分----------------------------------------------------------------- ...
- Dreamweaver8 查找和替换窗口不见了解决办法
激活窗口,按下Atrl+空格,再按下M,方向键移动窗口,就回来了!
- ASSIC码对照表
编码对应字符: ✔:\u2714✘:\u2718 <script type="text/javascript"> var aaa = "\u2718" ...
- angular post表单
参数文章:http://angularjs.cn/A0qF angularjs中Post使用的是json的交互方法,一般服务器还没达到这个阶段,我们可以用回传统的&参数的方法: var myA ...
- C++实现单例模式
昨天面试的时候,面试官让我用C++或Java实现一个单例模式. 因为设计模式是在12年的时候学习过这门课,而且当时觉得这门课很有意思,所以就把课本读了几遍,所以印象比较深刻,但是因为实际编程中很少注意 ...
- nodejs - 如何完全更新
Nodejs可以毫不犹豫地说一个版本狂魔,时不时就发布一个版本,而且还一直没有一个1.0版本,好囧呀,对于我们这些有强迫症的人来说,的确不是好事. 下面我就说一下Nodejs中常见的更新方式. 1. ...
- LTE工作过程
LTE工作过程 一.LTE开机及工作过程如下图所示: 二.小区搜索及同步过程 整个小区搜索及同步过程的示意图及流程图如下: 1) UE开机,在可能存在LTE小区的几个中心频点上接收信号(PSS), ...
- 我常用的Mac快捷键
1. 最小化当前窗口 command m 2. 在不同应用间切换 command tab 3. 在同一应用的不同窗口间切换 command ` 4. 在浏览器同一窗口的不同标签间切换 ctrl tab ...
- 使用WebApi时Post和Put的区别
简单的说Post是添加,Put是修改 吃不准的话,尝试用相同参数访问二次接口,结果不同的是Post(会产生多条记录),结果相同的是Put(仅为一条记录),例如:写博客就是Post:更新签名就是Put