[玩转系统] Wait-Job (Microsoft.PowerShell.Core)
作者:精品下载站 日期:2024-12-14 02:13:41 浏览:14 分类:玩电脑
Wait-Job (Microsoft.PowerShell.Core)
Wait-Job
模块 :Microsoft.PowerShell.Core等待,直到会话中运行的一个或所有 PowerShell 作业处于终止状态。
句法
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Id] <Int32[]>
[<CommonParameters>]
Wait-Job
[-Job] <Job[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Name] <String[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-InstanceId] <Guid[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-State] <JobState>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Filter] <Hashtable>
[<CommonParameters>]
描述
Wait-Job
cmdlet 在继续执行之前等待作业处于终止状态。终止状态是:
- 完全的
- 失败的
- 已停止
- 暂停
- 已断开连接
您可以等到指定作业或所有作业都处于终止状态。您还可以使用Timeout参数设置作业的最长等待时间,或使用Force参数在Suspending
中等待作业或 Disconnected
状态。
当作业中的命令完成时,Wait-Job
返回一个作业对象并继续执行。
您可以使用 Wait-Job
cmdlet 等待使用 Start-Job
cmdlet 或 的 AsJob 参数启动的作业Invoke-Command
cmdlet。有关职位的更多信息,请参阅 about_Jobs。
从 Windows PowerShell 3.0 开始,Wait-Job
cmdlet 还会等待自定义作业类型,例如工作流作业和计划作业的实例。要使 Wait-Job
能够等待特定类型的作业,请在运行 Get-Job
cmdlet 之前将支持自定义作业类型的模块导入到会话中,或者通过使用 Import-Module
cmdlet 或使用或获取模块中的 cmdlet。有关特定自定义作业类型的信息,请参阅自定义作业类型功能的文档。
示例
示例 1:等待所有作业
Get-Job | Wait-Job
此命令等待会话中运行的所有作业完成。
示例 2:等待使用 Start-Job 在远程计算机上启动的作业
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
3
此示例演示如何使用 Wait-Job
cmdlet 以及通过使用 Start-Job
cmdlet 在远程计算机上启动的作业。 Start-Job
和 Wait-Job
命令均通过使用 Invoke-Command
cmdlet 提交到远程计算机。
此示例使用 Wait-Job
来确定在三台不同计算机上作为作业运行的 Get-Date
命令是否已完成。
第一个命令在三台远程计算机上创建一个 Windows PowerShell 会话 (PSSession),并将其存储在 $s
变量中。
第二个命令使用 Invoke-Command
在 $s
中的三个会话中的每一个中运行 Start-Job
。所有作业均命名为 Date1。
第三个命令使用 Invoke-Command
运行 Wait-Job
。此命令等待每台计算机上的 Date1
作业完成。它将 job 对象的结果集合(数组)存储在 $done
变量中。
第四条命令使用 $done
变量中作业对象数组的 Count 属性来确定已完成的作业数量。
示例 3:确定第一个作业何时完成
$s = New-PSSession -ComputerName (Get-Content -Path .\Machines.txt)
$c = 'Get-EventLog -LogName System | Where-Object {$PSItem.EntryType -eq "error" --and $PSItem.Source -eq "LSASRV"} | Out-File -FilePath Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
此示例使用 Wait-Job
的 Any 参数来确定当前会话中运行的众多作业中的第一个作业何时处于终止状态。它还演示了如何使用 Wait-Job
cmdlet 等待远程作业完成。
第一个命令在 Machines.txt 文件中列出的每台计算机上创建一个 PSSession,并将 PSSession 对象存储在 $s
变量中。该命令使用 Get-Content
cmdlet 来获取文件的内容。 Get-Content
命令包含在括号中,以确保它在 New-PSSession
命令之前运行。
第二个命令将 Get-EventLog
命令字符串(用引号引起来)存储在 $c
变量中。
第三条命令使用 Invoke-Command
cmdlet 在 $s
中的每个会话中运行 Start-Job
。 Start-Job
命令启动一个作业,该作业在 $c
变量中运行 Get-EventLog
命令。
该命令使用 Using 范围修饰符来指示 $c
变量是在本地计算机上定义的。 Using 范围修饰符是在 Windows PowerShell 3.0 中引入的。有关使用范围修饰符的详细信息,请参阅 about_Remote_Variables。
第四个命令使用 Invoke-Command
在会话中运行 Wait-Job
命令。它使用 Any 参数等待远程计算机上的第一个作业处于终止状态。
示例 4:设置远程计算机上作业的等待时间
PS> $s = New-PSSession -ComputerName Server01, Server02, Server03
PS> $jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
PS> $done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
PS>
此示例演示如何使用 Wait-Job
的 Timeout 参数来设置远程计算机上运行的作业的最长等待时间。
第一个命令在三台远程计算机(Server01、Server02 和 Server03)中的每台计算机上创建一个 PSSession,然后将 PSSession 对象存储在 $s
变量。
第二个命令使用 Invoke-Command
在 $s
中的每个 PSSession 对象中运行 Start-Job
。它将生成的作业对象存储在 $jobs
变量中。
第三个命令使用 Invoke-Command
在 $s
中的每个会话中运行 Wait-Job
。 Wait-Job
命令确定所有命令是否在 30 秒内完成。它使用值为 30 的 Timeout 参数来确定最大等待时间,然后将命令的结果存储在 $done
变量中。
在本例中,30 秒后,只有 Server02 计算机上的命令完成。 Wait-Job
结束等待,返回表示已完成作业的对象,并显示命令提示符。
$done
变量包含一个作业对象,该对象代表在 Server02 上运行的作业。
示例 5:等待多个作业之一完成
Wait-Job -id 1,2,5 -Any
此命令通过 ID 识别三个作业,并等待其中任何一个作业处于终止状态。第一个作业完成后继续执行。
示例 6:等待一段时间,然后允许作业在后台继续
Wait-Job -Name "DailyLog" -Timeout 120
此命令等待 120 秒(两分钟)以便 DailyLog 作业完成。如果作业在接下来的两分钟内未完成,则继续执行,并且作业继续在后台运行。
示例 7:按名称等待作业
Wait-Job -Name "Job3"
此命令使用作业名称来标识要等待的作业。
示例 8:等待本地计算机上使用 Start-Job 启动的作业
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1| Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
此示例演示如何使用 Wait-Job
cmdlet 来处理通过使用 Start-Job
在本地计算机上启动的作业。
这些命令启动一项作业,获取上周添加或更新的 Windows PowerShell 脚本文件。
第一个命令使用 Start-Job
在本地计算机上启动作业。该作业运行一个 Get-ChildItem
命令,该命令获取上周添加或更新的所有具有 .ps1 文件扩展名的文件。
第三个命令使用 Wait-Job
等待作业处于终止状态。作业完成后,该命令会显示作业对象,其中包含有关作业的信息。
示例 9:等待使用 Invoke-Command 在远程计算机上启动的作业
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
此示例演示如何将 Wait-Job
与通过使用 Invoke-Command
的 AsJob 参数在远程计算机上启动的作业结合使用。使用AsJob时,作业是在本地计算机上创建的,并且结果会自动返回到本地计算机,即使作业在远程计算机上运行也是如此。
此示例使用 Wait-Job
来确定在三台远程计算机上的会话中运行的 Get-Process
命令是否处于终止状态。
第一个命令在三台计算机上创建 PSSession 对象并将它们存储在 $s
变量中。
第二个命令使用 Invoke-Command
在 $s
中的三个会话中的每一个中运行 Get-Process
。该命令使用 AsJob 参数将该命令作为作业异步运行。该命令返回一个作业对象,就像使用 Start-Job 启动的作业一样,作业对象存储在 $j 变量中。
第三个命令使用管道运算符 (|
) 将 $j
中的作业对象发送到 Wait-Job
cmdlet。在这种情况下,不需要 Invoke-Command
命令,因为作业驻留在本地计算机上。
示例 10:等待具有 ID 的作业
Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True localhost,Server01.. get-service
4 Job4 Completed True localhost dir | where
Wait-Job -Id 1
此命令等待 ID 值为 1 的作业。
参数
-Any
指示此 cmdlet 返回作业对象并在任何作业完成时继续执行。默认情况下,Wait-Job
会等待所有指定作业完成后才显示提示。
SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Filter
指定条件的哈希表。此 cmdlet 等待满足哈希表中所有条件的作业。输入一个哈希表,其中键是作业属性,值是作业属性值。
此参数仅适用于自定义作业类型,例如工作流作业和计划作业。它不适用于标准作业,例如使用 Start-Job
cmdlet 创建的作业。有关此参数支持的信息,请参阅作业类型的帮助主题。
此参数是在 Windows PowerShell 3.0 中引入的。
类型 :哈希表
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-Force
指示此 cmdlet 继续等待处于挂起或断开连接状态的作业。默认情况下,当作业处于以下状态之一时,Wait-Job
返回或结束等待:
- 完全的
- 失败的
- 已停止
- 暂停
- 已断开连接
此参数是在 Windows PowerShell 3.0 中引入的。
类型 :SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Id
指定此 cmdlet 等待的作业 ID 数组。
ID 是一个整数,唯一标识当前会话中的作业。它比实例 ID 更容易记住和输入,但它仅在当前会话中是唯一的。您可以键入一个或多个 ID,以逗号分隔。要查找作业的 ID,请输入 Get-Job
。
Int32[]
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-InstanceId
指定此 cmdlet 等待的作业的实例 ID 数组。默认为所有作业。
实例 ID 是唯一标识计算机上作业的 GUID。要查找作业的实例 ID,请使用 Get-Job
。
指导[]
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-Job
指定此 cmdlet 等待的作业。输入包含作业对象的变量或获取作业对象的命令。您还可以使用管道运算符将作业对象发送到 Wait-Job
cmdlet。默认情况下,Wait-Job
等待当前会话中创建的所有作业。
工作[]
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-Name
指定此 cmdlet 等待的作业的友好名称。
类型 :String[]
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-State
指定作业状态。此 cmdlet 仅等待处于指定状态的作业。该参数可接受的值为:
- NotStarted
- 跑步
- 完全的
- 失败的
- 已停止
- 被阻止
- 暂停
- 已断开连接
- 暂停
- 停止
有关作业状态的更多信息,请参阅 JobState 枚举。
类型 :JobState
接受的值:未启动、正在运行、已完成、失败、已停止、已阻止、已挂起、已断开连接、挂起、正在停止、AtBreakpoint
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-Timeout
指定每个作业的最长等待时间(以秒为单位)。默认值 -1 表示 cmdlet 等待作业完成。计时从您提交 Wait-Job
命令开始,而不是从 Start-Job
命令开始。
如果超过此时间,即使作业仍在运行,等待也会结束并继续执行。该命令不显示任何错误消息。
类型 :整数32
别名:TimeoutSec
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
输入
System.Management.Automation.RemotingJob
您可以通过管道将作业对象传递给此 cmdlet。
输出
System.Management.Automation.PSRemotingJob
此 cmdlet 返回表示处于终止状态的作业的作业对象。如果由于超过 Timeout 参数的值而导致等待结束,则 Wait-Job
不会返回任何对象。
笔记
PowerShell 包含以下 Wait-Job
别名:
所有平台:
wjb
默认情况下,当作业处于以下状态之一时,Wait-Job
返回或结束等待:
- 完全的
- 失败的
- 已停止
- 暂停
- 已断开连接
要指示 Wait-Job
继续等待挂起和断开连接的作业,请使用 Force 参数。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag