当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell:使用 Wait-Job 等待作业完成

作者:精品下载站 日期:2024-12-14 05:32:44 浏览:11 分类:玩电脑

PowerShell:使用 Wait-Job 等待作业完成


cmdlet Wait-Job 会等待,直到会话中运行的一个或所有 PowerShell 作业处于终止状态。在这篇博文中,我将向您展示一个可以构建的示例。让我们开始吧。

Start-Job 创建一个或多个 PowerShell 后台作业。这些作业在后台隐藏运行,使您能够继续在 PowerShell 中工作。此示例启动端口扫描后台作业。

Start-Job -Name PortScan -ScriptBlock {Test-NetConnection 192.168.0.150 -Port 88}
Get-Job -Name PortScan

[玩转系统] PowerShell:使用 Wait-Job 等待作业完成

要显示此作业的结果,请运行 Receive-Job。请注意,您只能显示结果一次!除非你使用-Keep参数。

Receive-Job -Name PortScan -Keep | Select-Object RemoteAddress,PingSucceeded,TcpTestSucceeded

[玩转系统] PowerShell:使用 Wait-Job 等待作业完成

等待,直到会话中运行的一个或所有 PowerShell 作业处于终止状态。

微软是这样描述的:

Wait-Job cmdlet 等待作业处于终止状态,然后再继续执行。终止状态是:

  • 完全的
  • 失败的
  • 已停止
  • 暂停
  • 已断开连接

您可以等到指定作业或所有作业都处于终止状态。您还可以使用超时参数设置作业的最长等待时间,或使用强制参数等待暂停中的作业或已断开状态。

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/wait-job?view=powershell-7.3

以下是如何创建 2 个工作岗位的示例。等待第二份工作,需要很长时间。这两项工作不相关,但都适合测试。最后,第二个作业被调用,但只有在第一个作业完成后才被调用。

Get-Job | Remove-Job -Force

Start-Job -Name PortScan -ScriptBlock {Test-NetConnection 192.168.0.150 -Port 88}
Start-Job -Name Files -ScriptBlock {Get-ChildItem C:\Windows -File -Recurse}
Wait-Job -Name Files
Receive-Job -Name PortScan -Keep | Select-Object RemoteAddress,PingSucceeded,TcpTestSucceeded

希望这对您有所帮助,您现在可以在 PowerShell 脚本中实现 Wait-Job cmdlet。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯