极客学校:学习如何在powershell中使用作业

PowerShell有四种类型的作业—后台作业、远程作业、WMI作业和计划作业。加入我们,了解它们是什么以及如何使用它们。...

极客学校:学习如何在powershell中使用作业

PowerShell有四种类型的作业—后台作业、远程作业、WMI作业和计划作业。加入我们,了解它们是什么以及如何使用它们。

请务必阅读本系列之前的文章:

  • 了解如何使用PowerShell自动化Windows
  • 学习在PowerShell中使用cmdlet
  • 学习如何在PowerShell中使用对象
  • 在PowerShell中学习格式化、过滤和比较
  • 学习在PowerShell中使用远程处理
  • 使用PowerShell获取计算机信息
  • 在PowerShell中使用集合

整个星期请继续关注本系列的其余部分。

背景工作

到目前为止,我在PowerShell中向您展示的所有内容都是同步的,这意味着我们在shell中键入了一些内容,在该命令执行完毕之前,我们实际上做不了多少工作。这就是背景工作的用武之地。要启动后台作业,只需将脚本块传递给start-job cmdlet。

Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C:\ –Recurse}

极客学校:学习如何在powershell中使用作业

现在,当脚本块在后台执行时,我们可以在shell中自由地执行任何操作。

极客学校:学习如何在powershell中使用作业

启动新作业时,PowerShell将创建表示该作业的新作业对象。通过运行get-Job cmdlet,可以随时获取所有作业的列表。

极客学校:学习如何在powershell中使用作业

作业对象告诉您作业的状态。例如,在上面的屏幕截图中,我们可以看到一个名为GetFileList的BackgroundJob仍在运行,但已经开始返回数据。如果在任何时候您决定作业已经运行了太长时间,您可以通过管道将其发送到stop job来轻松地停止它。

Get-Job –Name GetFileList | Stop-Job

极客学校:学习如何在powershell中使用作业

然而,一旦你停止了一个作业,它接收到的任何数据直到你停止它的时候都是可用的。不过,有个问题。在PowerShell中,一旦收到作业的结果,它们就会被删除。为了使它们保持不变,必须指定Receive–Job的keep开关参数。

Get-Job –Name GetFileList | Receive-Job –Keep

极客学校:学习如何在powershell中使用作业

一旦你完成了一项工作,最好的做法是删除它。要删除作业,只需将其通过管道发送到remove-job cmdlet。

Get-Job –Name GetFileList | Remove-Job

这将从Get Job返回的作业列表中删除它。

极客学校:学习如何在powershell中使用作业

远程作业

几节课之前,我们研究了如何使用远程处理在远程计算机上使用Invoke命令执行PowerShell命令,但是您知道也可以使用Invoke命令在后台启动远程处理作业吗?为此,只需在命令末尾添加–AsJob参数:

Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob

极客学校:学习如何在powershell中使用作业

这是一个简单的命令,现在应该已经执行完毕了,让我们看看我们的作业状态。

极客学校:学习如何在powershell中使用作业

嗯,看来失败了。这是我第一次接触到乔布斯。在PowerShell中创建任何类型的新作业时,它会为运行作业的每台计算机创建一个父作业和一个子作业。当您使用Get-Job cmdlet时,它只显示父作业,state属性是最坏的情况,这意味着即使命令仅在一百台计算机中的一台计算机上运行失败,父作业状态也会显示为failed。要查看子作业列表,需要使用IncludeChildJob参数。

极客学校:学习如何在powershell中使用作业

如果你仔细看,你会发现这项工作确实只在一台电脑上失败了,这就把我们带到了下一个问题。尝试获取作业的结果时,如果指定父作业的名称或ID,PowerShell将返回所有子作业的数据。问题是,如果其中一个子作业出现错误,我们将得到一些红色文本。

极客学校:学习如何在powershell中使用作业

有两种方法可以解决这个问题。首先,如果您知道要为哪些计算机获取结果,只需使用Recieve–Job cmdlet的ComputerName参数即可。

Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper

极客学校:学习如何在powershell中使用作业

或者,您可以使用特定子作业的作业id从该子作业获取结果。

Get-Job -Id 3 –IncludeChildJob

极客学校:学习如何在powershell中使用作业

Get-Job -Id 5 | Receive-Job –Keep

极客学校:学习如何在powershell中使用作业

wmi作业

WMI作业与远程作业非常相似,只需要将–AsJob参数添加到Get-WmiObject cmdlet。

极客学校:学习如何在powershell中使用作业

极客学校:学习如何在powershell中使用作业

不幸的是,这意味着它们也受到我在远程作业部分中提到的相同问题的影响。

计划的作业

我们研究的最后三种工作不是持久性的,这意味着它们只在当前会话中可用。基本上,这意味着如果您启动一个作业,然后打开另一个PowerShell控制台并运行Get job,您将看不到任何作业。但是,回到您启动作业的控制台,您将能够看到其状态。这与持久的计划作业不同。基本上,计划作业是按计划运行的脚本块。在过去,同样的效果也可以通过使用Windows任务调度器来实现,而这正是引擎盖下正在发生的事情。要创建新的计划作业,请执行以下操作:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)

这个命令里有很多东西,所以让我们把它分解一下。

  • 首先,我们给计划的作业命名为GetEventLogs。
  • 然后我们告诉它,当被触发时,我们希望它运行指定脚本块的内容,该脚本块基本上获取安全事件日志的最新100个条目。
  • 接下来,我们指定一个触发器。因为trigger参数接受一个trigger对象作为输入,所以我们使用了一个附加命令来生成一个触发器,该触发器将在每天下午5点关闭。
  • 因为我们要处理事件日志,所以需要以管理员身份运行,可以通过创建新的ScheduledJobOption对象并将其传递给ScheduledJobOption参数来指定。

极客学校:学习如何在powershell中使用作业

由于这是一种稍有不同的作业类型,因此还需要使用不同的命令来检索计算机上所有计划作业的列表。

Get-ScheduledJob

极客学校:学习如何在powershell中使用作业

就这些。

  • 发表于 2021-04-11 22:34
  • 阅读 ( 184 )
  • 分类:互联网

你可能感兴趣的文章

如何在Windows10中自动连接到特定应用的vpn

使用Windows10的PowerShellcmdlet,您可以轻松地添加应用程序,以便在启动时自动触发VPN连接。自动化这个任务意味着当你使用某些应用程序时,你甚至不必考虑连接到VPN。 要利用PowerShell中的此功能,如果您还没有VPN服务,则必须...

  • 发布于 2021-04-02 15:58
  • 阅读 ( 520 )

如何在windows powershell中使用命令历史记录

Windows PowerShell具有内置的命令历史记录功能,可提供有关已运行命令的详细信息。与命令提示符一样,PowerShell只记住当前会话的命令历史记录。 如何使用命令行缓冲区 相关:极客学校:学习如何用PowerShell自动化Windows PowerShel...

  • 发布于 2021-04-08 03:50
  • 阅读 ( 281 )

如何在windows中批量重命名多个文件

...可以轻松地重命名一个或多个文件,但使用命令提示符或PowerShell,您还可以执行更多操作。再加上第三方重命名工具,可能性是无穷的。让我们看看每个选项及其工作原理。 在windows资源管理器中重命名多个文件 Windows资源管...

  • 发布于 2021-04-08 21:05
  • 阅读 ( 207 )

如何在windows上创建已安装程序的列表

....1和7上执行此操作的几种不同方法。 简单的方法:使用powershell命令 相关:极客学校:学习如何用PowerShell自动化Windows PowerShell是Windows中最强大的工具之一,所以它当然可以做一些简单的事情,比如列出你安装的程序。事实上...

  • 发布于 2021-04-09 18:20
  • 阅读 ( 177 )

如何修复windows应用商店中卡住的下载

...尝试运行它。这不需要太多时间,可能会有帮助。 向powershell重新注册windows应用商店 如果所有这些都失败了,您可以尝试重新注册Windows应用商店,这是您可以重新安装它。为此,您需要使用PowerShell,这是一种内置于Windows中...

  • 发布于 2021-04-09 18:36
  • 阅读 ( 212 )

21 windows管理工具说明

...题,通常可以通过更换至少一个柱塞杆来解决。 windows powershell(x86) PowerShell是一种高级脚本环境。对于那些在Windows上真正需要命令行界面的人来说,PowerShell是Windows命令提示符的强大继承者。如果您不需要一个强大的命令行...

  • 发布于 2021-04-11 07:55
  • 阅读 ( 211 )

powershell与windows命令提示符的区别

Windows7增加了PowerShell,一种比命令提示符更强大的命令行shell和脚本语言。自Windows7以来,PowerShell变得更加突出,它甚至成为Windows10的默认选择。 PowerShell比传统的命令提示符更复杂,但它也更强大。命令提示符明显不如Linux和...

  • 发布于 2021-04-11 20:41
  • 阅读 ( 281 )

极客学校:写你的第一个完整的powershell脚本

...的计算机上一次启动的时间。在上一次安装Geek School for PowerShell时,我们将编写一个可重用的PowerShell命令来完成同样的任务。 请务必阅读本系列之前的文章: 了解如何使用PowerShell自动化Windows 学习在PowerShell中使用cmdlet 学习如...

  • 发布于 2021-04-11 22:17
  • 阅读 ( 158 )

极客学校:学习如何扩展powershell

PowerShell为您提供了两种扩展shell的方法。您可以使用管理单元,它是二进制的,并且是用成熟的编程语言(如C#)开发的,也可以使用模块,它可以是二进制的,也可以是基于脚本的。 请务必阅读本系列之前的文章: 了解如何...

  • 发布于 2021-04-11 22:25
  • 阅读 ( 230 )

极客学校:在powershell中使用集合

由于PowerShell基于.Net框架,并结合了各种其他技术,如WMI和CIM,因此实现同一目标的方法总是不止一种。快来加入我们,学习如何选择最佳的方法来完成我们的任务。 请务必阅读本系列之前的文章: 了解如何使用PowerShell自动...

  • 发布于 2021-04-11 22:46
  • 阅读 ( 177 )
Duke哈哈哈
Duke哈哈哈

0 篇文章

相关推荐