[Windows PowerShell08]-PowerShell Job 实现多线程

       我们在使用PowerShell的时候,通常需要执行一些多线程的任务。PowerShell作为在服务器管理领域表现出色的脚本语言,对于多线程的支持也是非常好的。PowerShell 提供了一系列Job相关的命令。详细内容可以参见MSDNhttp://technet.microsoft.com/en-us/library/dd347692.aspx

      1)Start-Job

      开始一个Job,这个命令有很多参数(具体见MSDN),通常我们使用的参数主要有:

      - scriptblock 此参数是传入将要在后台执行的powershell命令,如 Get-Process,Get-Service等等。

      - computername 此参数是传入后台任务执行的目标机器,这个参数表明此命令是支持远程执行的。

      - filepath 此参数是传入一个powershell文件路径,当job起来的时候,powershell在后台执行这个脚本里面的文件。

      - name 此参数传入job的名称。此参数比较有用,因为后面会使用name来查看job的运行状态,通过job的name来获取后台运行的结果。

      - runAs32 此参数用得不是很多,但是关键时刻比较有用,因为它允许job运行在32位的进程中,即使操作系统是64位的,解决兼容性问题。

      2)Receive-Job

      - Id 此参数顾名思义,根据Id来获取Job

      - Name 根据Job的名字来获取Job

      - State 根据Job的运行状态来获取Job

      3)Wait-Job

      - 等待所有的Job完成

      Get-Job | Wait-Job

      - 等待多台远程服务器上得Job运行结束

      C:\PS>$s = new-pssession server01, server02, server03
      C:\PS> invoke-command -session $s -scriptblock {start-job -name Date1 -scriptblock {get-date}}
      C:\PS> $done = invoke-command -session $s -command {wait-job -name Date1}
      C:\PS> $done.count
      3

      4)远程执行命令作为Job运行(Invoke-Command as Job )

      C:\PS>$s = new-pssession Server01, Server02, Server03
      C:\PS> $j = invoke-command -session $s -scriptblock {get-process} -asjob
      C:\PS> $j | wait-job

      5)Stop-Job / Remove-Job

      停止Job/ 移除Job

      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值