玩转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 ...
随机推荐
- WebView上实现Java与JavaScript交互
在安卓开发上,考虑到开发效率和界面更新,有时使用WebView结合web页面技术,可以快速迭代地开发移动应用.WebView加载资源的速度并不慢,但是如果资源多了,就很慢.图片.css.js.html ...
- LICEcap – 灵活好用,GIF 屏幕录制工具
LICEcap – 灵活好用,GIF 屏幕录制工具 http://www.appinn.com/licecap/
- Cocos2dx.3x入门三部曲-Hello Game项目创建(二)
一.前提: 完成cocos2d-x-3.x开发环境的安装配置. 具体参考:Cocos2d-x.3x_软件配置篇 二.本篇目标: l 创建一个名为hello game的cocos2dx 3.3的项目 ...
- GTD中落地执行篇
前面几篇主要是分享GTD对事情进行 ”收集“,“分类”,“组织”.今天主要是想分享“落地执行” 先来看一个案例 (案例 来自于<小强升职记>) 通过这个案例我们看出 1: 当我们通过对事情 ...
- 私有云android客户端2.1.2最新版本(ownCloud简体中文优化版)
通过安装Ubuntu16.04+LAMP+ownCloud9.1+SSL建立私有云,下载ownCloud android客户端最新源码,针对国际语言简体中文化,修改部分代码,并进行补充.优化,编译生成 ...
- PreparedStatement ResultSet
public int searchProblemDistinctCount() throws Exception { DBOperator dbo = getDBOperator(); try { P ...
- mysql保留关键字 BigDecimal Double 四舍五入
`desc` 需要加引号 BigDecimal progress = new BigDecimal(0.444); progress=progress.setScale(2, BigDecimal ...
- 使用cocos2d-x v3.1开发小游戏(基本框架)
小游戏的组成 欢迎界面 在游戏资源未全部加载完之前就需要载入,避免进入游戏会有一段黑屏时间. 可以用来展示游戏名称或者开发者logo. 开始菜单界面 一般用于显示游戏名称和关卡选择(或者称游戏难度选择 ...
- 查看android app 线程信息的命令
参考:https://my.oschina.net/zhiweiofli/blog/138454 ps | grep 'joyodream' 找到 app 的pid: joyodream为包名的一部分 ...
- 【python】——小程序之电话薄
初学python,写一个小程序练习一下.主要功能就是增删改查的一些功能.主要用到的技术:字典的使用,pickle的使用,io文件操作.代码如下: import pickle #studentinfo ...